refreshApplicationWithLocale('en'); Storage::fake('tmp-for-tests'); $this->image = UploadedFile::fake()->image('diet.png'); $this->user = User::factory()->create(['is_consultant' => true]); $this->diet = Diet::factory()->create(); } public function test_show_form_edit_diet(): void { $response = $this ->actingAs($this->user) ->get(route('diet.edit', $this->diet)); $response->assertSuccessful(); } public function test_publish_new_diet_success(): void { $this->actingAs($this->user); $updatedDietBeforeToAddDatabase = Diet::factory()->make(); $testCase = Livewire::test(Edit::class, [ 'diet' => $this->diet, ]) ->set('name', $updatedDietBeforeToAddDatabase->name) ->assertSet('name', $updatedDietBeforeToAddDatabase->name) ->set('image', $this->image) ->set('duration', $updatedDietBeforeToAddDatabase->duration) ->assertSet('duration', $updatedDietBeforeToAddDatabase->duration) ->set('state', $updatedDietBeforeToAddDatabase->state) ->assertSet('state', $updatedDietBeforeToAddDatabase->state) ->set('type', $updatedDietBeforeToAddDatabase->type) ->assertSet('type', $updatedDietBeforeToAddDatabase->type) ->set('details', $updatedDietBeforeToAddDatabase->details) ->assertSet('details', $updatedDietBeforeToAddDatabase->details) ->set('daily_schedule', $this->diet->daily_schedule) ->assertSet('daily_schedule', $this->diet->daily_schedule) ->call('publish') ->assertSuccessful() ->assertHasNoErrors(['name', 'image', 'duration', 'state', 'details', 'daily_schedule', 'type']); $updatedDietAfterToAddDatabase = Diet::orderByDesc('id')->first(); $newDietUrl = route('diet.show', $updatedDietAfterToAddDatabase); Storage::disk('tmp-for-tests')->assertExists($updatedDietAfterToAddDatabase->image); // check data after update recipe self::assertEquals($updatedDietBeforeToAddDatabase->name, $updatedDietAfterToAddDatabase->name); self::assertEquals($updatedDietBeforeToAddDatabase->duration, $updatedDietAfterToAddDatabase->duration); self::assertEquals($updatedDietBeforeToAddDatabase->state, $updatedDietAfterToAddDatabase->state); self::assertEquals($updatedDietBeforeToAddDatabase->type, $updatedDietAfterToAddDatabase->type); self::assertEquals($updatedDietBeforeToAddDatabase->details, $updatedDietAfterToAddDatabase->details); // self::assertEquals($updatedDietBeforeToAddDatabase->daily_schedule, $updatedDietAfterToAddDatabase->daily_schedule); $testCase->assertRedirect($newDietUrl); } public function test_to_draft_new_diet_success(): void { $this->actingAs($this->user); $updatedDietBeforeToAddDatabase = Diet::factory()->make(); $testCase = Livewire::test(Edit::class, [ 'diet' => $this->diet, ]) ->set('name', $updatedDietBeforeToAddDatabase->name) ->assertSet('name', $updatedDietBeforeToAddDatabase->name) ->set('image', $this->image) ->set('duration', $updatedDietBeforeToAddDatabase->duration) ->assertSet('duration', $updatedDietBeforeToAddDatabase->duration) ->set('state', $updatedDietBeforeToAddDatabase->state) ->assertSet('state', $updatedDietBeforeToAddDatabase->state) ->set('type', $updatedDietBeforeToAddDatabase->type) ->assertSet('type', $updatedDietBeforeToAddDatabase->type) ->set('details', $updatedDietBeforeToAddDatabase->details) ->assertSet('details', $updatedDietBeforeToAddDatabase->details) ->set('daily_schedule', $this->diet->daily_schedule) ->assertSet('daily_schedule', $this->diet->daily_schedule) ->call('addToDrafts') ->assertSuccessful() ->assertHasNoErrors(['name', 'image', 'duration', 'state', 'details', 'days', 'type']); $updatedDietAfterToAddDatabase = Diet::orderByDesc('id')->first(); $newDietUrl = route('diet.show', $updatedDietAfterToAddDatabase); Storage::disk('tmp-for-tests')->assertExists($updatedDietAfterToAddDatabase->image); // check data after update recipe self::assertEquals($updatedDietBeforeToAddDatabase->name, $updatedDietAfterToAddDatabase->name); self::assertEquals($updatedDietBeforeToAddDatabase->duration, $updatedDietAfterToAddDatabase->duration); self::assertEquals('draft', $updatedDietAfterToAddDatabase->state); self::assertEquals($updatedDietBeforeToAddDatabase->type, $updatedDietAfterToAddDatabase->type); self::assertEquals($updatedDietBeforeToAddDatabase->details, $updatedDietAfterToAddDatabase->details); // self::assertEquals($updatedDietBeforeToAddDatabase->daily_schedule, $updatedDietAfterToAddDatabase->daily_schedule); $testCase->assertRedirect($newDietUrl); } public function test_to_preview_new_diet_success(): void { $this->actingAs($this->user); $updatedDietBeforeToAddDatabase = Diet::factory()->make(); $testCase = Livewire::test(Edit::class, [ 'diet' => $this->diet, ]) ->set('name', $updatedDietBeforeToAddDatabase->name) ->assertSet('name', $updatedDietBeforeToAddDatabase->name) ->set('image', $this->image) ->set('duration', $updatedDietBeforeToAddDatabase->duration) ->assertSet('duration', $updatedDietBeforeToAddDatabase->duration) ->set('state', $updatedDietBeforeToAddDatabase->state) ->assertSet('state', $updatedDietBeforeToAddDatabase->state) ->set('type', $updatedDietBeforeToAddDatabase->type) ->assertSet('type', $updatedDietBeforeToAddDatabase->type) ->set('details', $updatedDietBeforeToAddDatabase->details) ->assertSet('details', $updatedDietBeforeToAddDatabase->details) ->set('daily_schedule', $this->diet->daily_schedule) ->assertSet('daily_schedule', $this->diet->daily_schedule) ->call('showPreview') ->assertSuccessful() ->assertHasNoErrors(['name', 'image', 'duration', 'state', 'details', 'days', 'type']); $updatedDietAfterToAddDatabase = Diet::orderByDesc('id')->first(); $newDietUrl = route('diet.show', $updatedDietAfterToAddDatabase); Storage::disk('tmp-for-tests')->assertExists($updatedDietAfterToAddDatabase->image); // check data after update recipe self::assertEquals($updatedDietBeforeToAddDatabase->name, $updatedDietAfterToAddDatabase->name); self::assertEquals($updatedDietBeforeToAddDatabase->duration, $updatedDietAfterToAddDatabase->duration); self::assertEquals('draft', $updatedDietAfterToAddDatabase->state); self::assertEquals($updatedDietBeforeToAddDatabase->type, $updatedDietAfterToAddDatabase->type); self::assertEquals($updatedDietBeforeToAddDatabase->details, $updatedDietAfterToAddDatabase->details); // self::assertEquals($updatedDietBeforeToAddDatabase->daily_schedule, $updatedDietAfterToAddDatabase->daily_schedule); $testCase->assertRedirect($newDietUrl); } public function testNothingChange(): void { $this->actingAs($this->user); $dietUpdate = Livewire::test(Edit::class, [ 'diet' => $this->diet, ]) ->call('publish') ->assertSuccessful() ->assertHasNoErrors(['name', 'image', 'duration', 'state', 'details', 'days', 'type']); $newDietUrl = route('diet.show', $this->diet, false); Storage::disk('tmp-for-tests')->assertMissing($dietUpdate->image); // check data after update recipe self::assertEquals($this->diet->name, $dietUpdate->name); self::assertEquals($this->diet->duration, $dietUpdate->duration); self::assertEquals($this->diet->state, $dietUpdate->state); self::assertEquals($this->diet->type, $dietUpdate->type); self::assertEquals($this->diet->details, $dietUpdate->details); self::assertEquals($this->diet->daily_schedule, $dietUpdate->days); $dietUpdate->assertRedirect($newDietUrl); } }