. */ declare(strict_types=1); namespace Tests\Feature\Controllers\Chart; use FireflyIII\Generator\Chart\Basic\GeneratorInterface; use FireflyIII\Helpers\Collector\JournalCollectorInterface; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\Account\AccountRepositoryInterface; use Illuminate\Support\Collection; use Tests\TestCase; /** * Class ExpenseReportControllerTest * * @SuppressWarnings(PHPMD.TooManyPublicMethods) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class ExpenseReportControllerTest extends TestCase { /** * @covers \FireflyIII\Http\Controllers\Chart\ExpenseReportController::__construct * @covers \FireflyIII\Http\Controllers\Chart\ExpenseReportController::groupByName * @covers \FireflyIII\Http\Controllers\Chart\ExpenseReportController::mainChart() * @covers \FireflyIII\Http\Controllers\Chart\ExpenseReportController::getExpenses * @covers \FireflyIII\Http\Controllers\Chart\ExpenseReportController::getIncome * @covers \FireflyIII\Http\Controllers\Chart\ExpenseReportController::combineAccounts */ public function testMainChart() { $expense = $this->user()->accounts()->where('account_type_id', 4)->first(); $generator = $this->mock(GeneratorInterface::class); $collector = $this->mock(JournalCollectorInterface::class); $accountRepository = $this->mock(AccountRepositoryInterface::class); $accountRepository->shouldReceive('findByName')->once()->andReturn($expense); $set = new Collection; $transaction = new Transaction(); $transaction->opposing_account_name = 'Somebody'; $transaction->transaction_amount = '5'; $set->push($transaction); $collector->shouldReceive('setAccounts')->andReturnSelf(); $collector->shouldReceive('setRange')->andReturnSelf(); $collector->shouldReceive('setTypes')->withArgs([[TransactionType::WITHDRAWAL]])->andReturnSelf(); $collector->shouldReceive('setTypes')->withArgs([[TransactionType::DEPOSIT]])->andReturnSelf(); $collector->shouldReceive('setOpposingAccounts')->andReturnSelf(); $collector->shouldReceive('getJournals')->andReturn($set); $generator->shouldReceive('multiSet')->andReturn([])->once(); $this->be($this->user()); $response = $this->get(route('chart.expense.main', ['1', $expense->id, '20120101', '20120131'])); $response->assertStatus(200); } }