diff --git a/app/Repositories/Rule/RuleRepository.php b/app/Repositories/Rule/RuleRepository.php index 67120f56a0..263bd2c3a7 100644 --- a/app/Repositories/Rule/RuleRepository.php +++ b/app/Repositories/Rule/RuleRepository.php @@ -160,6 +160,26 @@ class RuleRepository implements RuleRepositoryInterface return $rule->ruleTriggers()->where('trigger_type', 'user_action')->first()->trigger_value; } + /** + * @param Rule $rule + * + * @return Collection + */ + public function getRuleActions(Rule $rule): Collection + { + return $rule->ruleActions()->orderBy('order', 'ASC')->get(); + } + + /** + * @param Rule $rule + * + * @return Collection + */ + public function getRuleTriggers(Rule $rule): Collection + { + return $rule->ruleTriggers()->orderBy('order', 'ASC')->get(); + } + /** * @param Rule $rule * diff --git a/app/Repositories/Rule/RuleRepositoryInterface.php b/app/Repositories/Rule/RuleRepositoryInterface.php index 25a7ac7df4..5b4c3fea5b 100644 --- a/app/Repositories/Rule/RuleRepositoryInterface.php +++ b/app/Repositories/Rule/RuleRepositoryInterface.php @@ -34,6 +34,20 @@ use Illuminate\Support\Collection; */ interface RuleRepositoryInterface { + /** + * @param Rule $rule + * + * @return Collection + */ + public function getRuleActions(Rule $rule): Collection; + + /** + * @param Rule $rule + * + * @return Collection + */ + public function getRuleTriggers(Rule $rule): Collection; + /** * @return int diff --git a/app/Transformers/PreferenceTransformer.php b/app/Transformers/PreferenceTransformer.php index 23d759e444..54f8a2f6e7 100644 --- a/app/Transformers/PreferenceTransformer.php +++ b/app/Transformers/PreferenceTransformer.php @@ -38,6 +38,7 @@ class PreferenceTransformer extends AbstractTransformer /** * PreferenceTransformer constructor. * + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Transformers/RecurrenceTransformer.php b/app/Transformers/RecurrenceTransformer.php index d99af7d379..4cc8c8f142 100644 --- a/app/Transformers/RecurrenceTransformer.php +++ b/app/Transformers/RecurrenceTransformer.php @@ -44,15 +44,30 @@ use Log; */ class RecurrenceTransformer extends AbstractTransformer { + /** @var BillRepositoryInterface */ + private $billRepos; + /** @var BudgetRepositoryInterface */ + private $budgetRepos; + /** @var CategoryFactory */ + private $factory; + /** @var PiggyBankRepositoryInterface */ + private $piggyRepos; /** @var RecurringRepositoryInterface */ - protected $repository; + private $repository; /** * RecurrenceTransformer constructor. + * + * @codeCoverageIgnore */ public function __construct() { - $this->repository = app(RecurringRepositoryInterface::class); + $this->repository = app(RecurringRepositoryInterface::class); + $this->billRepos = app(BillRepositoryInterface::class); + $this->piggyRepos = app(PiggyBankRepositoryInterface::class); + $this->factory = app(CategoryFactory::class); + $this->budgetRepos = app(BudgetRepositoryInterface::class); + if ('testing' === config('app.env')) { Log::warning(sprintf('%s should not be instantiated in the TEST environment!', \get_class($this))); } @@ -68,7 +83,14 @@ class RecurrenceTransformer extends AbstractTransformer */ public function transform(Recurrence $recurrence): array { + Log::debug('Now in Recurrence::transform()'); $this->repository->setUser($recurrence->user); + $this->billRepos->setUser($recurrence->user); + $this->piggyRepos->setUser($recurrence->user); + $this->factory->setUser($recurrence->user); + $this->budgetRepos->setUser($recurrence->user); + + $shortType = (string)config(sprintf('firefly.transactionTypesToShort.%s', $recurrence->transactionType->type)); // basic data. $return = [ @@ -76,7 +98,7 @@ class RecurrenceTransformer extends AbstractTransformer 'created_at' => $recurrence->created_at->toAtomString(), 'updated_at' => $recurrence->updated_at->toAtomString(), 'transaction_type_id' => $recurrence->transaction_type_id, - 'transaction_type' => $recurrence->transactionType->type, + 'transaction_type' => $shortType, 'title' => $recurrence->title, 'description' => $recurrence->description, 'first_date' => $recurrence->first_date->format('Y-m-d'), @@ -109,34 +131,28 @@ class RecurrenceTransformer extends AbstractTransformer */ private function getMeta(Recurrence $recurrence): array { - $return = []; + $return = []; + $collection = $recurrence->recurrenceMeta; + Log::debug(sprintf('Meta collection length = %d', $collection->count())); /** @var RecurrenceMeta $recurrenceMeta */ - foreach ($recurrence->recurrenceMeta as $recurrenceMeta) { + foreach ($collection as $recurrenceMeta) { $recurrenceMetaArray = [ 'name' => $recurrenceMeta->name, 'value' => $recurrenceMeta->value, ]; switch ($recurrenceMeta->name) { - default: - throw new FireflyException(sprintf('Recurrence transformer cannot handle meta-field "%s"', $recurrenceMeta->name)); case 'tags': $recurrenceMetaArray['tags'] = explode(',', $recurrenceMeta->value); break; - case 'notes': - break; case 'bill_id': - /** @var BillRepositoryInterface $repository */ - $repository = app(BillRepositoryInterface::class); - $bill = $repository->find((int)$recurrenceMeta->value); + $bill = $this->billRepos->find((int)$recurrenceMeta->value); if (null !== $bill) { $recurrenceMetaArray['bill_id'] = $bill->id; $recurrenceMetaArray['bill_name'] = $bill->name; } break; case 'piggy_bank_id': - /** @var PiggyBankRepositoryInterface $repository */ - $repository = app(PiggyBankRepositoryInterface::class); - $piggy = $repository->findNull((int)$recurrenceMeta->value); + $piggy = $this->piggyRepos->findNull((int)$recurrenceMeta->value); if (null !== $piggy) { $recurrenceMetaArray['piggy_bank_id'] = $piggy->id; $recurrenceMetaArray['piggy_bank_name'] = $piggy->name; @@ -208,22 +224,15 @@ class RecurrenceTransformer extends AbstractTransformer 'value' => $transactionMeta->value, ]; switch ($transactionMeta->name) { - default: - throw new FireflyException(sprintf('Recurrence transformer cannot handle transaction meta-field "%s"', $transactionMeta->name)); case 'category_name': - /** @var CategoryFactory $factory */ - $factory = app(CategoryFactory::class); - $factory->setUser($transaction->recurrence->user); - $category = $factory->findOrCreate(null, $transactionMeta->value); + $category = $this->factory->findOrCreate(null, $transactionMeta->value); if (null !== $category) { $transactionMetaArray['category_id'] = $category->id; $transactionMetaArray['category_name'] = $category->name; } break; case 'budget_id': - /** @var BudgetRepositoryInterface $repository */ - $repository = app(BudgetRepositoryInterface::class); - $budget = $repository->findNull((int)$transactionMeta->value); + $budget = $this->budgetRepos->findNull((int)$transactionMeta->value); if (null !== $budget) { $transactionMetaArray['budget_id'] = $budget->id; $transactionMetaArray['budget_name'] = $budget->name; diff --git a/app/Transformers/RuleActionTransformer.php b/app/Transformers/RuleActionTransformer.php deleted file mode 100644 index 33d59ed0f1..0000000000 --- a/app/Transformers/RuleActionTransformer.php +++ /dev/null @@ -1,84 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace FireflyIII\Transformers; - - -use FireflyIII\Models\RuleAction; -use League\Fractal\TransformerAbstract; -use Log; -use Symfony\Component\HttpFoundation\ParameterBag; - -/** - * Class RuleActionTransformer - */ -class RuleActionTransformer extends TransformerAbstract -{ - - /** @var ParameterBag */ - protected $parameters; - - /** - * CurrencyTransformer constructor. - * - * @codeCoverageIgnore - * - * @param ParameterBag $parameters - */ - public function __construct(ParameterBag $parameters) - { - $this->parameters = $parameters; - if ('testing' === config('app.env')) { - Log::warning(sprintf('%s should not be instantiated in the TEST environment!', \get_class($this))); - } - } - - /** - * Transform the rule action. - * - * @param RuleAction $ruleAction - * - * @return array - */ - public function transform(RuleAction $ruleAction): array - { - $data = [ - 'id' => (int)$ruleAction->id, - 'created_at' => $ruleAction->created_at->toAtomString(), - 'updated_at' => $ruleAction->updated_at->toAtomString(), - 'type' => $ruleAction->action_type, - 'value' => $ruleAction->action_value, - 'order' => $ruleAction->order, - 'active' => $ruleAction->active, - 'stop_processing' => $ruleAction->stop_processing, - 'links' => [ - [ - 'rel' => 'self', - 'uri' => '/rule_triggers/' . $ruleAction->id, - ], - ], - ]; - - return $data; - } -} diff --git a/app/Transformers/RuleGroupTransformer.php b/app/Transformers/RuleGroupTransformer.php index e8f04faa78..f291220c8a 100644 --- a/app/Transformers/RuleGroupTransformer.php +++ b/app/Transformers/RuleGroupTransformer.php @@ -34,7 +34,7 @@ use Symfony\Component\HttpFoundation\ParameterBag; class RuleGroupTransformer extends AbstractTransformer { /** - * CurrencyTransformer constructor. + * RuleGroupTransformer constructor. * * @codeCoverageIgnore */ diff --git a/app/Transformers/RuleTransformer.php b/app/Transformers/RuleTransformer.php index 2a1f4e0e58..f8f825ae31 100644 --- a/app/Transformers/RuleTransformer.php +++ b/app/Transformers/RuleTransformer.php @@ -27,15 +27,17 @@ namespace FireflyIII\Transformers; use FireflyIII\Models\Rule; use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleTrigger; -use League\Fractal\TransformerAbstract; +use FireflyIII\Repositories\Rule\RuleRepositoryInterface; use Log; -use Symfony\Component\HttpFoundation\ParameterBag; /** * Class RuleTransformer */ class RuleTransformer extends AbstractTransformer { + /** @var RuleRepositoryInterface */ + private $ruleRepository; + /** * CurrencyTransformer constructor. * @@ -43,6 +45,7 @@ class RuleTransformer extends AbstractTransformer */ public function __construct() { + $this->ruleRepository = app(RuleRepositoryInterface::class); if ('testing' === config('app.env')) { Log::warning(sprintf('%s should not be instantiated in the TEST environment!', \get_class($this))); } @@ -57,6 +60,8 @@ class RuleTransformer extends AbstractTransformer */ public function transform(Rule $rule): array { + $this->ruleRepository->setUser($rule->user); + $data = [ 'id' => (int)$rule->id, 'created_at' => $rule->created_at->toAtomString(), @@ -89,7 +94,7 @@ class RuleTransformer extends AbstractTransformer private function actions(Rule $rule): array { $result = []; - $actions = $rule->ruleActions()->orderBy('order', 'ASC')->get(); + $actions = $this->ruleRepository->getRuleActions($rule); /** @var RuleAction $ruleAction */ foreach ($actions as $ruleAction) { $result[] = [ @@ -115,7 +120,7 @@ class RuleTransformer extends AbstractTransformer private function triggers(Rule $rule): array { $result = []; - $triggers = $rule->ruleTriggers()->orderBy('order', 'ASC')->get(); + $triggers = $this->ruleRepository->getRuleTriggers($rule); /** @var RuleTrigger $ruleTrigger */ foreach ($triggers as $ruleTrigger) { $result[] = [ diff --git a/app/Transformers/RuleTriggerTransformer.php b/app/Transformers/RuleTriggerTransformer.php deleted file mode 100644 index 5e03033f66..0000000000 --- a/app/Transformers/RuleTriggerTransformer.php +++ /dev/null @@ -1,83 +0,0 @@ -. - */ - -declare(strict_types=1); - -namespace FireflyIII\Transformers; - - -use FireflyIII\Models\RuleTrigger; -use League\Fractal\TransformerAbstract; -use Log; -use Symfony\Component\HttpFoundation\ParameterBag; - -/** - * Class RuleTriggerTransformer - */ -class RuleTriggerTransformer extends TransformerAbstract -{ - /** @var ParameterBag */ - protected $parameters; - - /** - * CurrencyTransformer constructor. - * - * @codeCoverageIgnore - * - * @param ParameterBag $parameters - */ - public function __construct(ParameterBag $parameters) - { - $this->parameters = $parameters; - if ('testing' === config('app.env')) { - Log::warning(sprintf('%s should not be instantiated in the TEST environment!', \get_class($this))); - } - } - - /** - * Transform the rule trigger. - * - * @param RuleTrigger $ruleTrigger - * - * @return array - */ - public function transform(RuleTrigger $ruleTrigger): array - { - $data = [ - 'id' => (int)$ruleTrigger->id, - 'created_at' => $ruleTrigger->created_at->toAtomString(), - 'updated_at' => $ruleTrigger->updated_at->toAtomString(), - 'type' => $ruleTrigger->trigger_type, - 'value' => $ruleTrigger->trigger_value, - 'order' => $ruleTrigger->order, - 'active' => $ruleTrigger->active, - 'stop_processing' => $ruleTrigger->stop_processing, - 'links' => [ - [ - 'rel' => 'self', - 'uri' => '/rule_triggers/' . $ruleTrigger->id, - ], - ], - ]; - - return $data; - } -} diff --git a/config/firefly.php b/config/firefly.php index de1b600741..744e3a2784 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -289,6 +289,13 @@ return [ 'transfer' => ['Transfer'], 'transfers' => ['Transfer'], ], + 'transactionTypesToShort' => [ + 'Withdrawal' => 'withdrawal', + 'Deposit' => 'deposit', + 'Transfer' => 'transfer', + 'Opening balance' => 'opening-balance', + 'Reconciliation' => 'reconciliation', + ], 'transactionIconsByWhat' => [ 'expenses' => 'fa-long-arrow-left', 'withdrawal' => 'fa-long-arrow-left', diff --git a/tests/Unit/Transformers/PiggyBankEventTransformerTest.php b/tests/Unit/Transformers/PiggyBankEventTransformerTest.php index de430576e5..c7665ae65b 100644 --- a/tests/Unit/Transformers/PiggyBankEventTransformerTest.php +++ b/tests/Unit/Transformers/PiggyBankEventTransformerTest.php @@ -30,6 +30,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Transformers\PiggyBankEventTransformer; +use Log; use Mockery; use Symfony\Component\HttpFoundation\ParameterBag; use Tests\TestCase; @@ -39,6 +40,14 @@ use Tests\TestCase; */ class PiggyBankEventTransformerTest extends TestCase { + /** + * + */ + public function setUp(): void + { + parent::setUp(); + Log::info(sprintf('Now in %s.', \get_class($this))); + } /** * Basic test with no meta data. * diff --git a/tests/Unit/Transformers/PiggyBankTransformerTest.php b/tests/Unit/Transformers/PiggyBankTransformerTest.php index 6dac5f5d49..565576a9da 100644 --- a/tests/Unit/Transformers/PiggyBankTransformerTest.php +++ b/tests/Unit/Transformers/PiggyBankTransformerTest.php @@ -29,6 +29,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Transformers\PiggyBankTransformer; +use Log; use Mockery; use Symfony\Component\HttpFoundation\ParameterBag; use Tests\TestCase; @@ -39,6 +40,15 @@ use Amount; */ class PiggyBankTransformerTest extends TestCase { + /** + * + */ + public function setUp(): void + { + parent::setUp(); + Log::info(sprintf('Now in %s.', \get_class($this))); + } + /** * Test basic transformer. * diff --git a/tests/Unit/Transformers/PreferenceTransformerTest.php b/tests/Unit/Transformers/PreferenceTransformerTest.php new file mode 100644 index 0000000000..5dfa42b4bb --- /dev/null +++ b/tests/Unit/Transformers/PreferenceTransformerTest.php @@ -0,0 +1,64 @@ +. + */ + +declare(strict_types=1); + +namespace Tests\Unit\Transformers; + + +use FireflyIII\Models\Preference; +use FireflyIII\Transformers\PreferenceTransformer; +use Log; +use Symfony\Component\HttpFoundation\ParameterBag; +use Tests\TestCase; + +/** + * Class PreferenceTransformerTest + */ +class PreferenceTransformerTest extends TestCase +{ + /** + * + */ + public function setUp(): void + { + parent::setUp(); + Log::info(sprintf('Now in %s.', \get_class($this))); + } + + /** + * Test basic tag transformer + * + * @covers \FireflyIII\Transformers\PreferenceTransformer + */ + public function testBasic(): void + { + /** @var Preference $preference */ + $preference = Preference::first(); + $transformer = app(PreferenceTransformer::class); + $transformer->setParameters(new ParameterBag); + + $result = $transformer->transform($preference); + + $this->assertEquals($preference->name, $result['name']); + } + +} diff --git a/tests/Unit/Transformers/RecurrenceTransformerTest.php b/tests/Unit/Transformers/RecurrenceTransformerTest.php new file mode 100644 index 0000000000..30e198b830 --- /dev/null +++ b/tests/Unit/Transformers/RecurrenceTransformerTest.php @@ -0,0 +1,131 @@ +. + */ + +declare(strict_types=1); + +namespace Tests\Unit\Transformers; + +use Carbon\Carbon; +use FireflyIII\Factory\CategoryFactory; +use FireflyIII\Models\Bill; +use FireflyIII\Models\Budget; +use FireflyIII\Models\Category; +use FireflyIII\Models\PiggyBank; +use FireflyIII\Models\Recurrence; +use FireflyIII\Models\TransactionCurrency; +use FireflyIII\Repositories\Bill\BillRepositoryInterface; +use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; +use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; +use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface; +use FireflyIII\Transformers\RecurrenceTransformer; +use Log; +use Symfony\Component\HttpFoundation\ParameterBag; +use Tests\TestCase; + +/** + * + * Class RecurrenceTransformerTest + */ +class RecurrenceTransformerTest extends TestCase +{ + /** + * + */ + public function setUp(): void + { + parent::setUp(); + Log::info(sprintf('Now in %s.', \get_class($this))); + } + + /** + * + */ + public function testBasic(): void + { + $recurrenceRepos = $this->mock(RecurringRepositoryInterface::class); + $billRepos = $this->mock(BillRepositoryInterface::class); + $piggyRepos = $this->mock(PiggyBankRepositoryInterface::class); + $factory = $this->mock(CategoryFactory::class); + $budgetRepos = $this->mock(BudgetRepositoryInterface::class); + $category = Category::first(); + $budget = Budget::first(); + $piggy = PiggyBank::first(); + $bill = Bill::first(); + $foreignCurrency = TransactionCurrency::find(2); + $ranges = [new Carbon]; + // mock calls: + $recurrenceRepos->shouldReceive('setUser')->atLeast()->once(); + $billRepos->shouldReceive('setUser')->atLeast()->once(); + $piggyRepos->shouldReceive('setUser')->atLeast()->once(); + $factory->shouldReceive('setUser')->atLeast()->once(); + $budgetRepos->shouldReceive('setUser')->atLeast()->once(); + + // default calls: + $recurrenceRepos->shouldReceive('getNoteText')->once()->andReturn('Hi there'); + $recurrenceRepos->shouldReceive('repetitionDescription')->once()->andReturn('Rep descr'); + $recurrenceRepos->shouldReceive('getXOccurrences')->andReturn($ranges)->atLeast()->once(); + $factory->shouldReceive('findOrCreate')->atLeast()->once()->withArgs([null, 'House'])->andReturn($category); + $budgetRepos->shouldReceive('findNull')->atLeast()->once()->withArgs([2])->andReturn($budget); + $piggyRepos->shouldReceive('findNull')->atLeast()->once()->withArgs([1])->andReturn($piggy); + $billRepos->shouldReceive('find')->atLeast()->once()->withArgs([1])->andReturn($bill); + + // basic transformation: + /** @var Recurrence $recurrence */ + $recurrence = Recurrence::find(1); + $transformer = app(RecurrenceTransformer::class); + $transformer->setParameters(new ParameterBag); + + $result = $transformer->transform($recurrence); + + $this->assertEquals(1, $result['id']); + $this->assertEquals('withdrawal', $result['transaction_type']); + $this->assertEquals(true, $result['apply_rules']); + $this->assertEquals( + [ + [ + 'value' => 'auto-generated', + 'tags' => ['auto-generated'], + 'name' => 'tags', + ], + [ + 'name' => 'piggy_bank_id', + 'piggy_bank_id' => 1, + 'piggy_bank_name' => 'New camera', + 'value' => '1', + ], + [ + 'bill_id' => 1, + 'bill_name' => 'Rent', + 'name' => 'bill_id', + 'value' => '1', + + ], + ] + , $result['meta'] + ); + + $this->assertEquals($foreignCurrency->code, $result['transactions'][0]['foreign_currency_code']); + $this->assertEquals('Rep descr', $result['recurrence_repetitions'][0]['description']); + + + } + +} \ No newline at end of file diff --git a/tests/Unit/Transformers/RuleGroupTransformerTest.php b/tests/Unit/Transformers/RuleGroupTransformerTest.php new file mode 100644 index 0000000000..c02ebe9aa5 --- /dev/null +++ b/tests/Unit/Transformers/RuleGroupTransformerTest.php @@ -0,0 +1,54 @@ +. + */ + +declare(strict_types=1); + +namespace Tests\Unit\Transformers; + + +use FireflyIII\Models\RuleGroup; +use FireflyIII\Transformers\RuleGroupTransformer; +use Symfony\Component\HttpFoundation\ParameterBag; +use Tests\TestCase; + +/** + * Class RuleGroupTransformerTest + */ +class RuleGroupTransformerTest extends TestCase +{ + /** + * Test basic tag transformer + * + * @covers \FireflyIII\Transformers\RuleGroupTransformer + */ + public function testBasic(): void + { + /** @var RuleGroup $ruleGroup */ + $ruleGroup = RuleGroup::first(); + + + $transformer = app(RuleGroupTransformer::class); + $transformer->setParameters(new ParameterBag); + $result = $transformer->transform($ruleGroup); + $this->assertEquals($ruleGroup->title, $result['title']); + } + +} diff --git a/tests/Unit/Transformers/RuleTransformerTest.php b/tests/Unit/Transformers/RuleTransformerTest.php new file mode 100644 index 0000000000..660d4096c6 --- /dev/null +++ b/tests/Unit/Transformers/RuleTransformerTest.php @@ -0,0 +1,70 @@ +. + */ + +declare(strict_types=1); + +namespace Tests\Unit\Transformers; + + +use FireflyIII\Models\Rule; +use FireflyIII\Models\RuleAction; +use FireflyIII\Models\RuleTrigger; +use FireflyIII\Repositories\Rule\RuleRepositoryInterface; +use FireflyIII\Transformers\RuleTransformer; +use Illuminate\Support\Collection; +use Symfony\Component\HttpFoundation\ParameterBag; +use Tests\TestCase; + +/** + * Class RuleTransformerTest + */ +class RuleTransformerTest extends TestCase +{ + /** + * Test basic tag transformer + * + * @covers \FireflyIII\Transformers\RuleTransformer + */ + public function testBasic(): void + { + /** @var Rule $rule */ + $rule = Rule::first(); + + $repository = $this->mock(RuleRepositoryInterface::class); + /** @var RuleTrigger $ruleTrigger */ + $ruleTrigger = RuleTrigger::first(); + /** @var RuleAction $ruleAction */ + $ruleAction = RuleAction::first(); + // mock stuff + $repository->shouldReceive('setUser')->atLeast()->once(); + $repository->shouldReceive('getRuleActions')->atLeast()->once()->andReturn(new Collection([$ruleAction])); + $repository->shouldReceive('getRuleTriggers')->atLeast()->once()->andReturn(new Collection([$ruleTrigger])); + + $transformer = app(RuleTransformer::class); + $transformer->setParameters(new ParameterBag); + $result = $transformer->transform($rule); + $this->assertEquals($rule->title, $result['title']); + + $this->assertEquals($ruleTrigger->trigger_type, $result['triggers'][0]['type']); + $this->assertEquals($ruleAction->action_type, $result['actions'][0]['type']); + } + +}