Add tests for courses

This commit is contained in:
philipp lang 2022-02-23 00:00:40 +01:00
parent 4e9a8a24b8
commit 220187bef4
3 changed files with 34 additions and 11 deletions

View File

@ -113,7 +113,11 @@ class FakeBackend {
}); });
foreach ($data as $member) { foreach ($data as $member) {
app(CourseFake::class)->forMember($member['id'], $member['courses'] ?? []); $courseFake = app(CourseFake::class)
->fetches($member['id'], collect(data_get($member, 'courses', []))->pluck('id')->toArray());
foreach (data_get($member, 'courses', []) as $course) {
$courseFake->fetchesSingle($member['id'], $course);
}
} }
return $this; return $this;

View File

@ -31,7 +31,7 @@ class CourseFake extends Fake {
return $this; return $this;
} }
public function fetchesWithHtml(int $memberId): self public function failsFetchingWithHtml(int $memberId): self
{ {
Http::fake(function($request) use ($memberId) { Http::fake(function($request) use ($memberId) {
if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/flist") { if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/flist") {
@ -70,7 +70,7 @@ class CourseFake extends Fake {
return $this; return $this;
} }
public function fetchesSingleWithHtml(int $memberId, int $courseId): self public function failsFetchingSingleWithHtml(int $memberId, int $courseId): self
{ {
Http::fake(function($request) use ($memberId, $courseId) { Http::fake(function($request) use ($memberId, $courseId) {
if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}") { if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}") {
@ -103,7 +103,7 @@ class CourseFake extends Fake {
}); });
} }
public function deleteSuccessful(int $memberId, int $courseId): void public function deletesSuccessfully(int $memberId, int $courseId): void
{ {
Http::fake(function($request) use ($memberId, $courseId) { Http::fake(function($request) use ($memberId, $courseId) {
if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}" && $request->method() === 'DELETE') { if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}" && $request->method() === 'DELETE') {
@ -116,7 +116,7 @@ class CourseFake extends Fake {
}); });
} }
public function deleteFailed(int $memberId, int $courseId): void public function failsDeleting(int $memberId, int $courseId): void
{ {
Http::fake(function($request) use ($memberId, $courseId) { Http::fake(function($request) use ($memberId, $courseId) {
if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}" && $request->method() === 'DELETE') { if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}" && $request->method() === 'DELETE') {
@ -129,7 +129,7 @@ class CourseFake extends Fake {
}); });
} }
public function createFails(int $memberId): void public function failsCreating(int $memberId): void
{ {
Http::fake(function($request) use ($memberId) { Http::fake(function($request) use ($memberId) {
if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}") { if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}") {
@ -138,7 +138,7 @@ class CourseFake extends Fake {
}); });
} }
public function doesntUpdateWithError(int $memberId, int $courseId, string $error = "Error"): void public function failsUpdating(int $memberId, int $courseId, string $error = "Error"): void
{ {
Http::fake(function($request) use ($memberId, $courseId, $error) { Http::fake(function($request) use ($memberId, $courseId, $error) {
if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}" && $request->method() === 'PUT') { if ($request->url() === "https://nami.dpsg.de/ica/rest/nami/mitglied-ausbildung/filtered-for-navigation/mitglied/mitglied/{$memberId}/{$courseId}" && $request->method() === 'PUT') {

View File

@ -64,7 +64,7 @@ class CourseTest extends TestCase
Auth::success(12345, 'secret'); Auth::success(12345, 'secret');
app(CourseFake::class) app(CourseFake::class)
->fetches(11111, [788, 789]) ->fetches(11111, [788, 789])
->fetchesSingleWithHtml(11111, 788) ->failsFetchingSingleWithHtml(11111, 788)
->fetchesSingle(11111, ['id' => 789]); ->fetchesSingle(11111, ['id' => 789]);
$courses = Nami::login(12345, 'secret')->coursesFor(11111); $courses = Nami::login(12345, 'secret')->coursesFor(11111);
@ -75,7 +75,7 @@ class CourseTest extends TestCase
public function test_return_empty_when_course_index_returns_html(): void public function test_return_empty_when_course_index_returns_html(): void
{ {
Auth::success(12345, 'secret'); Auth::success(12345, 'secret');
app(CourseFake::class)->fetchesWithHtml(11111); app(CourseFake::class)->failsFetchingWithHtml(11111);
$courses = Nami::login(12345, 'secret')->coursesFor(11111); $courses = Nami::login(12345, 'secret')->coursesFor(11111);
@ -145,7 +145,7 @@ class CourseTest extends TestCase
{ {
$this->expectException(NamiException::class); $this->expectException(NamiException::class);
Auth::success(12345, 'secret'); Auth::success(12345, 'secret');
app(CourseFake::class)->doesntUpdateWithError(123, 999); app(CourseFake::class)->failsUpdating(123, 999);
Nami::login(12345, 'secret')->updateCourse(123, 999, [ Nami::login(12345, 'secret')->updateCourse(123, 999, [
'event_name' => '::event::', 'event_name' => '::event::',
@ -180,7 +180,7 @@ class CourseTest extends TestCase
{ {
$this->expectException(NamiException::class); $this->expectException(NamiException::class);
Auth::success(12345, 'secret'); Auth::success(12345, 'secret');
app(CourseFake::class)->createFails(123); app(CourseFake::class)->failsCreating(123);
Nami::login(12345, 'secret'); Nami::login(12345, 'secret');
Nami::createCourse(123, [ Nami::createCourse(123, [
@ -191,4 +191,23 @@ class CourseTest extends TestCase
]); ]);
} }
public function test_delete_a_course(): void
{
Auth::success(12345, 'secret');
app(CourseFake::class)->deletesSuccessfully(123, 999);
Nami::login(12345, 'secret')->deleteCourse(123, 999);
app(CourseFake::class)->assertDeleted(123, 999);
}
public function test_shrow_exception_when_deleting_failed(): void
{
$this->expectException(NamiException::class);
Auth::success(12345, 'secret');
app(CourseFake::class)->failsDeleting(123, 999);
Nami::login(12345, 'secret')->deleteCourse(123, 999);
}
} }