refreshApplicationWithLocale('en'); Storage::fake('tmp-for-tests'); $this->image = UploadedFile::fake()->image('plan.png'); $this->user = User::factory()->create(['is_consultant' => true]); $this->plan = Plan::factory()->create(); } public function test_show_form_edit_plan() { $response = $this ->actingAs($this->user) ->get(route('plan.edit', $this->plan)); $response->assertSuccessful(); } public function test_publish_new_plan_success(): void { $this->actingAs($this->user); $updatedPlanBeforeToAddDatabase = Plan::factory()->make(); $testCase = Livewire::test(Edit::class, [ 'plan' => $this->plan, ]) ->set('name', $updatedPlanBeforeToAddDatabase->name) ->assertSet('name', $updatedPlanBeforeToAddDatabase->name) ->set('image', $this->image) ->set('duration', $updatedPlanBeforeToAddDatabase->duration) ->assertSet('duration', $updatedPlanBeforeToAddDatabase->duration) ->set('state', $updatedPlanBeforeToAddDatabase->state) ->assertSet('state', $updatedPlanBeforeToAddDatabase->state) ->set('type', $updatedPlanBeforeToAddDatabase->type) ->assertSet('type', $updatedPlanBeforeToAddDatabase->type) ->set('details', $updatedPlanBeforeToAddDatabase->details) ->assertSet('details', $updatedPlanBeforeToAddDatabase->details) ->set('packets_count', $updatedPlanBeforeToAddDatabase->packets_count) ->assertSet('packets_count', $updatedPlanBeforeToAddDatabase->packets_count) ->set('packet1_options', $updatedPlanBeforeToAddDatabase->packet1_options) ->assertSet('packet1_options', $updatedPlanBeforeToAddDatabase->packet1_options) ->set('packet2_options', $updatedPlanBeforeToAddDatabase->packet2_options) ->assertSet('packet2_options', $updatedPlanBeforeToAddDatabase->packet2_options) ->set('packet3_options', $updatedPlanBeforeToAddDatabase->packet3_options) ->assertSet('packet3_options', $updatedPlanBeforeToAddDatabase->packet3_options) ->call('publish') ->assertSuccessful() ->assertHasNoErrors(['name', 'image', 'duration', 'details', 'packets_count', 'packet1_options', 'packet2_options', 'packet3_options']); $updatedPlanAfterToAddDatabase = Plan::orderByDesc('id')->first(); $newPlanUrl = route('plan.show', $updatedPlanAfterToAddDatabase, false); Storage::disk('tmp-for-tests')->assertExists($updatedPlanAfterToAddDatabase->image); // check data after update recipe self::assertEquals($updatedPlanBeforeToAddDatabase->name, $updatedPlanAfterToAddDatabase->name); self::assertEquals($updatedPlanBeforeToAddDatabase->duration, $updatedPlanAfterToAddDatabase->duration); self::assertEquals($updatedPlanBeforeToAddDatabase->state, $updatedPlanAfterToAddDatabase->state); self::assertEquals($updatedPlanBeforeToAddDatabase->type, $updatedPlanAfterToAddDatabase->type); self::assertEquals($updatedPlanBeforeToAddDatabase->details, $updatedPlanAfterToAddDatabase->details); self::assertEquals($updatedPlanBeforeToAddDatabase->packets_count, $updatedPlanAfterToAddDatabase->packets_count); self::assertEquals($updatedPlanBeforeToAddDatabase->packet1_options, $updatedPlanAfterToAddDatabase->packet1_options); self::assertEquals($updatedPlanBeforeToAddDatabase->packet2_options, $updatedPlanAfterToAddDatabase->packet2_options); self::assertEquals($updatedPlanBeforeToAddDatabase->packet3_options, $updatedPlanAfterToAddDatabase->packet3_options); $testCase->assertRedirect($newPlanUrl); } public function test_to_draft_new_plan_success(): void { $this->actingAs($this->user); $updatedPlanBeforeToAddDatabase = Plan::factory()->make(); $testCase = Livewire::test(Edit::class, [ 'plan' => $this->plan, ]) ->set('name', $updatedPlanBeforeToAddDatabase->name) ->assertSet('name', $updatedPlanBeforeToAddDatabase->name) ->set('image', $this->image) ->set('duration', $updatedPlanBeforeToAddDatabase->duration) ->assertSet('duration', $updatedPlanBeforeToAddDatabase->duration) ->set('state', $updatedPlanBeforeToAddDatabase->state) ->assertSet('state', $updatedPlanBeforeToAddDatabase->state) ->set('type', $updatedPlanBeforeToAddDatabase->type) ->assertSet('type', $updatedPlanBeforeToAddDatabase->type) ->set('details', $updatedPlanBeforeToAddDatabase->details) ->assertSet('details', $updatedPlanBeforeToAddDatabase->details) ->set('packets_count', $updatedPlanBeforeToAddDatabase->packets_count) ->assertSet('packets_count', $updatedPlanBeforeToAddDatabase->packets_count) ->set('packet1_options', $updatedPlanBeforeToAddDatabase->packet1_options) ->assertSet('packet1_options', $updatedPlanBeforeToAddDatabase->packet1_options) ->set('packet2_options', $updatedPlanBeforeToAddDatabase->packet2_options) ->assertSet('packet2_options', $updatedPlanBeforeToAddDatabase->packet2_options) ->set('packet3_options', $updatedPlanBeforeToAddDatabase->packet3_options) ->assertSet('packet3_options', $updatedPlanBeforeToAddDatabase->packet3_options) ->call('addToDrafts') ->assertSuccessful() ->assertHasNoErrors(['name', 'image', 'duration', 'details', 'packets_count', 'packet1_options', 'packet2_options', 'packet3_options']); $updatedPlanAfterToAddDatabase = Plan::orderByDesc('id')->first(); $newPlanUrl = route('plan.show', $updatedPlanAfterToAddDatabase, false); Storage::disk('tmp-for-tests')->assertExists($updatedPlanAfterToAddDatabase->image); // check data after update recipe self::assertEquals($updatedPlanBeforeToAddDatabase->name, $updatedPlanAfterToAddDatabase->name); self::assertEquals($updatedPlanBeforeToAddDatabase->duration, $updatedPlanAfterToAddDatabase->duration); self::assertEquals('draft', $updatedPlanAfterToAddDatabase->state); self::assertEquals($updatedPlanBeforeToAddDatabase->type, $updatedPlanAfterToAddDatabase->type); self::assertEquals($updatedPlanBeforeToAddDatabase->details, $updatedPlanAfterToAddDatabase->details); self::assertEquals($updatedPlanBeforeToAddDatabase->packets_count, $updatedPlanAfterToAddDatabase->packets_count); self::assertEquals($updatedPlanBeforeToAddDatabase->packet1_options, $updatedPlanAfterToAddDatabase->packet1_options); self::assertEquals($updatedPlanBeforeToAddDatabase->packet2_options, $updatedPlanAfterToAddDatabase->packet2_options); self::assertEquals($updatedPlanBeforeToAddDatabase->packet3_options, $updatedPlanAfterToAddDatabase->packet3_options); $testCase->assertRedirect($newPlanUrl); } public function test_to_preview_new_plan_success(): void { $this->actingAs($this->user); $updatedPlanBeforeToAddDatabase = Plan::factory()->make(); $testCase = Livewire::test(Edit::class, [ 'plan' => $this->plan, ]) ->set('name', $updatedPlanBeforeToAddDatabase->name) ->assertSet('name', $updatedPlanBeforeToAddDatabase->name) ->set('image', $this->image) ->set('duration', $updatedPlanBeforeToAddDatabase->duration) ->assertSet('duration', $updatedPlanBeforeToAddDatabase->duration) ->set('state', $updatedPlanBeforeToAddDatabase->state) ->assertSet('state', $updatedPlanBeforeToAddDatabase->state) ->set('type', $updatedPlanBeforeToAddDatabase->type) ->assertSet('type', $updatedPlanBeforeToAddDatabase->type) ->set('details', $updatedPlanBeforeToAddDatabase->details) ->assertSet('details', $updatedPlanBeforeToAddDatabase->details) ->set('packets_count', $updatedPlanBeforeToAddDatabase->packets_count) ->assertSet('packets_count', $updatedPlanBeforeToAddDatabase->packets_count) ->set('packet1_options', $updatedPlanBeforeToAddDatabase->packet1_options) ->assertSet('packet1_options', $updatedPlanBeforeToAddDatabase->packet1_options) ->set('packet2_options', $updatedPlanBeforeToAddDatabase->packet2_options) ->assertSet('packet2_options', $updatedPlanBeforeToAddDatabase->packet2_options) ->set('packet3_options', $updatedPlanBeforeToAddDatabase->packet3_options) ->assertSet('packet3_options', $updatedPlanBeforeToAddDatabase->packet3_options) ->call('showPreview') ->assertSuccessful() ->assertHasNoErrors(['name', 'image', 'duration', 'details', 'packets_count', 'packet1_options', 'packet2_options', 'packet3_options']); $updatedPlanAfterToAddDatabase = Plan::orderByDesc('id')->first(); $newPlanUrl = route('plan.show', $updatedPlanAfterToAddDatabase, false); Storage::disk('tmp-for-tests')->assertExists($updatedPlanAfterToAddDatabase->image); // check data after update recipe self::assertEquals($updatedPlanBeforeToAddDatabase->name, $updatedPlanAfterToAddDatabase->name); self::assertEquals($updatedPlanBeforeToAddDatabase->duration, $updatedPlanAfterToAddDatabase->duration); self::assertEquals('unactive', $updatedPlanAfterToAddDatabase->state); self::assertEquals($updatedPlanBeforeToAddDatabase->type, $updatedPlanAfterToAddDatabase->type); self::assertEquals($updatedPlanBeforeToAddDatabase->details, $updatedPlanAfterToAddDatabase->details); self::assertEquals($updatedPlanBeforeToAddDatabase->packets_count, $updatedPlanAfterToAddDatabase->packets_count); self::assertEquals($updatedPlanBeforeToAddDatabase->packet1_options, $updatedPlanAfterToAddDatabase->packet1_options); self::assertEquals($updatedPlanBeforeToAddDatabase->packet2_options, $updatedPlanAfterToAddDatabase->packet2_options); self::assertEquals($updatedPlanBeforeToAddDatabase->packet3_options, $updatedPlanAfterToAddDatabase->packet3_options); $testCase->assertRedirect($newPlanUrl); } }