. */ declare(strict_types=1); namespace Tests\Api\V1\Controllers; use FireflyIII\Models\Account; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Transformers\AccountTransformer; use Laravel\Passport\Passport; use Tests\TestCase; /** * Class AccountControllerTest */ class AccountControllerTest extends TestCase { /** @var array */ protected $transformed = [ 'id' => 1, 'name' => 'Some account', 'links' => [ 'rel' => 'self', 'uri' => '/accounts/1', ], ]; public function setUp() { parent::setUp(); Passport::actingAs($this->user()); } /** * @covers \FireflyIII\Api\V1\Controllers\AccountController::index */ public function testIndex() { // mock stuff: $repository = $this->mock(AccountRepositoryInterface::class); $transformer = $this->overload(AccountTransformer::class); $transformer->shouldReceive('setCurrentScope')->andReturnSelf(); $transformer->shouldReceive('transform')->andReturn($this->transformed); $accounts = factory(Account::class, 10)->create(); $repository->shouldReceive('setUser')->once(); $repository->shouldReceive('getAccountsByType')->withAnyArgs()->andReturn($accounts)->once(); $response = $this->get('/api/v1/accounts'); $response->assertStatus(200); $response->assertJson(['data' => []]); $response->assertJson(['meta' => []]); $response->assertJson(['links' => []]); $response->assertSee('type=all'); // default returns this. } }