. */ declare(strict_types=1); namespace Tests\integration\Api\Models\Account; use FireflyIII\Enums\AccountTypeEnum; use FireflyIII\Factory\AttachmentFactory; use FireflyIII\Models\Account; use FireflyIII\User; use Illuminate\Foundation\Testing\RefreshDatabase; use Tests\integration\TestCase; /** * @internal * * @covers \FireflyIII\Api\V1\Controllers\Models\Account\ListController */ final class ListControllerTest extends TestCase { use RefreshDatabase; private User $user; private Account $account; protected function setUp(): void { parent::setUp(); $this->user = $this->createAuthenticatedUser(); $this->actingAs($this->user); $this->account = Account::factory()->for($this->user)->withType(AccountTypeEnum::ASSET)->create(); app(AttachmentFactory::class)->setUser($this->user)->create([ 'filename' => 'test 1', 'title' => 'test 1', 'attachable_type' => Account::class, 'attachable_id' => $this->account->id, ]); app(AttachmentFactory::class)->setUser($this->user)->create([ 'filename' => 'test 2', 'title' => 'test 2', 'attachable_type' => Account::class, 'attachable_id' => $this->account->id, ]); } public function testIndex(): void { $this->actingAs($this->user); $response = $this->getJson(route('api.v1.accounts.attachments', ['account' => $this->account->id])); $response->assertStatus(200); $response->assertJson([ 'meta' => ['pagination' => ['total' => 2, 'total_pages' => 1]], ]); } public function testIndexCanChangePageSize(): void { $this->actingAs($this->user); $response = $this->getJson(route('api.v1.accounts.attachments', ['account' => $this->account->id, 'limit' => 1])); $response->assertStatus(200); $response->assertJson([ 'meta' => ['pagination' => ['total' => 2, 'total_pages' => 2]], ]); } }