first(); if (!$user) { $user = new User(); $user->name = 'test_delete_segment_logic_execution'; $user->email = $email; $user->password = bcrypt('password'); $user->save(); } $this->actingAs($user); $segment = new Segment(); $segment->id = 1; $segment->name = 'test_delete_segment_logic_execution'; // Mock FetchesSegment $fetchesSegment = Mockery::mock(FetchesSegment::class); $fetchesSegment->shouldReceive('execute') ->once() ->with(['id' => 1]) ->andReturn($segment); // Mock CanDeleteSegment $canDeleteSegment = Mockery::mock(CanDeleteSegment::class); $canDeleteSegment->shouldReceive('passes')->once()->andReturn(true); // Mock DeletesSegment $deletesSegment = Mockery::mock(DeletesSegment::class); $deletesSegment->shouldReceive('execute') ->once() ->with($segment) ->andReturn([]); $logic = new DeleteSegmentLogic($canDeleteSegment, $deletesSegment, $fetchesSegment); $request = Request::create('/api/segments/1', 'DELETE'); $request->headers->set('captcha-token', 'fake-token'); $request->setRouteResolver(function () { $route = Mockery::mock(\Illuminate\Routing\Route::class); $route->shouldReceive('parameter')->with('id', null)->andReturn(1); return $route; }); // A C T $response = $logic->execute($request); // A S S E R T $this->assertEquals(200, $response->getStatusCode()); $data = $response->getData(true); $this->assertEquals('Delete Segment Successful', $data['title']); } protected function tearDown(): void { Mockery::close(); parent::tearDown(); } }