Skip to content

Commit

Permalink
Merge pull request #610 from Turbo87/chaining
Browse files Browse the repository at this point in the history
Add support for assertion chaining
  • Loading branch information
Turbo87 authored Feb 2, 2020
2 parents a325439 + 50aeab0 commit 17f902b
Show file tree
Hide file tree
Showing 32 changed files with 461 additions and 79 deletions.
11 changes: 11 additions & 0 deletions lib/__tests__/does-not-exist.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,15 @@ describe('assert.dom(...).doesNotExist()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="baz">foo</h1>bar';

assert
.dom('h2')
.doesNotExist()
.doesNotExist();

expect(assert.results.length).toEqual(2);
});
});
9 changes: 9 additions & 0 deletions lib/__tests__/does-not-have-attribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,13 @@ describe('assert.dom(...).doesNotHaveAttribute()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
assert
.dom('input')
.doesNotHaveAttribute('disabled')
.doesNotHaveAttribute('required');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/does-not-have-class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,4 +134,15 @@ describe('assert.dom(...).doesNotHaveClass()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.doesNotHaveClass('foo')
.doesNotHaveClass('bar');

expect(assert.results.length).toEqual(2);
});
});
9 changes: 9 additions & 0 deletions lib/__tests__/does-not-have-style.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,13 @@ describe('assert.dom(...).doesNotHaveStyle()', () => {
'Missing style expectations. There must be at least one style property in the passed in expectation object.'
);
});

test('supports chaining', () => {
assert
.dom('h2')
.doesNotHaveStyle({ left: 0 })
.doesNotHaveStyle({ top: 0 });

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/does-not-have-tagname.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,4 +153,15 @@ describe('assert.dom(...).doesNotHaveTagName()', () => {
);
});
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.doesNotHaveTagName('div')
.doesNotHaveTagName('h1');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/does-not-include-text.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,4 +130,15 @@ describe('assert.dom(...).doesNotIncludeText()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.doesNotIncludeText('foo')
.doesNotIncludeText('bar');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/does-not-match-selector.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,15 @@ describe('assert.dom(...).doesNotMatchSelector()', () => {
]);
});
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.doesNotMatchSelector('.foo')
.doesNotMatchSelector('.bar');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/exists.ts
Original file line number Diff line number Diff line change
Expand Up @@ -179,4 +179,15 @@ describe('assert.dom(...).exists()', () => {
//@ts-ignore
expect(() => assert.dom(document).exists()).toThrow('Unexpected Parameter: [object Document]');
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.exists()
.exists();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-any-text.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,15 @@ describe('assert.dom(...).hasAnyText()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasAnyText()
.hasAnyText();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-any-value.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,15 @@ describe('assert.dom(...).hasAnyValue()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input value="foo"/>';

assert
.dom('input')
.hasAnyValue()
.hasAnyValue();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-attribute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -269,4 +269,15 @@ describe('assert.dom(...).hasAttribute()', () => {
},
]);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasAttribute('class')
.hasAttribute('class', 'bar');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,15 @@ describe('assert.dom(...).hasClass()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasClass('foo')
.hasClass('bar');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-no-text.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,15 @@ describe('assert.dom(...).hasNoText()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasNoText()
.hasNoText();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-no-value.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,15 @@ describe('assert.dom(...).hasNoValue()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input value="foo" />';

assert
.dom('input')
.hasNoValue()
.hasNoValue();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-property.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,15 @@ describe('assert.dom(...).hasProperty()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasProperty('className', 'foo')
.hasProperty('tagName', 'BAR');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-style.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,15 @@ describe('assert.dom(...).hasStyle()', () => {
'Missing style expectations. There must be at least one style property in the passed in expectation object.'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasStyle({ top: 42 })
.hasStyle({ left: 0 });

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-tagname.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,15 @@ describe('assert.dom(...).hasTagName()', () => {
);
});
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasTagName('h1')
.hasTagName('foo');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-text.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,15 @@ describe('assert.dom(...).hasText()', () => {
);
});
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.hasText('foo')
.hasText('bar');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/has-value.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,4 +234,15 @@ describe('assert.dom(...).hasValue()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input value="foo" />';

assert
.dom('input')
.hasValue('foo')
.hasValue('bar');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/includes-text.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,4 +224,15 @@ describe('assert.dom(...).includesText()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<h1 class="bar">foo</h1>';

assert
.dom('h1')
.includesText('foo')
.includesText('bar');

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/is-checked.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,4 +188,15 @@ describe('assert.dom(...).isChecked()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input type="checkbox" />';

assert
.dom('input')
.isChecked()
.isChecked();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/is-disabled.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,4 +161,15 @@ describe('assert.dom(...).isDisabled()', () => {
'Unexpected Element Type: [object HTMLDivElement]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input disabled />';

assert
.dom('input')
.isDisabled()
.isDisabled();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/is-focused.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,4 +134,15 @@ describe('assert.dom(...).isFocused()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input type="checkbox" />';

assert
.dom('input')
.isFocused()
.isFocused();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/is-not-checked.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,4 +188,15 @@ describe('assert.dom(...).isNotChecked()', () => {
'Unexpected Parameter: [object Document]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input type="checkbox" />';

assert
.dom('input')
.isNotChecked()
.isNotChecked();

expect(assert.results.length).toEqual(2);
});
});
11 changes: 11 additions & 0 deletions lib/__tests__/is-not-disabled.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,4 +161,15 @@ describe('assert.dom(...).isNotDisabled()', () => {
'Unexpected Element Type: [object HTMLDivElement]'
);
});

test('supports chaining', () => {
document.body.innerHTML = '<input type="checkbox" />';

assert
.dom('input')
.isNotDisabled()
.isNotDisabled();

expect(assert.results.length).toEqual(2);
});
});
Loading

0 comments on commit 17f902b

Please sign in to comment.