ValidateMessagesImplementation::validate()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 19
rs 9.2
cc 4
eloc 11
nc 4
nop 1
1
<?php
2
declare(strict_types = 1);
3
4
namespace PurpleBooth\GitGitHubLint;
5
6
use PurpleBooth\GitGitHubLint\Status\PreviousFailureStatus;
7
use PurpleBooth\GitGitHubLint\Status\SuccessStatus;
8
use PurpleBooth\GitLintValidators\Message;
9
use PurpleBooth\GitLintValidators\ValidateMessage;
10
11
/**
12
 * This will evaluate messages with a status and set them on the message
13
 *
14
 * @package PurpleBooth\GitGitHubLint
15
 */
16
class ValidateMessagesImplementation implements ValidateMessages
17
{
18
    /**
19
     * @var ValidateMessage
20
     */
21
    private $validateMessage;
22
23
24
    /**
25
     * ValidateServiceImplementation constructor.
26
     *
27
     * @param ValidateMessage $validateMessage
28
     */
29
    public function __construct(ValidateMessage $validateMessage)
30
    {
31
        $this->validateMessage = $validateMessage;
32
    }
33
34
    /**
35
     * Evaluate multiple messages and set the most appropriate status.
36
     *
37
     * All status will fail after the first failure
38
     *
39
     * @param Message[] $messages
40
     *
41
     * @return void
42
     */
43
    public function validate(array $messages)
44
    {
45
        $previousFailedStatus = null;
46
47
        /** @var Message $message */
48
        foreach ($messages as $message) {
49
            $this->validateMessage->validate($message);
50
51
            if (count($message->getStatuses()) < 1) {
52
                if ($previousFailedStatus) {
53
                    $message->addStatus($previousFailedStatus);
54
                } else {
55
                    $message->addStatus(new SuccessStatus());
56
                }
57
            } else {
58
                $previousFailedStatus = new PreviousFailureStatus();
59
            }
60
        }
61
    }
62
}
63