NegativeLocatorConstraint::toString()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 1
cts 1
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
namespace Openbuildings\PHPUnitSpiderling\Constraint;
4
5
use Openbuildings\Spiderling\Exception_Found;
6
use PHPUnit\Framework\Constraint\Constraint;
7
8
class NegativeLocatorConstraint extends Constraint
9
{
10
    protected $_type;
11
    protected $_selector;
12
    protected $_filters;
13
14 2
    public function __construct($type, $selector, array $filters = [])
15
    {
16 2
        $this->_type = $type;
17 2
        $this->_selector = $selector;
18 2
        $this->_filters = $filters;
19
    }
20 2
21 2
    protected function matches($other): bool
22
    {
23 2
        try {
24
            $other->not_present([$this->_type, $this->_selector, $this->_filters]);
25
26 2
            return true;
27
        } catch (Exception_Found $excption) {
28 2
            return false;
29 1
        }
30 1
    }
31
32
    protected function failureDescription($other): string
33
    {
34 1
        if ($other->is_root()) {
35
            $node_string = 'HTML page';
36 1
        } else {
37 1
            $node_string = $other->tag_name();
38
39
            if ($id = $other->attribute('id')) {
40
                $node_string .= '#'.$id;
41
            }
42
43
            if ($class = $other->attribute('class')) {
44
                $node_string .= '.'.implode('.', explode(' ', $class));
45
            }
46
        }
47
48
        return "$node_string ".$this->toString();
49
    }
50 1
51
    /**
52
     * Returns a string representation of the constraint.
53
     *
54
     * @return string
55
     */
56
    public function toString(): string
57
    {
58 1
        return "does not have '{$this->_type}' selector '{$this->_selector}', filter ".json_encode($this->_filters);
59
    }
60
}
61