mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-12-12 01:42:32 +00:00
Fix test that could come up with journals with 0 transactions, and improve test coverage for file routine.
This commit is contained in:
@@ -34,17 +34,7 @@ class RabobankDebitCreditTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Converter\RabobankDebitCredit::convert()
|
||||
*/
|
||||
public function testConvertAf()
|
||||
{
|
||||
$converter = new RabobankDebitCredit;
|
||||
$result = $converter->convert('D');
|
||||
$this->assertEquals(-1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Converter\RabobankDebitCredit::convert()
|
||||
*/
|
||||
public function testConvertAnything()
|
||||
public function testConvertAnything(): void
|
||||
{
|
||||
$converter = new RabobankDebitCredit;
|
||||
$result = $converter->convert('9083jkdkj');
|
||||
@@ -54,10 +44,40 @@ class RabobankDebitCreditTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Converter\RabobankDebitCredit::convert()
|
||||
*/
|
||||
public function testConvertBij()
|
||||
public function testConvertCredit(): void
|
||||
{
|
||||
$converter = new RabobankDebitCredit;
|
||||
$result = $converter->convert('C');
|
||||
$this->assertEquals(1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Converter\RabobankDebitCredit::convert()
|
||||
*/
|
||||
public function testConvertCreditOld(): void
|
||||
{
|
||||
$converter = new RabobankDebitCredit;
|
||||
$result = $converter->convert('B');
|
||||
$this->assertEquals(1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Converter\RabobankDebitCredit::convert()
|
||||
*/
|
||||
public function testConvertDebit(): void
|
||||
{
|
||||
$converter = new RabobankDebitCredit;
|
||||
$result = $converter->convert('D');
|
||||
$this->assertEquals(-1, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Converter\RabobankDebitCredit::convert()
|
||||
*/
|
||||
public function testConvertDebitOld(): void
|
||||
{
|
||||
$converter = new RabobankDebitCredit;
|
||||
$result = $converter->convert('A');
|
||||
$this->assertEquals(-1, $result);
|
||||
}
|
||||
}
|
||||
|
||||
367
tests/Unit/Import/JobConfiguration/FileJobConfigurationTest.php
Normal file
367
tests/Unit/Import/JobConfiguration/FileJobConfigurationTest.php
Normal file
@@ -0,0 +1,367 @@
|
||||
<?php
|
||||
/**
|
||||
* FileJobConfigurationTest.php
|
||||
* Copyright (c) 2018 thegrumpydictator@gmail.com
|
||||
*
|
||||
* This file is part of Firefly III.
|
||||
*
|
||||
* Firefly III is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Firefly III is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\Import\JobConfiguration;
|
||||
|
||||
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Import\JobConfiguration\FileJobConfiguration;
|
||||
use FireflyIII\Models\ImportJob;
|
||||
use FireflyIII\Support\Import\Configuration\File\ConfigureMappingHandler;
|
||||
use FireflyIII\Support\Import\Configuration\File\ConfigureRolesHandler;
|
||||
use FireflyIII\Support\Import\Configuration\File\ConfigureUploadHandler;
|
||||
use FireflyIII\Support\Import\Configuration\File\NewFileJobHandler;
|
||||
use Illuminate\Support\MessageBag;
|
||||
use Mockery;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class FileJobConfigurationTest
|
||||
*/
|
||||
class FileJobConfigurationTest extends TestCase
|
||||
{
|
||||
/**
|
||||
* No config, job is new.
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testCCFalse(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'File_A_unit_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'new';
|
||||
$job->provider = 'fake';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
// should be false:
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
$this->assertFalse($configurator->configurationComplete());
|
||||
}
|
||||
|
||||
/**
|
||||
* Job is ready to run.
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testCCTrue(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'File_B_unit_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'ready_to_run';
|
||||
$job->provider = 'fake';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
// should be false:
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
$this->assertTrue($configurator->configurationComplete());
|
||||
}
|
||||
|
||||
/**
|
||||
* Configure the job when the stage is "map". Won't test other combo's because they're covered by other tests.
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testConfigureJob(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'I-file_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'map';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$bag = new MessageBag;
|
||||
$result = null;
|
||||
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
|
||||
$handler = $this->mock(ConfigureMappingHandler::class);
|
||||
$handler->shouldReceive('setJob')->once()->withArgs([Mockery::any()]);
|
||||
$handler->shouldReceive('configureJob')->withArgs([['c' => 'd']])->andReturn($bag)->once();
|
||||
|
||||
try {
|
||||
$result = $configurator->configureJob(['c' => 'd']);
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals($bag, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get next data when stage is "configure-upload". Expect a certain class to be called.
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextDataCU(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'G-file_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'configure-upload';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
|
||||
$handler = $this->mock(ConfigureUploadHandler::class);
|
||||
$handler->shouldReceive('setJob')->once()->withArgs([Mockery::any()]);
|
||||
$handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once();
|
||||
|
||||
try {
|
||||
$result = $configurator->getNextData();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals(['a' => 'b'], $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get next data when stage is "map". Expect a certain class to be called.
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextDataMap(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'H-file_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'map';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
|
||||
$handler = $this->mock(ConfigureMappingHandler::class);
|
||||
$handler->shouldReceive('setJob')->once()->withArgs([Mockery::any()]);
|
||||
$handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once();
|
||||
|
||||
try {
|
||||
$result = $configurator->getNextData();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals(['a' => 'b'], $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get next data when stage is "new". Expect a certain class to be called.
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextDataNew(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'F-file_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'new';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
|
||||
$handler = $this->mock(NewFileJobHandler::class);
|
||||
$handler->shouldReceive('setJob')->once()->withArgs([Mockery::any()]);
|
||||
$handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once();
|
||||
|
||||
try {
|
||||
$result = $configurator->getNextData();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals(['a' => 'b'], $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get next data when stage is "roles". Expect a certain class to be called.
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextDataRoles(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'H-file_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'roles';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
|
||||
$handler = $this->mock(ConfigureRolesHandler::class);
|
||||
$handler->shouldReceive('setJob')->once()->withArgs([Mockery::any()]);
|
||||
$handler->shouldReceive('getNextData')->andReturn(['a' => 'b'])->withNoArgs()->once();
|
||||
|
||||
try {
|
||||
$result = $configurator->getNextData();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals(['a' => 'b'], $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get view when stage is "configure-upload".
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextViewCU(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'Dfile_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'configure-upload';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
try {
|
||||
$result = $configurator->getNextView();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals('import.file.configure-upload', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get view when stage is "map".
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextViewMap(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'Ffile_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'map';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
try {
|
||||
$result = $configurator->getNextView();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals('import.file.map', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get view when stage is "new".
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextViewNew(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'Cfile_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'new';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
try {
|
||||
$result = $configurator->getNextView();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals('import.file.new', $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get view when stage is "roles".
|
||||
*
|
||||
* @covers \FireflyIII\Import\JobConfiguration\FileJobConfiguration
|
||||
*/
|
||||
public function testGetNextViewRoles(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'Efile_' . random_int(1, 1000);
|
||||
$job->status = 'new';
|
||||
$job->stage = 'roles';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
$result = 'x';
|
||||
$configurator = new FileJobConfiguration;
|
||||
$configurator->setJob($job);
|
||||
try {
|
||||
$result = $configurator->getNextView();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
$this->assertEquals('import.file.roles', $result);
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ class FakeRoutineTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Routine\FakeRoutine
|
||||
*/
|
||||
public function testRunAhoy()
|
||||
public function testRunAhoy(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
@@ -76,7 +76,7 @@ class FakeRoutineTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Routine\FakeRoutine
|
||||
*/
|
||||
public function testRunFinal()
|
||||
public function testRunFinal(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
@@ -112,7 +112,7 @@ class FakeRoutineTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Routine\FakeRoutine
|
||||
*/
|
||||
public function testRunNew()
|
||||
public function testRunNew(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
|
||||
78
tests/Unit/Import/Routine/FileRoutineTest.php
Normal file
78
tests/Unit/Import/Routine/FileRoutineTest.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
/**
|
||||
* FileRoutineTest.php
|
||||
* Copyright (c) 2018 thegrumpydictator@gmail.com
|
||||
*
|
||||
* This file is part of Firefly III.
|
||||
*
|
||||
* Firefly III is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Firefly III is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Firefly III. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Unit\Import\Routine;
|
||||
|
||||
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Import\Routine\FileRoutine;
|
||||
use FireflyIII\Models\ImportJob;
|
||||
use FireflyIII\Repositories\ImportJob\ImportJobRepositoryInterface;
|
||||
use FireflyIII\Support\Import\Routine\File\CSVProcessor;
|
||||
use Mockery;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
* Class FileRoutineTest
|
||||
*/
|
||||
class FileRoutineTest extends TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* @covers \FireflyIII\Import\Routine\FileRoutine
|
||||
*/
|
||||
public function testRunDefault(): void
|
||||
{
|
||||
$job = new ImportJob;
|
||||
$job->user_id = $this->user()->id;
|
||||
$job->key = 'a_fr_' . random_int(1, 1000);
|
||||
$job->status = 'running';
|
||||
$job->stage = 'ready_to_run';
|
||||
$job->provider = 'file';
|
||||
$job->file_type = '';
|
||||
$job->configuration = [];
|
||||
$job->save();
|
||||
|
||||
// mock
|
||||
$processor = $this->mock(CSVProcessor::class);
|
||||
$repository = $this->mock(ImportJobRepositoryInterface::class);
|
||||
|
||||
// calls
|
||||
$repository->shouldReceive('setUser')->once();
|
||||
$repository->shouldReceive('setStatus')->withArgs([Mockery::any(), 'provider_finished'])->once();
|
||||
$repository->shouldReceive('setStage')->withArgs([Mockery::any(), 'final'])->once();
|
||||
$repository->shouldReceive('setTransactions')->withArgs([Mockery::any(), ['a' => 'b']])->once();
|
||||
$repository->shouldReceive('getConfiguration')->withArgs([Mockery::any()])->once()->andReturn([]);
|
||||
$processor->shouldReceive('setJob')->once();
|
||||
$processor->shouldReceive('run')->once()->andReturn(['a' => 'b']);
|
||||
|
||||
|
||||
$routine = new FileRoutine;
|
||||
$routine->setJob($job);
|
||||
try {
|
||||
$routine->run();
|
||||
} catch (FireflyException $e) {
|
||||
$this->assertTrue(false, $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@ class HasAnyCategoryTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Triggers\HasAnyCategory::triggered
|
||||
*/
|
||||
public function testTriggered()
|
||||
public function testTriggered(): void
|
||||
{
|
||||
$journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$category = $journal->user->categories()->first();
|
||||
@@ -51,14 +51,14 @@ class HasAnyCategoryTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Triggers\HasAnyCategory::triggered
|
||||
*/
|
||||
public function testTriggeredNot()
|
||||
public function testTriggeredNot(): void
|
||||
{
|
||||
$journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$journal->categories()->detach();
|
||||
|
||||
// also detach transactions:
|
||||
/** @var Transaction $transaction */
|
||||
foreach($journal->transactions as $transaction) {
|
||||
foreach ($journal->transactions as $transaction) {
|
||||
$transaction->categories()->detach();
|
||||
}
|
||||
|
||||
@@ -71,10 +71,16 @@ class HasAnyCategoryTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Triggers\HasAnyCategory::triggered
|
||||
*/
|
||||
public function testTriggeredTransactions()
|
||||
public function testTriggeredTransactions(): void
|
||||
{
|
||||
/** @var TransactionJournal $journal */
|
||||
$journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$count = 0;
|
||||
$journal = null;
|
||||
while ($count === 0) {
|
||||
/** @var TransactionJournal $journal */
|
||||
$journal = TransactionJournal::inRandomOrder()->whereNull('deleted_at')->first();
|
||||
$count = $journal->transactions()->count();
|
||||
}
|
||||
|
||||
$category = $journal->user->categories()->first();
|
||||
$journal->categories()->detach();
|
||||
$this->assertEquals(0, $journal->categories()->count());
|
||||
@@ -94,7 +100,7 @@ class HasAnyCategoryTest extends TestCase
|
||||
/**
|
||||
* @covers \FireflyIII\TransactionRules\Triggers\HasAnyCategory::willMatchEverything
|
||||
*/
|
||||
public function testWillMatchEverything()
|
||||
public function testWillMatchEverything(): void
|
||||
{
|
||||
$value = '';
|
||||
$result = HasAnyCategory::willMatchEverything($value);
|
||||
|
||||
Reference in New Issue
Block a user