@najemi-software/vitest-dom 0.13.0 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extend-expect.d.ts +1 -3
- package/dist/extend-expect.js +2 -6
- package/dist/extend-expect.js.map +1 -1
- package/dist/matchers/css-parse.d.ts +30 -0
- package/dist/matchers/css-parse.js +514 -0
- package/dist/matchers/css-parse.js.map +1 -0
- package/dist/matchers/to-be-checked.d.ts +2 -0
- package/dist/matchers/to-be-checked.js +52 -0
- package/dist/matchers/to-be-checked.js.map +1 -0
- package/dist/matchers/to-be-disabled.d.ts +3 -0
- package/dist/matchers/to-be-disabled.js +74 -0
- package/dist/matchers/to-be-disabled.js.map +1 -0
- package/dist/matchers/to-be-empty-dom-element.d.ts +2 -0
- package/dist/matchers/to-be-empty-dom-element.js +31 -0
- package/dist/matchers/to-be-empty-dom-element.js.map +1 -0
- package/dist/matchers/to-be-empty.d.ts +3 -0
- package/dist/matchers/to-be-empty.js +18 -0
- package/dist/matchers/to-be-empty.js.map +1 -0
- package/dist/matchers/to-be-in-the-document.d.ts +2 -0
- package/dist/matchers/to-be-in-the-document.js +24 -0
- package/dist/matchers/to-be-in-the-document.js.map +1 -0
- package/dist/matchers/to-be-in-the-dom.d.ts +3 -0
- package/dist/matchers/to-be-in-the-dom.js +23 -0
- package/dist/matchers/to-be-in-the-dom.js.map +1 -0
- package/dist/matchers/to-be-invalid.d.ts +3 -0
- package/dist/matchers/to-be-invalid.js +50 -0
- package/dist/matchers/to-be-invalid.js.map +1 -0
- package/dist/matchers/to-be-partially-checked.d.ts +2 -0
- package/dist/matchers/to-be-partially-checked.js +36 -0
- package/dist/matchers/to-be-partially-checked.js.map +1 -0
- package/dist/matchers/to-be-required.d.ts +2 -0
- package/dist/matchers/to-be-required.js +40 -0
- package/dist/matchers/to-be-required.js.map +1 -0
- package/dist/matchers/to-be-visible.d.ts +2 -0
- package/dist/matchers/to-be-visible.js +46 -0
- package/dist/matchers/to-be-visible.js.map +1 -0
- package/dist/matchers/to-contain-element.d.ts +2 -0
- package/dist/matchers/to-contain-element.js +19 -0
- package/dist/matchers/to-contain-element.js.map +1 -0
- package/dist/matchers/to-contain-html.d.ts +2 -0
- package/dist/matchers/to-contain-html.js +25 -0
- package/dist/matchers/to-contain-html.js.map +1 -0
- package/dist/matchers/to-have-accessible-description.d.ts +4 -0
- package/dist/matchers/to-have-accessible-description.js +28 -0
- package/dist/matchers/to-have-accessible-description.js.map +1 -0
- package/dist/matchers/to-have-accessible-errormessage.d.ts +2 -0
- package/dist/matchers/to-have-accessible-errormessage.js +48 -0
- package/dist/matchers/to-have-accessible-errormessage.js.map +1 -0
- package/dist/matchers/to-have-accessible-name.d.ts +3 -0
- package/dist/matchers/to-have-accessible-name.js +27 -0
- package/dist/matchers/to-have-accessible-name.js.map +1 -0
- package/dist/matchers/to-have-attribute.d.ts +2 -0
- package/dist/matchers/to-have-attribute.js +34 -0
- package/dist/matchers/to-have-attribute.js.map +1 -0
- package/dist/matchers/to-have-class.d.ts +2 -0
- package/dist/matchers/to-have-class.js +56 -0
- package/dist/matchers/to-have-class.js.map +1 -0
- package/dist/matchers/to-have-description.d.ts +4 -0
- package/dist/matchers/to-have-description.js +30 -0
- package/dist/matchers/to-have-description.js.map +1 -0
- package/dist/matchers/to-have-display-value.d.ts +2 -0
- package/dist/matchers/to-have-display-value.js +31 -0
- package/dist/matchers/to-have-display-value.js.map +1 -0
- package/dist/matchers/to-have-errormessage.d.ts +3 -0
- package/dist/matchers/to-have-errormessage.js +39 -0
- package/dist/matchers/to-have-errormessage.js.map +1 -0
- package/dist/matchers/to-have-focus.d.ts +2 -0
- package/dist/matchers/to-have-focus.js +22 -0
- package/dist/matchers/to-have-focus.js.map +1 -0
- package/dist/matchers/to-have-form-values.d.ts +2 -0
- package/dist/matchers/to-have-form-values.js +67 -0
- package/dist/matchers/to-have-form-values.js.map +1 -0
- package/dist/matchers/to-have-style.d.ts +2 -0
- package/dist/matchers/to-have-style.js +59 -0
- package/dist/matchers/to-have-style.js.map +1 -0
- package/dist/matchers/to-have-text-content.d.ts +4 -0
- package/dist/matchers/to-have-text-content.js +18 -0
- package/dist/matchers/to-have-text-content.js.map +1 -0
- package/dist/matchers/to-have-value.d.ts +2 -0
- package/dist/matchers/to-have-value.js +27 -0
- package/dist/matchers/to-have-value.js.map +1 -0
- package/dist/matchers/types.d.ts +13 -0
- package/dist/matchers/types.js +2 -0
- package/dist/matchers/types.js.map +1 -0
- package/dist/matchers/utils.d.ts +43 -0
- package/dist/matchers/utils.js +217 -0
- package/dist/matchers/utils.js.map +1 -0
- package/dist/matchers.d.ts +682 -83
- package/dist/matchers.js +25 -56
- package/dist/matchers.js.map +1 -1
- package/package.json +9 -5
- package/dist/chunk-DARZWRGS.js +0 -1546
- package/dist/chunk-DARZWRGS.js.map +0 -1
- package/dist/matchers-CEKfObS0.d.ts +0 -661
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import isEqual from "lodash-es/isEqual.js";
|
|
2
|
+
import isFunction from "lodash-es/isFunction.js";
|
|
3
|
+
import redent from "redent";
|
|
4
|
+
import cssParse from "./css-parse.js";
|
|
5
|
+
class GenericTypeError extends Error {
|
|
6
|
+
constructor(expectedString, received, matcherFn, context) {
|
|
7
|
+
super();
|
|
8
|
+
const printWithType = "printWithType" in context.utils && isFunction(context.utils.printWithType)
|
|
9
|
+
? context.utils.printWithType
|
|
10
|
+
: _printWithType;
|
|
11
|
+
if (Error.captureStackTrace) {
|
|
12
|
+
Error.captureStackTrace(this, matcherFn);
|
|
13
|
+
}
|
|
14
|
+
let withType = "";
|
|
15
|
+
try {
|
|
16
|
+
withType = printWithType("Received", received, context.utils.printReceived);
|
|
17
|
+
}
|
|
18
|
+
catch (e) {
|
|
19
|
+
// Can throw for Document:
|
|
20
|
+
// https://github.com/jsdom/jsdom/issues/2304
|
|
21
|
+
}
|
|
22
|
+
this.message = [
|
|
23
|
+
context.utils.matcherHint(`${context.isNot ? ".not" : ""}.${matcherFn.name}`, "received", ""),
|
|
24
|
+
"",
|
|
25
|
+
`${context.utils.RECEIVED_COLOR("received")} value must ${expectedString}.`,
|
|
26
|
+
withType,
|
|
27
|
+
].join("\n");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
class HtmlElementTypeError extends GenericTypeError {
|
|
31
|
+
constructor(element, matcherFn, context) {
|
|
32
|
+
super("be an HTMLElement or an SVGElement", element, matcherFn, context);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
class NodeTypeError extends GenericTypeError {
|
|
36
|
+
constructor(element, matcherFn, context) {
|
|
37
|
+
super("be a Node", element, matcherFn, context);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function checkHasWindow(htmlElement, ErrorClass, matcherFn, context) {
|
|
41
|
+
if (!htmlElement || !htmlElement.ownerDocument || !htmlElement.ownerDocument.defaultView) {
|
|
42
|
+
throw new ErrorClass(htmlElement, matcherFn, context);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function checkNode(node, matcherFn, context) {
|
|
46
|
+
checkHasWindow(node, NodeTypeError, matcherFn, context);
|
|
47
|
+
const window = node.ownerDocument.defaultView;
|
|
48
|
+
if (!(node instanceof window.Node)) {
|
|
49
|
+
throw new NodeTypeError(node, matcherFn, context);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function checkHtmlElement(htmlElement, matcher, context) {
|
|
53
|
+
checkHasWindow(htmlElement, HtmlElementTypeError, matcher, context);
|
|
54
|
+
const window = htmlElement.ownerDocument.defaultView;
|
|
55
|
+
if (!(htmlElement instanceof window.HTMLElement) &&
|
|
56
|
+
// @ts-expect-error
|
|
57
|
+
!(htmlElement instanceof window.SVGElement)) {
|
|
58
|
+
throw new HtmlElementTypeError(htmlElement, matcher, context);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
class InvalidCSSError extends Error {
|
|
62
|
+
constructor(received, matcherFn, context) {
|
|
63
|
+
super();
|
|
64
|
+
if (Error.captureStackTrace) {
|
|
65
|
+
Error.captureStackTrace(this, matcherFn);
|
|
66
|
+
}
|
|
67
|
+
this.message = [
|
|
68
|
+
received.message,
|
|
69
|
+
"",
|
|
70
|
+
context.utils.RECEIVED_COLOR(`Failing css:`),
|
|
71
|
+
context.utils.RECEIVED_COLOR(`${received.css}`),
|
|
72
|
+
].join("\n");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function parseCSS(css, matcherFn, context) {
|
|
76
|
+
const ast = cssParse(`selector { ${css} }`, { silent: true }).stylesheet;
|
|
77
|
+
if (ast.parsingErrors && ast.parsingErrors.length > 0) {
|
|
78
|
+
const { reason, line } = ast.parsingErrors[0];
|
|
79
|
+
throw new InvalidCSSError({
|
|
80
|
+
css,
|
|
81
|
+
message: `Syntax error parsing expected css: ${reason} on line: ${line}`,
|
|
82
|
+
}, matcherFn, context);
|
|
83
|
+
}
|
|
84
|
+
const parsedRules = ast.rules[0].declarations
|
|
85
|
+
.filter((d) => d.type === "declaration")
|
|
86
|
+
.reduce((obj, { property, value }) => Object.assign(obj, { [property]: value }), {});
|
|
87
|
+
return parsedRules;
|
|
88
|
+
}
|
|
89
|
+
function display(context, value) {
|
|
90
|
+
return typeof value === "string" ? value : context.utils.stringify(value);
|
|
91
|
+
}
|
|
92
|
+
function getMessage(context, matcher, expectedLabel, expectedValue, receivedLabel, receivedValue) {
|
|
93
|
+
return [
|
|
94
|
+
`${matcher}\n`,
|
|
95
|
+
`${expectedLabel}:\n${context.utils.EXPECTED_COLOR(redent(display(context, expectedValue), 2))}`,
|
|
96
|
+
`${receivedLabel}:\n${context.utils.RECEIVED_COLOR(redent(display(context, receivedValue), 2))}`,
|
|
97
|
+
].join("\n");
|
|
98
|
+
}
|
|
99
|
+
function matches(textToMatch, matcher) {
|
|
100
|
+
if (matcher instanceof RegExp) {
|
|
101
|
+
return matcher.test(textToMatch);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return textToMatch.includes(String(matcher));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function deprecate(name, replacementText) {
|
|
108
|
+
// Notify user that they are using deprecated functionality.
|
|
109
|
+
// eslint-disable-next-line no-console
|
|
110
|
+
console.warn(`Warning: ${name} has been deprecated and will be removed in future updates.`, replacementText);
|
|
111
|
+
}
|
|
112
|
+
function normalize(text) {
|
|
113
|
+
return text.replace(/\s+/g, " ").trim();
|
|
114
|
+
}
|
|
115
|
+
function getTag(element) {
|
|
116
|
+
return element.tagName && element.tagName.toLowerCase();
|
|
117
|
+
}
|
|
118
|
+
function getSelectValue({ multiple, options }) {
|
|
119
|
+
const selectedOptions = [...options].filter((option) => option.selected);
|
|
120
|
+
if (multiple) {
|
|
121
|
+
return [...selectedOptions].map((opt) => opt.value);
|
|
122
|
+
}
|
|
123
|
+
if (selectedOptions.length === 0) {
|
|
124
|
+
return undefined; // Couldn't make this happen, but just in case
|
|
125
|
+
}
|
|
126
|
+
return selectedOptions[0].value;
|
|
127
|
+
}
|
|
128
|
+
function getInputValue(inputElement) {
|
|
129
|
+
switch (inputElement.type) {
|
|
130
|
+
case "number":
|
|
131
|
+
return inputElement.value === "" ? null : Number(inputElement.value);
|
|
132
|
+
case "checkbox":
|
|
133
|
+
return inputElement.checked;
|
|
134
|
+
default:
|
|
135
|
+
return inputElement.value;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function getSingleElementValue(element) {
|
|
139
|
+
if (!element) {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
switch (element.tagName.toLowerCase()) {
|
|
143
|
+
case "input":
|
|
144
|
+
return getInputValue(element);
|
|
145
|
+
case "select":
|
|
146
|
+
return getSelectValue(element);
|
|
147
|
+
default:
|
|
148
|
+
return element.value;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function compareArraysAsSet(a, b) {
|
|
152
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
153
|
+
return isEqual(new Set(a), new Set(b));
|
|
154
|
+
}
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
function toSentence(array, { wordConnector = ", ", lastWordConnector = " and " } = {}) {
|
|
158
|
+
return [array.slice(0, -1).join(wordConnector), array[array.length - 1]].join(array.length > 1 ? lastWordConnector : "");
|
|
159
|
+
}
|
|
160
|
+
export { HtmlElementTypeError, NodeTypeError, checkHtmlElement, checkNode, parseCSS, deprecate, getMessage, matches, normalize, getTag, getSingleElementValue, compareArraysAsSet, toSentence, };
|
|
161
|
+
function _printWithType(name, value, print) {
|
|
162
|
+
const type = getType(value);
|
|
163
|
+
const hasType = type !== "null" && type !== "undefined" ? `${name} has type: ${type}\n` : "";
|
|
164
|
+
const hasValue = `${name} has value: ${print(value)}`;
|
|
165
|
+
return hasType + hasValue;
|
|
166
|
+
}
|
|
167
|
+
// get the type of a value with handling the edge cases like `typeof []`
|
|
168
|
+
// and `typeof null`
|
|
169
|
+
export function getType(value) {
|
|
170
|
+
if (value === undefined) {
|
|
171
|
+
return "undefined";
|
|
172
|
+
}
|
|
173
|
+
else if (value === null) {
|
|
174
|
+
return "null";
|
|
175
|
+
}
|
|
176
|
+
else if (Array.isArray(value)) {
|
|
177
|
+
return "array";
|
|
178
|
+
}
|
|
179
|
+
else if (typeof value === "boolean") {
|
|
180
|
+
return "boolean";
|
|
181
|
+
}
|
|
182
|
+
else if (typeof value === "function") {
|
|
183
|
+
return "function";
|
|
184
|
+
}
|
|
185
|
+
else if (typeof value === "number") {
|
|
186
|
+
return "number";
|
|
187
|
+
}
|
|
188
|
+
else if (typeof value === "string") {
|
|
189
|
+
return "string";
|
|
190
|
+
}
|
|
191
|
+
else if (typeof value === "bigint") {
|
|
192
|
+
return "bigint";
|
|
193
|
+
}
|
|
194
|
+
else if (typeof value === "object") {
|
|
195
|
+
if (value != null) {
|
|
196
|
+
if (value.constructor === RegExp) {
|
|
197
|
+
return "regexp";
|
|
198
|
+
}
|
|
199
|
+
else if (value.constructor === Map) {
|
|
200
|
+
return "map";
|
|
201
|
+
}
|
|
202
|
+
else if (value.constructor === Set) {
|
|
203
|
+
return "set";
|
|
204
|
+
}
|
|
205
|
+
else if (value.constructor === Date) {
|
|
206
|
+
return "date";
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return "object";
|
|
210
|
+
}
|
|
211
|
+
else if (typeof value === "symbol") {
|
|
212
|
+
return "symbol";
|
|
213
|
+
}
|
|
214
|
+
throw new Error(`value of unknown type: ${value}`);
|
|
215
|
+
}
|
|
216
|
+
export const isPrimitive = (value) => Object(value) !== value;
|
|
217
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/matchers/utils.ts"],"names":[],"mappings":"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"}
|