diff --git a/src/Checks/Puqi/MDPuqi.php b/src/Checks/Puqi/MDPuqi.php index eae97bc..d7ecb79 100644 --- a/src/Checks/Puqi/MDPuqi.php +++ b/src/Checks/Puqi/MDPuqi.php @@ -43,7 +43,8 @@ final class MDPuqi { public const QI_REWARD_DESCRIPTION_LENGTH_GOOD = 3; private const QI_REWARD_DESCRIPTION_LENGTH_GREAT = 6; private const QI_REWARD_EVENTS_MULTIPLIER = 5; - private const QI_REWARD_TAGS_MULTIPLIER = 3; + public const QI_REWARD_TAGS_MULTIPLIER = 3; + public const QI_REWARD_TAGS_MULTIPLIER_ABOVE_THRESHOLD = 1; private const QI_REWARD_LITERATURE_MULTIPLIER = 2; private const QI_REWARD_HYPERLINKS_MULTIPLIER = 2; private const QI_REWARD_DOCUMENTS_MULTIPLIER = 1; @@ -80,11 +81,11 @@ final class MDPuqi { private const QI_PENALTY_NO_IMAGE = -10; private const QI_PENALTY_NO_COLLECTION = -10; private const QI_PENALTY_MULTIPLIER_EVENT_PART_DOUBLE_LINKED_AS_RELATED = -10; - private const QI_PENALTY_NO_EVENTS = -15; - private const QI_PENALTY_NO_TAG = -15; - private const QI_PENALTY_ONLY_ONE_TAG = -10; - private const QI_PENALTY_ONLY_TWO_TAG = -5; - private const QI_PENALTY_TOO_MANY_TAGS = -3; // Per tag of more than 10 tags + public const QI_PENALTY_NO_EVENTS = -15; + public const QI_PENALTY_NO_TAG = -15; + public const QI_PENALTY_ONLY_ONE_TAG = -10; + public const QI_PENALTY_ONLY_TWO_TAG = -5; + public const QI_PENALTY_TOO_MANY_TAGS = -3; // Per tag of more than 10 tags private const QI_PENALTY_IMAGE_FILE_MISSING = -5; private const QI_PENALTY_IMAGE_TOO_SMALL = -5; @@ -445,9 +446,9 @@ final class MDPuqi { $value = self::QI_REWARD_TAGS_MULTIPLIER * $anzahl_swoergebnis; } else { - $msg = $this->_tlLoader->tl("quality", "quality", "too_many__tags"); - $status = MDPuqiMessageStatus::warning; - $value = self::QI_PENALTY_TOO_MANY_TAGS * ($anzahl_swoergebnis - 10); + $msg = $this->_tlLoader->tl("quality", "quality", "tree_nine__tags"); + $status = MDPuqiMessageStatus::praise; + $value = self::QI_REWARD_TAGS_MULTIPLIER * self::THRESHOLD_TAGS_TOO_MANY + ($anzahl_swoergebnis - self::THRESHOLD_TAGS_TOO_MANY) * self::QI_REWARD_TAGS_MULTIPLIER_ABOVE_THRESHOLD; } $this->_messages[] = new MDPuqiMessage( diff --git a/tests/MDPuqiTest.php b/tests/MDPuqiTest.php index c4e0da0..8419f93 100644 --- a/tests/MDPuqiTest.php +++ b/tests/MDPuqiTest.php @@ -82,4 +82,41 @@ final class MDPuqiTest extends TestCase { self::assertEquals($positive, $score > 0, "Expected score to be positive or negative, got the oppite result. Score is: " . $score); } + + /** + * Data provider for tag. + * 0: Input number of tags. + * 1: Expected score. + * + * @return Generator + */ + public static function tagNoAndScoreProvider():Generator { + + yield 'No tags' => [0, 0 + MDPuqi::QI_PENALTY_NO_TAG]; + yield 'One tag' => [1, 0 + MDPuqi::QI_PENALTY_ONLY_ONE_TAG]; + yield 'Two tag' => [2, 0 + MDPuqi::QI_PENALTY_ONLY_TWO_TAG]; + yield 'Regular number of tags' => [5, 0 + 5 * MDPuqi::QI_REWARD_TAGS_MULTIPLIER]; + yield 'Number of tags above threshold' => [MDPuqi::THRESHOLD_TAGS_TOO_MANY + 1, 0 + MDPuqi::THRESHOLD_TAGS_TOO_MANY * MDPuqi::QI_REWARD_TAGS_MULTIPLIER + 1 * MDPuqi::QI_REWARD_TAGS_MULTIPLIER_ABOVE_THRESHOLD]; + + } + + /** + * Test for tag evaluation. + * + * @param integer $noOfTags Input number of tags. + * @param integer $expectedScore Expected score. + * + * @return void + */ + #[DataProvider('tagNoAndScoreProvider')] + public function testTagEvaluation(int $noOfTags, int $expectedScore):void { + + $puqi = new MDPuqi(new MDTlLoader("abc", "en")); + $puqi->checkEvents([], [], [], [], $noOfTags); + $msgs = $puqi->getMessages(); + + $score = $puqi->getScore(); + self::assertEquals(MDPuqi::QI_PENALTY_NO_EVENTS + $expectedScore, $score, "Tag eval: Score differs from expected. Messages: " . var_export($puqi->getMessages(), true)); + + } }