index.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // @flow
  2. function assertElement(element) {
  3. if (!(element instanceof HTMLElement)) {
  4. throw new Error('Must pass a DOM element to find/findAll(element, styledComponent)"');
  5. }
  6. }
  7. function assertStyledComponent(styledComponent) {
  8. if (
  9. !(styledComponent.styledComponentId && typeof styledComponent.styledComponentId === 'string')
  10. ) {
  11. throw new Error(
  12. `${styledComponent.displayName ||
  13. styledComponent.name ||
  14. 'Component'} is not a styled component.`
  15. );
  16. }
  17. }
  18. function enzymeFind(wrapper /* : Object */, styledComponent /* : Object */) {
  19. assertStyledComponent(styledComponent);
  20. return wrapper.find(`.${styledComponent.styledComponentId}`);
  21. }
  22. function find(element /* : Element */, styledComponent /* : Object */) {
  23. assertElement(element);
  24. assertStyledComponent(styledComponent);
  25. return element.querySelector(`.${styledComponent.styledComponentId}`);
  26. }
  27. function findAll(element /* : Element */, styledComponent /* : Object */) {
  28. assertElement(element);
  29. assertStyledComponent(styledComponent);
  30. return element.querySelectorAll(`.${styledComponent.styledComponentId}`);
  31. }
  32. exports.enzymeFind = enzymeFind;
  33. exports.find = find;
  34. exports.findAll = findAll;