Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
squatto committed Jun 2, 2023
1 parent 4f8a83b commit f91fdcc
Showing 1 changed file with 19 additions and 118 deletions.
137 changes: 19 additions & 118 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,131 +10,32 @@ composer require quadraecom/pest-plugin-selectors --dev

### Usage

Using the following response body:
This package adds these methods:

```html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>quadraecom/pest-plugin-selectors test view</title>
</head>
<body>

<main>
<ul>
<li>List item 1</li>
<li>List item 2</li>
<li>List item 3</li>
<li>List item 4</li>
<li data-foo="bar">List item 5</li>
</ul>

<div class="single">
<div class="item">a value</div>
</div>

<div class="multiple-same">
<div class="item">same value</div>
<div class="item">same value</div>
<div class="item">same value</div>
</div>

<div class="multiple-different">
<div class="item">same value</div>
<div class="item">same value</div>
<div class="item">different value</div>
</div>
</main>

<footer data-foo="bar"></footer>

</body>
</html>
```php
getSelectorMatches(string $selector): DOMNodeList
```

The following tests will all pass:
This package adds these assertions:

```php
use PHPUnit\Framework\AssertionFailedError;

it('gets elements matching a selector', function () {
/** @var DOMNodeList $elements */
$elements = $this->get('/')
->getSelectorMatches('main > ul > li');

expect($elements)
->toBeInstanceOf(DOMNodeList::class)
->toHaveCount(5);
});

it("throws an exception when the selector doesn't have any matches", function () {
$this->expectException(AssertionFailedError::class);

$this->get('/')
->assertSelectorContains('main div.single .does-not-exist', 'a value');
});

it('asserts that the selector exists')
->get('/')
->assertSelectorExists('main div.single .item');

it('asserts that the selector does not exist')
->get('/')
->assertSelectorNotExists('main div.single .does-not-exist');

it("asserts that the selector matches the expected count")
->get('/')
->assertSelectorCount('main div.single .item', 1)
->assertSelectorCount('main div.multiple-same .item', 3)
->assertSelectorCount('main div.multiple-same .does-not-exist', 0);

it("asserts that any of a selector's matches contains a value")
->get('/')
->assertSelectorContains('main div.single .item', 'a value');

it("asserts that all of a selector's matches contain a value")
->get('/')
->assertSelectorsAllContain('main > ul > li', 'List item');

it("asserts that any of a selector's matches equals a value")
->get('/')
->assertSelectorEquals('main div.single .item', 'a value');

it("asserts that all of a selector's matches equal the same value")
->get('/')
->assertSelectorsAllEqual('main div.multiple-same .item', 'same value');

it("asserts that any of a selector's matches does not equal a value")
->get('/')
->assertSelectorNotEquals('main div.multiple-different .item', 'not the value')
->assertSelectorNotEquals('main div.multiple-different .item', 'same value')
->assertSelectorNotEquals('main div.multiple-different .item', 'different value');

it("asserts that all of a selector's matches do not equal a value")
->get('/')
->assertSelectorsAllNotEqual('main div.multiple-same .item', 'not the value');

it("asserts that an attribute exists on any of a selector's matches")
->get('/')
->assertSelectorAttributeExists('main ul li', 'data-foo');

it("asserts that an attribute does not exist on any of a selector's matches")
->get('/')
->assertSelectorAttributeNotExists('main ul li', 'data-does-not-exist');

it("asserts that an attribute equals a value on any of a selector's matches")
->get('/')
->assertSelectorAttributeEquals('main ul li', 'data-foo', 'bar');

it("asserts that an attribute does not equal a value on any of a selector's matches")
->get('/')
->assertSelectorAttributeNotEquals('main ul li', 'data-foo', 'not the value');
assertSelectorExists(string $selector)
assertSelectorNotExists(string $selector)
assertSelectorCount(string $selector, int $count)
assertSelectorContains(string $selector, string $value)
assertSelectorsAllContain(string $selector, string $value)
assertSelectorEquals(string $selector, string $value)
assertSelectorsAllEqual(string $selector, string $value)
assertSelectorNotEquals(string $selector, string $value)
assertSelectorsAllNotEqual(string $selector, string $value)
assertSelectorAttributeExists(string $selector, string $attribute)
assertSelectorAttributeNotExists(string $selector, string $attribute)
assertSelectorAttributeEquals(string $selector, string $attribute, $value)
assertSelectorAttributeNotEquals(string $selector, string $attribute, $value)
```

See [tests/Selectors.php](tests/Selectors.php) for example usage.

---

> If you want to start testing your application with Pest, visit the main
Expand Down

0 comments on commit f91fdcc

Please sign in to comment.