. */ namespace Tests\Unit\TransactionRules\Actions; use FireflyIII\Models\RuleAction; use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\TransactionRules\Actions\LinkToBill; use Log; use Tests\TestCase; /** * Class LinkToBillTest * @SuppressWarnings(PHPMD.CouplingBetweenObjects) * @SuppressWarnings(PHPMD.ExcessiveMethodLength) * @SuppressWarnings(PHPMD.TooManyPublicMethods) */ class LinkToBillTest extends TestCase { /** * */ public function setUp(): void { parent::setUp(); Log::info(sprintf('Now in %s.', get_class($this))); } /** * @covers \FireflyIII\TransactionRules\Actions\LinkToBill */ public function testBasic(): void { $repos = $this->mock(BillRepositoryInterface::class); $withdrawal = $this->getRandomWithdrawal(); $rule = $this->getRandomRule(); $bill = $this->getRandomBill(); $ruleAction = new RuleAction; $ruleAction->rule = $rule; $ruleAction->action_type = 'link_to_bill'; $ruleAction->action_value = $bill->name; $repos->shouldReceive('setUser'); $repos->shouldReceive('findByName')->withArgs([$bill->name])->andReturn($bill); $action = new LinkToBill($ruleAction); $result = $action->act($withdrawal); $this->assertTrue($result); } /** * @covers \FireflyIII\TransactionRules\Actions\LinkToBill */ public function testNoBill(): void { $repos = $this->mock(BillRepositoryInterface::class); $withdrawal = $this->getRandomWithdrawal(); $rule = $this->getRandomRule(); $bill = $this->getRandomBill(); $ruleAction = new RuleAction; $ruleAction->rule = $rule; $ruleAction->action_type = 'link_to_bill'; $ruleAction->action_value = $bill->name; $repos->shouldReceive('setUser'); $repos->shouldReceive('findByName')->withArgs([$bill->name])->andReturnNull(); $action = new LinkToBill($ruleAction); $result = $action->act($withdrawal); $this->assertFalse($result); } }