106 lines
3.5 KiB
PHP
106 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Member;
|
|
|
|
use App\Actions\PullCoursesAction;
|
|
use App\Activity;
|
|
use App\Country;
|
|
use App\Course\Models\Course;
|
|
use App\Course\Models\CourseMember;
|
|
use App\Fee;
|
|
use App\Gender;
|
|
use App\Group;
|
|
use App\Member\Member;
|
|
use App\Nationality;
|
|
use App\Payment\Subscription;
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
use Illuminate\Support\Facades\Http;
|
|
use Tests\TestCase;
|
|
use Zoomyboy\LaravelNami\Data\Course as NamiCourse;
|
|
use Zoomyboy\LaravelNami\Fakes\CourseFake;
|
|
|
|
class PullCoursesActionTest extends TestCase
|
|
{
|
|
use DatabaseTransactions;
|
|
|
|
public function setUp(): void
|
|
{
|
|
parent::setUp();
|
|
|
|
Subscription::factory()->name('test')->for(Fee::factory()->inNami(300))->create();
|
|
Gender::factory()->inNami(303)->create();
|
|
Country::factory()->inNami(302)->create();
|
|
Nationality::factory()->inNami(1054)->create();
|
|
$this->loginNami();
|
|
}
|
|
|
|
public function testItDoesntSyncCoursesOfNonNamiMembers(): void
|
|
{
|
|
$member = Member::factory()->defaults()->for(Group::factory()->inNami(1000)->name('SG Wald'))->create();
|
|
|
|
app(PullCoursesAction::class)->handle($member);
|
|
|
|
Http::assertSentCount(0);
|
|
}
|
|
|
|
public function testFetchCourses(): void
|
|
{
|
|
$activity = Activity::factory()->inNami(1003)->name('Tätigkeit')->create();
|
|
$member = Member::factory()->defaults()->for(Group::factory()->inNami(1000)->name('SG Wald'))->inNami(1001)->create();
|
|
$course = Course::factory()->name('BS')->inNami(11)->create();
|
|
app(CourseFake::class)->fetches(1001, [50])->shows(1001, NamiCourse::factory()->toCourse([
|
|
'courseId' => 11,
|
|
'organizer' => 'TTT',
|
|
'eventName' => 'Schulung',
|
|
'completedAt' => '2021-06-29 00:00:00',
|
|
'id' => 50,
|
|
]));
|
|
|
|
app(PullCoursesAction::class)->handle($member);
|
|
|
|
$this->assertDatabaseHas('course_members', [
|
|
'nami_id' => 50,
|
|
'member_id' => $member->id,
|
|
'organizer' => 'TTT',
|
|
'completed_at' => '2021-06-29',
|
|
'event_name' => 'Schulung',
|
|
'course_id' => $course->id,
|
|
]);
|
|
}
|
|
|
|
public function testDeleteExistingCourses(): void
|
|
{
|
|
$activity = Activity::factory()->inNami(1003)->name('Tätigkeit')->create();
|
|
$member = Member::factory()
|
|
->defaults()
|
|
->for(Group::factory()->inNami(1000)->name('SG Wald'))
|
|
->has(CourseMember::factory()->for(Course::factory()->inNami(50))->inNami(55), 'courses')
|
|
->inNami(1001)
|
|
->create();
|
|
app(CourseFake::class)->fetches(1001, []);
|
|
|
|
app(PullCoursesAction::class)->handle($member);
|
|
|
|
$this->assertDatabaseCount('course_members', 0);
|
|
}
|
|
|
|
public function testCourseIsUpdated(): void
|
|
{
|
|
$activity = Activity::factory()->inNami(1003)->name('Tätigkeit')->create();
|
|
$member = Member::factory()
|
|
->defaults()
|
|
->for(Group::factory()->inNami(1000)->name('SG Wald'))
|
|
->has(CourseMember::factory()->for(Course::factory()->inNami(50))->inNami(55), 'courses')
|
|
->inNami(1001)
|
|
->create();
|
|
app(CourseFake::class)->fetches(1001, [55])->shows(1001, NamiCourse::factory()->toCourse(['id' => 55, 'courseId' => 50, 'organizer' => 'ZZU']));
|
|
|
|
app(PullCoursesAction::class)->handle($member);
|
|
|
|
$this->assertDatabaseCount('course_members', 1);
|
|
$this->assertDatabaseHas('course_members', [
|
|
'organizer' => 'ZZU',
|
|
]);
|
|
}
|
|
}
|