Вход Регистрация
Файл: gapps/vendor/hamcrest/hamcrest-php/tests/Hamcrest/Xml/HasXPathTest.php
Строк: 140
<?php
namespace HamcrestXml;

class 
HasXPathTest extends HamcrestAbstractMatcherTest
{
    protected static 
$xml;
    protected static 
$doc;
    protected static 
$html;

    public static function 
setUpBeforeClass()
    {
        
self::$xml = <<<XML
<?xml version="1.0"?>
<users>
    <user>
        <id>alice</id>
        <name>Alice Frankel</name>
        <role>admin</role>
    </user>
    <user>
        <id>bob</id>
        <name>Bob Frankel</name>
        <role>user</role>
    </user>
    <user>
        <id>charlie</id>
        <name>Charlie Chan</name>
        <role>user</role>
    </user>
</users>
XML;
        
self::$doc = new DOMDocument();
        
self::$doc->loadXML(self::$xml);

        
self::$html = <<<HTML
<html>
    <head>
        <title>Home Page</title>
    </head>
    <body>
        <h1>Heading</h1>
        <p>Some text</p>
    </body>
</html>
HTML;
    }

    protected function 
createMatcher()
    {
        return 
HamcrestXmlHasXPath::hasXPath('/users/user');
    }

    public function 
testMatchesWhenXPathIsFound()
    {
        
assertThat('one match'self::$dochasXPath('user[id = "bob"]'));
        
assertThat('two matches'self::$dochasXPath('user[role = "user"]'));
    }

    public function 
testDoesNotMatchWhenXPathIsNotFound()
    {
        
assertThat(
            
'no match',
            
self::$doc,
            
not(hasXPath('user[contains(id, "frank")]'))
        );
    }

    public function 
testMatchesWhenExpressionWithoutMatcherEvaluatesToTrue()
    {
        
assertThat(
            
'one match',
            
self::$doc,
            
hasXPath('count(user[id = "bob"])')
        );
    }

    public function 
testDoesNotMatchWhenExpressionWithoutMatcherEvaluatesToFalse()
    {
        
assertThat(
            
'no matches',
            
self::$doc,
            
not(hasXPath('count(user[id = "frank"])'))
        );
    }

    public function 
testMatchesWhenExpressionIsEqual()
    {
        
assertThat(
            
'one match',
            
self::$doc,
            
hasXPath('count(user[id = "bob"])'1)
        );
        
assertThat(
            
'two matches',
            
self::$doc,
            
hasXPath('count(user[role = "user"])'2)
        );
    }

    public function 
testDoesNotMatchWhenExpressionIsNotEqual()
    {
        
assertThat(
            
'no match',
            
self::$doc,
            
not(hasXPath('count(user[id = "frank"])'2))
        );
        
assertThat(
            
'one match',
            
self::$doc,
            
not(hasXPath('count(user[role = "admin"])'2))
        );
    }

    public function 
testMatchesWhenContentMatches()
    {
        
assertThat(
            
'one match',
            
self::$doc,
            
hasXPath('user/name'containsString('ice'))
        );
        
assertThat(
            
'two matches',
            
self::$doc,
            
hasXPath('user/role'equalTo('user'))
        );
    }

    public function 
testDoesNotMatchWhenContentDoesNotMatch()
    {
        
assertThat(
            
'no match',
            
self::$doc,
            
not(hasXPath('user/name'containsString('Bobby')))
        );
        
assertThat(
            
'no matches',
            
self::$doc,
            
not(hasXPath('user/role'equalTo('owner')))
        );
    }

    public function 
testProvidesConvenientShortcutForHasXPathEqualTo()
    {
        
assertThat('matches'self::$dochasXPath('count(user)'3));
        
assertThat('matches'self::$dochasXPath('user[2]/id''bob'));
    }

    public function 
testProvidesConvenientShortcutForHasXPathCountEqualTo()
    {
        
assertThat('matches'self::$dochasXPath('user[id = "charlie"]'1));
    }

    public function 
testMatchesAcceptsXmlString()
    {
        
assertThat('accepts XML string'self::$xmlhasXPath('user'));
    }

    public function 
testMatchesAcceptsHtmlString()
    {
        
assertThat('accepts HTML string'self::$htmlhasXPath('body/h1''Heading'));
    }

    public function 
testHasAReadableDescription()
    {
        
$this->assertDescription(
            
'XML or HTML document with XPath "/users/user"',
            
hasXPath('/users/user')
        );
        
$this->assertDescription(
            
'XML or HTML document with XPath "count(/users/user)" <2>',
            
hasXPath('/users/user'2)
        );
        
$this->assertDescription(
            
'XML or HTML document with XPath "/users/user/name"'
            
' a string starting with "Alice"',
            
hasXPath('/users/user/name'startsWith('Alice'))
        );
    }

    public function 
testHasAReadableMismatchDescription()
    {
        
$this->assertMismatchDescription(
            
'XPath returned no results',
            
hasXPath('/users/name'),
            
self::$doc
        
);
        
$this->assertMismatchDescription(
            
'XPath expression result was <3F>',
            
hasXPath('/users/user'2),
            
self::$doc
        
);
        
$this->assertMismatchDescription(
            
'XPath returned ["alice", "bob", "charlie"]',
            
hasXPath('/users/user/id''Frank'),
            
self::$doc
        
);
    }
}
Онлайн: 0
Реклама