42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
|
// @flow
|
||
|
|
||
|
function assertElement(element) {
|
||
|
if (!(element instanceof HTMLElement)) {
|
||
|
throw new Error('Must pass a DOM element to find/findAll(element, styledComponent)"');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function assertStyledComponent(styledComponent) {
|
||
|
if (
|
||
|
!(styledComponent.styledComponentId && typeof styledComponent.styledComponentId === 'string')
|
||
|
) {
|
||
|
throw new Error(
|
||
|
`${styledComponent.displayName ||
|
||
|
styledComponent.name ||
|
||
|
'Component'} is not a styled component.`
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function enzymeFind(wrapper /* : Object */, styledComponent /* : Object */) {
|
||
|
assertStyledComponent(styledComponent);
|
||
|
|
||
|
return wrapper.find(`.${styledComponent.styledComponentId}`);
|
||
|
}
|
||
|
|
||
|
function find(element /* : Element */, styledComponent /* : Object */) {
|
||
|
assertElement(element);
|
||
|
assertStyledComponent(styledComponent);
|
||
|
return element.querySelector(`.${styledComponent.styledComponentId}`);
|
||
|
}
|
||
|
|
||
|
function findAll(element /* : Element */, styledComponent /* : Object */) {
|
||
|
assertElement(element);
|
||
|
assertStyledComponent(styledComponent);
|
||
|
return element.querySelectorAll(`.${styledComponent.styledComponentId}`);
|
||
|
}
|
||
|
|
||
|
exports.enzymeFind = enzymeFind;
|
||
|
exports.find = find;
|
||
|
exports.findAll = findAll;
|