first(); if (!$user) { $user = new User(); $user->name = 'test_create_segment_logic_execution'; $user->email = $email; $user->password = bcrypt('password'); $user->save(); } $this->actingAs($user); // Mock CanCreateSegment to pass $canCreateSegment = Mockery::mock(CanCreateSegment::class); $canCreateSegment->shouldReceive('passes')->once()->andReturn(true); // Mock CreatesSegment to return a Segment model $segment = new Segment(); $segment->id = 1; $segment->name = 'test_create_segment_logic_execution'; $segment->type = SegmentConstants::STANDARD_SEGMENT; $createsSegment = Mockery::mock(CreatesSegment::class); $createsSegment->shouldReceive('execute') ->once() ->with(Mockery::type(SegmentObject::class)) ->andReturn($segment); $logic = new CreateSegmentLogic($canCreateSegment, $createsSegment); $request = Request::create('/api/segments', 'POST', [ 'name' => 'test_create_segment_logic_execution', 'type' => SegmentConstants::STANDARD_SEGMENT ]); $request->headers->set('captcha-token', 'fake-token'); // A C T $response = $logic->execute($request); // A S S E R T $this->assertEquals(200, $response->getStatusCode()); $data = $response->getData(true); $this->assertEquals('Created Segment Successful', $data['title']); $this->assertEquals('test_create_segment_logic_execution', $data['payload']['data']['name']); } protected function tearDown(): void { Mockery::close(); parent::tearDown(); } }