diff --git a/app/Http/Requests/RuleFormRequest.php b/app/Http/Requests/RuleFormRequest.php index 0a062a3c44..3128100e4a 100644 --- a/app/Http/Requests/RuleFormRequest.php +++ b/app/Http/Requests/RuleFormRequest.php @@ -13,7 +13,7 @@ declare(strict_types=1); namespace FireflyIII\Http\Requests; -use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; +use FireflyIII\Repositories\Rule\RuleRepositoryInterface; /** * Class RuleFormRequest @@ -57,8 +57,8 @@ class RuleFormRequest extends Request */ public function rules() { - /** @var RuleGroupRepositoryInterface $repository */ - $repository = app(RuleGroupRepositoryInterface::class); + /** @var RuleRepositoryInterface $repository */ + $repository = app(RuleRepositoryInterface::class); $validTriggers = array_keys(config('firefly.rule-triggers')); $validActions = array_keys(config('firefly.rule-actions')); @@ -69,7 +69,6 @@ class RuleFormRequest extends Request if (!is_null($repository->find(intval($this->get('id')))->id)) { $titleRule = 'required|between:1,100|uniqueObjectForUser:rules,title,' . intval($this->get('id')); } - $rules = [ 'title' => $titleRule, 'description' => 'between:1,5000', diff --git a/app/Repositories/Rule/RuleRepository.php b/app/Repositories/Rule/RuleRepository.php index 6fa0a2b2c7..4d655484a7 100644 --- a/app/Repositories/Rule/RuleRepository.php +++ b/app/Repositories/Rule/RuleRepository.php @@ -56,6 +56,21 @@ class RuleRepository implements RuleRepositoryInterface return true; } + /** + * @param int $ruleId + * + * @return Rule + */ + public function find(int $ruleId): Rule + { + $rule = $this->user->rules()->find($ruleId); + if (is_null($rule)) { + return new Rule; + } + + return $rule; + } + /** * FIxXME can return null * diff --git a/app/Repositories/Rule/RuleRepositoryInterface.php b/app/Repositories/Rule/RuleRepositoryInterface.php index 13fc6c3382..7a916d14a0 100644 --- a/app/Repositories/Rule/RuleRepositoryInterface.php +++ b/app/Repositories/Rule/RuleRepositoryInterface.php @@ -38,6 +38,14 @@ interface RuleRepositoryInterface */ public function destroy(Rule $rule): bool; + /** + * @param int $ruleId + * + * @return Rule + */ + public function find(int $ruleId): Rule; + + /** * @return RuleGroup */ diff --git a/tests/Feature/Controllers/RuleControllerTest.php b/tests/Feature/Controllers/RuleControllerTest.php index 4b29e478a5..056606971d 100644 --- a/tests/Feature/Controllers/RuleControllerTest.php +++ b/tests/Feature/Controllers/RuleControllerTest.php @@ -243,13 +243,12 @@ class RuleControllerTest extends TestCase public function testStore() { // mock stuff - $repository = $this->mock(RuleRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $ruleGroupRepos = $this->mock(RuleGroupRepositoryInterface::class); + $repository = $this->mock(RuleRepositoryInterface::class); + $journalRepos = $this->mock(JournalRepositoryInterface::class); $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal); - $ruleGroupRepos->shouldReceive('find')->andReturn(new RuleGroup)->once(); $repository->shouldReceive('store')->andReturn(new Rule); + $repository->shouldReceive('find')->withArgs([0])->andReturn(new Rule)->once(); $this->session(['rules.create.uri' => 'http://localhost']); $data = [ @@ -375,12 +374,11 @@ class RuleControllerTest extends TestCase public function testUpdate() { // mock stuff - $repository = $this->mock(RuleRepositoryInterface::class); - $journalRepos = $this->mock(JournalRepositoryInterface::class); - $ruleGroupRepos = $this->mock(RuleGroupRepositoryInterface::class); - + $repository = $this->mock(RuleRepositoryInterface::class); + $journalRepos = $this->mock(JournalRepositoryInterface::class); + $rule = Rule::find(1); $journalRepos->shouldReceive('first')->once()->andReturn(new TransactionJournal); - $ruleGroupRepos->shouldReceive('find')->andReturn(new RuleGroup)->once(); + $repository->shouldReceive('find')->withArgs([1])->andReturn($rule)->once(); $repository->shouldReceive('update'); $data = [