Code Duplication    Length = 20-20 lines in 2 locations

src/Html/Contains.php 1 location

@@ 8-27 (lines=20) @@
5
use Symfony\Component\DomCrawler\Crawler;
6
use Psr7Unitesting\Utils\KeyValueConstraintTrait;
7
8
class Contains extends AbstractConstraint
9
{
10
    use KeyValueConstraintTrait;
11
12
    public function toString()
13
    {
14
        return sprintf('has at least one element matching with the selector "%s" that contains "%s"', $this->key, $this->expected);
15
    }
16
17
    protected function runMatches(Crawler $html)
18
    {
19
        $texts = $html->filter($this->key)->each(function ($node) {
20
            return trim($node->text());
21
        });
22
23
        return array_filter($texts, function ($value) {
24
            return strpos($value, $this->expected) !== false;
25
        });
26
    }
27
}
28

src/Html/NotContains.php 1 location

@@ 8-27 (lines=20) @@
5
use Symfony\Component\DomCrawler\Crawler;
6
use Psr7Unitesting\Utils\KeyValueConstraintTrait;
7
8
class NotContains extends AbstractConstraint
9
{
10
    use KeyValueConstraintTrait;
11
12
    public function toString()
13
    {
14
        return sprintf('has not any element matching with the selector "%s" and containing "%s"', $this->key, $this->expected);
15
    }
16
17
    protected function runMatches(Crawler $html)
18
    {
19
        $texts = $html->filter($this->key)->each(function ($node) {
20
            return trim($node->text());
21
        });
22
23
        return count(array_filter($texts, function ($value) {
24
            return strpos($value, $this->expected) !== false;
25
        })) === 0;
26
    }
27
}
28