. */ declare(strict_types=1); namespace Tests\Api\V1\Controllers\Chart; use FireflyIII\Repositories\Category\CategoryRepositoryInterface; use FireflyIII\Repositories\Category\NoCategoryRepositoryInterface; use FireflyIII\Repositories\Category\OperationsRepositoryInterface; use Laravel\Passport\Passport; use Log; use Tests\Support\TestDataTrait; use Tests\TestCase; /** * Class CategoryControllerTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class CategoryControllerTest extends TestCase { use TestDataTrait; /** * */ public function setUp(): void { parent::setUp(); Passport::actingAs($this->user()); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\Api\V1\Controllers\Chart\CategoryController */ public function testOverview(): void { $repository = $this->mock(CategoryRepositoryInterface::class); $noCatRepos =$this->mock(NoCategoryRepositoryInterface::class); $opsRepos = $this->mock(OperationsRepositoryInterface::class); // mock calls: $repository->shouldReceive('setUser')->atLeast()->once(); $noCatRepos->shouldReceive('setUser')->atLeast()->once(); $opsRepos->shouldReceive('setUser')->atLeast()->once(); $opsRepos->shouldReceive('listExpenses')->atLeast()->once()->andReturn($this->categoryListExpenses()); $opsRepos->shouldReceive('listIncome')->atLeast()->once()->andReturn($this->categoryListIncome()); $noCatRepos->shouldReceive('listExpenses')->atLeast()->once()->andReturn($this->noCategoryListExpenses()); $noCatRepos->shouldReceive('listIncome')->atLeast()->once()->andReturn($this->noCategoryListIncome()); $parameters = [ 'start' => '2019-01-01', 'end' => '2019-01-31', ]; $response = $this->get(route('api.v1.chart.category.overview') . '?' . http_build_query($parameters), ['Accept' => 'application/json']); $response->assertStatus(200); } }