refreshApplicationWithLocale('en'); Storage::fake('recipes'); $this->image = UploadedFile::fake()->image('recipe.jpg'); $this->user = User::factory()->create(['is_consultant' => true]); $this->recipe = Recipe::factory()->make(); } public function test_show_page_create_recipe(): void { $response = $this ->actingAs($this->user) ->get(route('recipe.create')); $response->assertSuccessful(); } public function test_publish_new_recipe_success(): void { $this->actingAs($this->user); self::assertEquals($this->recipe->count(), $count = Recipe::count()); Livewire::test(Create::class) ->set('title', $this->recipe->title) ->assertSet('title', $this->recipe->title) ->set('image', $this->image) ->set('state', $this->recipe->state) ->assertSet('state', $this->recipe->state) ->set('cooking_time', $this->recipe->cooking_time) ->assertSet('cooking_time', $this->recipe->cooking_time) ->set('ingredients', $this->recipe->ingredients) ->assertSet('ingredients', $this->recipe->ingredients) ->set('type', $this->recipe->type) ->assertSet('type', $this->recipe->type) ->set('description', $this->recipe->description) ->assertSet('description', $this->recipe->description) ->set('video_url', $this->recipe->video_url) ->assertSet('video_url', $this->recipe->video_url) ->call('publish') ->assertSuccessful() ->assertHasNoErrors(['title', 'image', 'state', 'cooking_time', 'ingredients', 'type', 'description', 'steps', 'video_url']); Storage::disk('public')->assertExists($this->recipe->image); self::assertEquals($count + 1, Recipe::count()); } public function test_to_draft_new_recipe_success(): void { $this->actingAs($this->user); self::assertEquals($this->recipe->count(), $count = Recipe::count()); Livewire::test(Create::class) ->set('title', $this->recipe->title) ->assertSet('title', $this->recipe->title) ->set('image', $this->image) ->set('state', $this->recipe->state) ->assertSet('state', $this->recipe->state) ->set('cooking_time', $this->recipe->cooking_time) ->assertSet('cooking_time', $this->recipe->cooking_time) ->set('ingredients', $this->recipe->ingredients) ->assertSet('ingredients', $this->recipe->ingredients) ->set('type', $this->recipe->type) ->assertSet('type', $this->recipe->type) ->set('description', $this->recipe->description) ->assertSet('description', $this->recipe->description) ->set('video_url', $this->recipe->video_url) ->assertSet('video_url', $this->recipe->video_url) ->call('draft') ->assertSuccessful() ->assertHasNoErrors(['title', 'image', 'state', 'cooking_time', 'ingredients', 'type', 'description', 'steps', 'video_url']); Storage::disk('public')->assertExists($this->recipe->image); self::assertEquals($count + 1, Recipe::count()); self::assertEquals(Recipe::find($count + 1)->state, 'archived'); } public function test_to_preview_new_recipe_success(): void { $this->actingAs($this->user); self::assertEquals($this->recipe->count(), $count = Recipe::count()); Livewire::test(Create::class) ->set('title', $this->recipe->title) ->assertSet('title', $this->recipe->title) ->set('image', $this->image) ->set('state', $this->recipe->state) ->assertSet('state', $this->recipe->state) ->set('cooking_time', $this->recipe->cooking_time) ->assertSet('cooking_time', $this->recipe->cooking_time) ->set('ingredients', $this->recipe->ingredients) ->assertSet('ingredients', $this->recipe->ingredients) ->set('type', $this->recipe->type) ->assertSet('type', $this->recipe->type) ->set('description', $this->recipe->description) ->assertSet('description', $this->recipe->description) ->set('video_url', $this->recipe->video_url) ->assertSet('video_url', $this->recipe->video_url) ->call('preview') ->assertSuccessful() ->assertHasNoErrors(['title', 'image', 'state', 'cooking_time', 'ingredients', 'type', 'description', 'steps', 'video_url']); Storage::disk('public')->assertExists($this->recipe->image); self::assertEquals($count + 1, Recipe::count()); self::assertEquals(Recipe::find($count + 1)->state, 'archived'); } public function test_set_empty_data(): void { $this->actingAs($this->user); self::assertEquals($this->recipe->count(), $count = Recipe::count()); Livewire::test(Create::class) ->set('title', $this->recipe->title) ->assertSet('title', $this->recipe->title) ->set('image', null) ->set('state', null) ->set('cooking_time', null) ->set('type', null) ->set('description', null) ->call('publish') ->assertHasErrors(['image', 'state', 'type', 'description']); // doesnt to add to database self::assertEquals($count, Recipe::count()); } public function test_incorrect_video_url(): void { $this->actingAs($this->user); self::assertEquals($this->recipe->count(), $count = Recipe::count()); Livewire::test(Create::class) ->set('title', $this->recipe->title) ->assertSet('title', $this->recipe->title) ->set('image', $this->image) ->set('state', $this->recipe->state) ->assertSet('state', $this->recipe->state) ->set('cooking_time', $this->recipe->cooking_time) ->assertSet('cooking_time', $this->recipe->cooking_time) ->set('ingredients', $this->recipe->ingredients) ->assertSet('ingredients', $this->recipe->ingredients) ->set('type', $this->recipe->type) ->assertSet('type', $this->recipe->type) ->set('description', $this->recipe->description) ->assertSet('description', $this->recipe->description) ->set('video_url', 'video_url') ->call('publish') ->assertSuccessful() ->assertHasErrors(['video_url']); // doesnt to add to database self::assertEquals($count, Recipe::count()); } }