/** * @test */ public function mostSpecificMatchingRulesAreTheOnesWithMoreGeneralSituationIfNoneWithSameSituation() { // given $rule = CreateRule::allow(Situation::UserViewPost()); $this->ruleList->addRule($rule); // when $mostSpecificMatchingRules = $this->ruleFinder->findMostSpecificMatchingRulesFor(Situation::UserViewPostWithCategoryIdEquals5()); // then $this->assertEquals(array($rule), $mostSpecificMatchingRules); }
/** * @test */ public function canDetermineIfItAppliesToASpecification() { $rule = new SituationBasedRule(Situation::UserViewPost(), true); $this->assertTrue($rule->appliesTo(Situation::UserViewPostWithCategoryIdEquals5())); $this->assertTrue($rule->appliesTo(Situation::UserViewPostWithWordCountGreaterThan100())); }
/** * @test */ public function isSpecialCaseOfSituationIfSubjectAndObjectAreSpecialCasesAndTheActionIsTheSame() { $this->assertTrue(Situation::UserViewPostWithCategoryIdEquals5()->isSpecialCaseOf(Situation::UserViewPost())); $this->assertFalse(Situation::UserViewPost()->isSpecialCaseOf(Situation::UserViewPostWithCategoryIdEquals5())); }