Skip to content

Commit a420f27

Browse files
Merge pull request #2107 from bendemboski/null-checks
Tighter null checks
2 parents 4b86b35 + 4731a3c commit a420f27

20 files changed

+264
-21
lines changed

packages/qunit-dom/lib/__tests__/does-not-exist.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,21 @@ describe('assert.dom(...).doesNotExist()', () => {
5454
},
5555
]);
5656
});
57+
58+
test('fails if passed null', () => {
59+
document.body.innerHTML = '<h1 class="baz">foo</h1>bar';
60+
61+
assert.dom(null).doesNotExist();
62+
63+
expect(assert.results).toEqual([
64+
{
65+
actual: 'Element <not found> does not exist',
66+
expected: 'Element <not found> does not exist',
67+
message: 'Element <not found> does not exist',
68+
result: true,
69+
},
70+
]);
71+
});
5772
});
5873

5974
test('custom message', () => {

packages/qunit-dom/lib/__tests__/does-not-have-attribute.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,17 @@ describe('assert.dom(...).doesNotHaveAttribute()', () => {
8383
]);
8484
});
8585

86+
test('fails for null', () => {
87+
assert.dom(null).doesNotHaveAttribute('disabled');
88+
89+
expect(assert.results).toEqual([
90+
{
91+
message: 'Element <unknown> should exist',
92+
result: false,
93+
},
94+
]);
95+
});
96+
8697
test('throws for unexpected parameter types', () => {
8798
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
8899
expect(() => assert.dom(5).doesNotHaveAttribute('disabled')).toThrow('Unexpected Parameter: 5');

packages/qunit-dom/lib/__tests__/does-not-have-class.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,17 @@ describe('assert.dom(...).doesNotHaveClass()', () => {
117117
]);
118118
});
119119

120+
test('fails for null', () => {
121+
assert.dom(null).doesNotHaveClass('foo');
122+
123+
expect(assert.results).toEqual([
124+
{
125+
message: 'Element <unknown> should exist',
126+
result: false,
127+
},
128+
]);
129+
});
130+
120131
test('throws for unexpected parameter types', () => {
121132
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
122133
expect(() => assert.dom(5).doesNotHaveClass('foo')).toThrow('Unexpected Parameter: 5');

packages/qunit-dom/lib/__tests__/does-not-have-style.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,18 @@ describe('assert.dom(...).doesNotHaveStyle()', () => {
9090
]);
9191
});
9292

93+
test('fails for null', () => {
94+
assert.dom(null).doesNotHaveStyle({
95+
opacity: 0,
96+
});
97+
expect(assert.results).toEqual([
98+
{
99+
message: 'Element <unknown> should exist',
100+
result: false,
101+
},
102+
]);
103+
});
104+
93105
test('throws for unexpected parameter types', () => {
94106
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
95107
expect(() => assert.dom(5).doesNotHaveStyle({ opacity: 1 })).toThrow('Unexpected Parameter: 5');

packages/qunit-dom/lib/__tests__/does-not-match-selector.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,21 @@ describe('assert.dom(...).doesNotMatchSelector()', () => {
8282
]);
8383
});
8484

85+
test('null passed', () => {
86+
assert.dom(null).doesNotMatchSelector('div>p:last-child');
87+
88+
expect(assert.results).toEqual([
89+
{
90+
actual: '0 elements, selected by null, did not also match the selector div>p:last-child.',
91+
expected:
92+
'0 elements, selected by null, did not also match the selector div>p:last-child.',
93+
message:
94+
'0 elements, selected by null, did not also match the selector div>p:last-child.',
95+
result: true,
96+
},
97+
]);
98+
});
99+
85100
test('multiple elements, some matching compareSelector', () => {
86101
assert.dom('p').doesNotMatchSelector('div>p');
87102

packages/qunit-dom/lib/__tests__/has-any-text.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,17 @@ describe('assert.dom(...).hasAnyText()', () => {
6464
]);
6565
});
6666

67+
test('fails for null', () => {
68+
assert.dom(null).hasAnyText();
69+
70+
expect(assert.results).toEqual([
71+
{
72+
message: 'Element <unknown> should exist',
73+
result: false,
74+
},
75+
]);
76+
});
77+
6778
test('throws for unexpected parameter types', () => {
6879
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
6980
expect(() => assert.dom(5).hasAnyText()).toThrow('Unexpected Parameter: 5');

packages/qunit-dom/lib/__tests__/has-any-value.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,17 @@ describe('assert.dom(...).hasAnyValue()', () => {
6565
]);
6666
});
6767

68+
test('fails for null', () => {
69+
assert.dom(null).hasAnyValue();
70+
71+
expect(assert.results).toEqual([
72+
{
73+
message: 'Element <unknown> should exist',
74+
result: false,
75+
},
76+
]);
77+
});
78+
6879
test('throws for unexpected parameter types', () => {
6980
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
7081
expect(() => assert.dom(5).hasAnyValue()).toThrow('Unexpected Parameter: 5');

packages/qunit-dom/lib/__tests__/has-attribute.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,17 @@ describe('assert.dom(...).hasAttribute()', () => {
238238
]);
239239
});
240240

241+
test('fails for null', () => {
242+
assert.dom(null).hasAttribute('foo');
243+
244+
expect(assert.results).toEqual([
245+
{
246+
message: 'Element <unknown> should exist',
247+
result: false,
248+
},
249+
]);
250+
});
251+
241252
test('throws for unexpected parameter types', () => {
242253
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
243254
expect(() => assert.dom(5).hasAttribute('foo')).toThrow('Unexpected Parameter: 5');

packages/qunit-dom/lib/__tests__/has-class.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,17 @@ describe('assert.dom(...).hasClass()', () => {
112112
]);
113113
});
114114

115+
test('fails for null', () => {
116+
assert.dom(null).hasClass('foo');
117+
118+
expect(assert.results).toEqual([
119+
{
120+
message: 'Element <unknown> should exist',
121+
result: false,
122+
},
123+
]);
124+
});
125+
115126
test('throws for unexpected parameter types', () => {
116127
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
117128
expect(() => assert.dom(5).hasClass('foo')).toThrow('Unexpected Parameter: 5');

packages/qunit-dom/lib/__tests__/has-no-text.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,17 @@ describe('assert.dom(...).hasNoText()', () => {
6262
]);
6363
});
6464

65+
test('fails for null', () => {
66+
assert.dom(null).hasNoText();
67+
68+
expect(assert.results).toEqual([
69+
{
70+
message: 'Element <unknown> should exist',
71+
result: false,
72+
},
73+
]);
74+
});
75+
6576
test('throws for unexpected parameter types', () => {
6677
//@ts-ignore -- These assertions are for JavaScript users who don't have type checking
6778
expect(() => assert.dom(5).hasNoText()).toThrow('Unexpected Parameter: 5');

0 commit comments

Comments
 (0)