@atlaskit/smart-card 22.1.0 → 22.2.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.
Files changed (44) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/__tests_external__/index.js +53 -0
  3. package/dist/cjs/__tests_external__/page-objects/BaseCard.js +115 -0
  4. package/dist/cjs/__tests_external__/page-objects/BlockCard.js +43 -0
  5. package/dist/cjs/__tests_external__/page-objects/EmbedCard.js +43 -0
  6. package/dist/cjs/__tests_external__/page-objects/InlineCard.js +43 -0
  7. package/dist/cjs/__tests_external__/test-cases/card.js +27 -0
  8. package/dist/cjs/__tests_external__/test-cases/embed.js +27 -0
  9. package/dist/cjs/__tests_external__/test-cases/inline.js +27 -0
  10. package/dist/cjs/__tests_external__/test-cases/types.js +5 -0
  11. package/dist/cjs/state/hooks/usePrefetch.js +26 -14
  12. package/dist/cjs/version.json +1 -1
  13. package/dist/cjs/view/CardWithUrl/loader.js +10 -10
  14. package/dist/cjs/view/InlineCard/IconAndTitleLayout/styled.js +2 -2
  15. package/dist/es2019/__tests_external__/index.js +6 -0
  16. package/dist/es2019/__tests_external__/page-objects/BaseCard.js +61 -0
  17. package/dist/es2019/__tests_external__/page-objects/BlockCard.js +8 -0
  18. package/dist/es2019/__tests_external__/page-objects/EmbedCard.js +8 -0
  19. package/dist/es2019/__tests_external__/page-objects/InlineCard.js +8 -0
  20. package/dist/es2019/__tests_external__/test-cases/card.js +14 -0
  21. package/dist/es2019/__tests_external__/test-cases/embed.js +14 -0
  22. package/dist/es2019/__tests_external__/test-cases/inline.js +14 -0
  23. package/dist/es2019/__tests_external__/test-cases/types.js +1 -0
  24. package/dist/es2019/state/hooks/usePrefetch.js +9 -4
  25. package/dist/es2019/version.json +1 -1
  26. package/dist/es2019/view/CardWithUrl/loader.js +10 -10
  27. package/dist/es2019/view/InlineCard/IconAndTitleLayout/styled.js +0 -2
  28. package/dist/esm/__tests_external__/index.js +6 -0
  29. package/dist/esm/__tests_external__/page-objects/BaseCard.js +101 -0
  30. package/dist/esm/__tests_external__/page-objects/BlockCard.js +28 -0
  31. package/dist/esm/__tests_external__/page-objects/EmbedCard.js +28 -0
  32. package/dist/esm/__tests_external__/page-objects/InlineCard.js +28 -0
  33. package/dist/esm/__tests_external__/test-cases/card.js +16 -0
  34. package/dist/esm/__tests_external__/test-cases/embed.js +16 -0
  35. package/dist/esm/__tests_external__/test-cases/inline.js +16 -0
  36. package/dist/esm/__tests_external__/test-cases/types.js +1 -0
  37. package/dist/esm/state/hooks/usePrefetch.js +26 -14
  38. package/dist/esm/version.json +1 -1
  39. package/dist/esm/view/CardWithUrl/loader.js +10 -10
  40. package/dist/esm/view/InlineCard/IconAndTitleLayout/styled.js +2 -2
  41. package/dist/types/view/Card/index.d.ts +1 -1
  42. package/dist/types/view/HoverCard/index.d.ts +1 -1
  43. package/package.json +22 -22
  44. package/report.api.md +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 22.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`9a0c1c39d27`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9a0c1c39d27) - Rethrow errors from child component of smart-card so all non API errors will be handed to parent of smart-card
8
+
9
+ ## 22.1.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [`46059beebbf`](https://bitbucket.org/atlassian/atlassian-frontend/commits/46059beebbf) - - include **tests_external** in build
14
+ - replace usage of @local-cypress package with @cypress
15
+ - bump @cypress from ^6.4.0 to ^7.7.0
16
+ - import cypress types into @atlaskit/in-product-testing tsconfig
17
+
18
+ ## 22.1.1
19
+
20
+ ### Patch Changes
21
+
22
+ - [`9c7cc4139ec`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9c7cc4139ec) - Partially remove Lozenge CSS override which conflicts with updated Lozenge styling.
23
+ - Updated dependencies
24
+
3
25
  ## 22.1.0
4
26
 
5
27
  ### Minor Changes
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "BlockCardPageObject", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _BlockCard.BlockCardPageObject;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "EmbedCardPageObject", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _EmbedCard.EmbedCardPageObject;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "InlineCardPageObject", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _InlineCard.InlineCardPageObject;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "blockSmartLinkRendersTestCase", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _card.blockSmartLinkRendersTestCase;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "embedSmartLinkRendersTestCase", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _embed.embedSmartLinkRendersTestCase;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "inlineSmartLinkRendersTestCase", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _inline.inlineSmartLinkRendersTestCase;
40
+ }
41
+ });
42
+
43
+ var _InlineCard = require("./page-objects/InlineCard");
44
+
45
+ var _BlockCard = require("./page-objects/BlockCard");
46
+
47
+ var _EmbedCard = require("./page-objects/EmbedCard");
48
+
49
+ var _inline = require("./test-cases/inline");
50
+
51
+ var _card = require("./test-cases/card");
52
+
53
+ var _embed = require("./test-cases/embed");
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.BaseCardPageObject = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
+
22
+ var _inProductTesting = require("@atlaskit/in-product-testing");
23
+
24
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
25
+
26
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
27
+
28
+ var BaseCardPageObject = /*#__PURE__*/function (_InProductTestPageObj) {
29
+ (0, _inherits2.default)(BaseCardPageObject, _InProductTestPageObj);
30
+
31
+ var _super = _createSuper(BaseCardPageObject);
32
+
33
+ function BaseCardPageObject(cy, appearance) {
34
+ var _this;
35
+
36
+ (0, _classCallCheck2.default)(this, BaseCardPageObject);
37
+ _this = _super.call(this, cy);
38
+ _this.cy = cy;
39
+ _this.appearance = appearance;
40
+ return _this;
41
+ }
42
+
43
+ (0, _createClass2.default)(BaseCardPageObject, [{
44
+ key: "_toSelector",
45
+ value: function _toSelector(appearance, status) {
46
+ var viewSelector = status.replace(/_/g, '-');
47
+ return this.toTestId("".concat(appearance, "-card-").concat(viewSelector, "-view"));
48
+ }
49
+ }, {
50
+ key: "expectCardReady",
51
+ value: function expectCardReady() {
52
+ var _this2 = this;
53
+
54
+ var numOfCards = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
55
+ var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'resolved';
56
+
57
+ var selector = this._toSelector(this.appearance, status);
58
+
59
+ return this.cy // NOTE: `timeout` used since Smart Links rely on a network response.
60
+ .get(selector, {
61
+ timeout: BaseCardPageObject.CARD_TIMEOUT
62
+ }).should('have.length', numOfCards).each(function (element) {
63
+ _this2.cy.wrap(element) // NOTE: `be.visible` is used to ensure the file is still visible
64
+ // whilst it is being uploaded.
65
+ .should('be.visible');
66
+ });
67
+ }
68
+ }, {
69
+ key: "expectCardNotExists",
70
+ value: function expectCardNotExists() {
71
+ var status = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'resolved';
72
+
73
+ var selector = this._toSelector(this.appearance, status);
74
+
75
+ return this.cy.get(selector).should('not.exist');
76
+ }
77
+ }, {
78
+ key: "findCardNth",
79
+ value: function findCardNth() {
80
+ var nth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
81
+ var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'resolved';
82
+
83
+ var selector = this._toSelector(this.appearance, status);
84
+
85
+ return this.cy // NOTE: `timeout` used since Smart Links rely on a network response.
86
+ .get(selector, {
87
+ timeout: BaseCardPageObject.CARD_TIMEOUT
88
+ }).should('have.length.at.least', nth).should('be.visible').eq(nth - 1);
89
+ }
90
+ }, {
91
+ key: "assertHrefRendered",
92
+ value: function assertHrefRendered(url) {
93
+ return this.cy.get("a[href=\"".concat(url, "\"]"), {
94
+ timeout: BaseCardPageObject.CARD_TIMEOUT
95
+ }).should('be.visible');
96
+ }
97
+ }, {
98
+ key: "assertHrefNotRendered",
99
+ value: function assertHrefNotRendered(url) {
100
+ return this.cy.get("a[href=\"".concat(url, "\"]"), {
101
+ timeout: BaseCardPageObject.CARD_TIMEOUT
102
+ }).should('not.exist');
103
+ }
104
+ }, {
105
+ key: "click",
106
+ value: function click() {
107
+ var status = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'resolved';
108
+ return this.findCardNth(1, status).click();
109
+ }
110
+ }]);
111
+ return BaseCardPageObject;
112
+ }(_inProductTesting.InProductTestPageObject);
113
+
114
+ exports.BaseCardPageObject = BaseCardPageObject;
115
+ (0, _defineProperty2.default)(BaseCardPageObject, "CARD_TIMEOUT", 15000);
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.BlockCardPageObject = void 0;
9
+
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _BaseCard = require("./BaseCard");
21
+
22
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
+
24
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
+
26
+ var BlockCardPageObject = /*#__PURE__*/function (_BaseCardPageObject) {
27
+ (0, _inherits2.default)(BlockCardPageObject, _BaseCardPageObject);
28
+
29
+ var _super = _createSuper(BlockCardPageObject);
30
+
31
+ function BlockCardPageObject(cy) {
32
+ var _this;
33
+
34
+ (0, _classCallCheck2.default)(this, BlockCardPageObject);
35
+ _this = _super.call(this, cy, 'block');
36
+ _this.cy = cy;
37
+ return _this;
38
+ }
39
+
40
+ return (0, _createClass2.default)(BlockCardPageObject);
41
+ }(_BaseCard.BaseCardPageObject);
42
+
43
+ exports.BlockCardPageObject = BlockCardPageObject;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.EmbedCardPageObject = void 0;
9
+
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _BaseCard = require("./BaseCard");
21
+
22
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
+
24
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
+
26
+ var EmbedCardPageObject = /*#__PURE__*/function (_BaseCardPageObject) {
27
+ (0, _inherits2.default)(EmbedCardPageObject, _BaseCardPageObject);
28
+
29
+ var _super = _createSuper(EmbedCardPageObject);
30
+
31
+ function EmbedCardPageObject(cy) {
32
+ var _this;
33
+
34
+ (0, _classCallCheck2.default)(this, EmbedCardPageObject);
35
+ _this = _super.call(this, cy, 'embed');
36
+ _this.cy = cy;
37
+ return _this;
38
+ }
39
+
40
+ return (0, _createClass2.default)(EmbedCardPageObject);
41
+ }(_BaseCard.BaseCardPageObject);
42
+
43
+ exports.EmbedCardPageObject = EmbedCardPageObject;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.InlineCardPageObject = void 0;
9
+
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _BaseCard = require("./BaseCard");
21
+
22
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
+
24
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
25
+
26
+ var InlineCardPageObject = /*#__PURE__*/function (_BaseCardPageObject) {
27
+ (0, _inherits2.default)(InlineCardPageObject, _BaseCardPageObject);
28
+
29
+ var _super = _createSuper(InlineCardPageObject);
30
+
31
+ function InlineCardPageObject(cy) {
32
+ var _this;
33
+
34
+ (0, _classCallCheck2.default)(this, InlineCardPageObject);
35
+ _this = _super.call(this, cy, 'inline');
36
+ _this.cy = cy;
37
+ return _this;
38
+ }
39
+
40
+ return (0, _createClass2.default)(InlineCardPageObject);
41
+ }(_BaseCard.BaseCardPageObject);
42
+
43
+ exports.InlineCardPageObject = InlineCardPageObject;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.blockSmartLinkRendersTestCase = void 0;
7
+
8
+ var _inProductTesting = require("@atlaskit/in-product-testing");
9
+
10
+ var _BlockCard = require("../page-objects/BlockCard");
11
+
12
+ var blockSmartLinkRendersTestCase = function blockSmartLinkRendersTestCase(_ref) {
13
+ var url = _ref.url,
14
+ _ref$status = _ref.status,
15
+ status = _ref$status === void 0 ? 'resolved' : _ref$status;
16
+ return new _inProductTesting.InProductTestCase({
17
+ title: 'Block Smart Link is visible in the resolved state',
18
+ id: 'block-smart-link-resolved',
19
+ assertions: function assertions(cy) {
20
+ var blockCard = new _BlockCard.BlockCardPageObject(cy);
21
+ blockCard.assertHrefRendered(url);
22
+ blockCard.expectCardReady(1, status);
23
+ }
24
+ });
25
+ };
26
+
27
+ exports.blockSmartLinkRendersTestCase = blockSmartLinkRendersTestCase;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.embedSmartLinkRendersTestCase = void 0;
7
+
8
+ var _inProductTesting = require("@atlaskit/in-product-testing");
9
+
10
+ var _EmbedCard = require("../page-objects/EmbedCard");
11
+
12
+ var embedSmartLinkRendersTestCase = function embedSmartLinkRendersTestCase(_ref) {
13
+ var url = _ref.url,
14
+ _ref$status = _ref.status,
15
+ status = _ref$status === void 0 ? 'resolved' : _ref$status;
16
+ return new _inProductTesting.InProductTestCase({
17
+ title: 'Embed Smart Link is visible in the resolved state',
18
+ id: 'embed-smart-link-resolved',
19
+ assertions: function assertions(cy) {
20
+ var embedCard = new _EmbedCard.EmbedCardPageObject(cy);
21
+ embedCard.assertHrefRendered(url);
22
+ embedCard.expectCardReady(1, status);
23
+ }
24
+ });
25
+ };
26
+
27
+ exports.embedSmartLinkRendersTestCase = embedSmartLinkRendersTestCase;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.inlineSmartLinkRendersTestCase = void 0;
7
+
8
+ var _inProductTesting = require("@atlaskit/in-product-testing");
9
+
10
+ var _InlineCard = require("../page-objects/InlineCard");
11
+
12
+ var inlineSmartLinkRendersTestCase = function inlineSmartLinkRendersTestCase(_ref) {
13
+ var url = _ref.url,
14
+ _ref$status = _ref.status,
15
+ status = _ref$status === void 0 ? 'resolved' : _ref$status;
16
+ return new _inProductTesting.InProductTestCase({
17
+ title: 'Inline Smart Link is visible in the resolved state',
18
+ id: 'inline-smart-link-resolved',
19
+ assertions: function assertions(cy) {
20
+ var inlineCard = new _InlineCard.InlineCardPageObject(cy);
21
+ inlineCard.assertHrefRendered(url);
22
+ inlineCard.expectCardReady(1, status);
23
+ }
24
+ });
25
+ };
26
+
27
+ exports.inlineSmartLinkRendersTestCase = inlineSmartLinkRendersTestCase;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -23,15 +23,27 @@ function usePrefetch(url) {
23
23
  prefetchStore = _useSmartLinkContext.prefetchStore,
24
24
  connections = _useSmartLinkContext.connections;
25
25
 
26
- var dispatch = store.dispatch,
27
- getState = store.getState;
28
- var client = connections.client;
26
+ var _ref = store || {},
27
+ dispatch = _ref.dispatch,
28
+ getState = _ref.getState;
29
+
30
+ var _ref2 = connections || {},
31
+ client = _ref2.client;
32
+
29
33
  return (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
30
34
  var isPrefetching, isFetching, needsPrefetch, response;
31
35
  return _regenerator.default.wrap(function _callee$(_context) {
32
36
  while (1) {
33
37
  switch (_context.prev = _context.next) {
34
38
  case 0:
39
+ if (!(!store || !prefetchStore || !connections)) {
40
+ _context.next = 2;
41
+ break;
42
+ }
43
+
44
+ return _context.abrupt("return");
45
+
46
+ case 2:
35
47
  // If the link is already being prefetched, the prefetch store
36
48
  // should have a flag set against the URL. The prefetch store is purposefully
37
49
  // separate from the UI in order to ensure no rendering takes place;
@@ -45,7 +57,7 @@ function usePrefetch(url) {
45
57
  needsPrefetch = !isPrefetching && !isFetching;
46
58
 
47
59
  if (!needsPrefetch) {
48
- _context.next = 14;
60
+ _context.next = 16;
49
61
  break;
50
62
  }
51
63
 
@@ -57,11 +69,11 @@ function usePrefetch(url) {
57
69
  // requests by domain (as usual) to ensure we minimize the amount of connections
58
70
  // we create between browser -> ORS when making network requests.
59
71
 
60
- _context.prev = 5;
61
- _context.next = 8;
72
+ _context.prev = 7;
73
+ _context.next = 10;
62
74
  return client.prefetchData(url);
63
75
 
64
- case 8:
76
+ case 10:
65
77
  response = _context.sent;
66
78
 
67
79
  // Once the data comes back, we put the link in the `resolved` status. This ensures
@@ -80,18 +92,18 @@ function usePrefetch(url) {
80
92
  }, undefined, undefined, 'resolved'));
81
93
  }
82
94
 
83
- _context.next = 14;
95
+ _context.next = 16;
84
96
  break;
85
97
 
86
- case 12:
87
- _context.prev = 12;
88
- _context.t0 = _context["catch"](5);
89
-
90
98
  case 14:
99
+ _context.prev = 14;
100
+ _context.t0 = _context["catch"](7);
101
+
102
+ case 16:
91
103
  case "end":
92
104
  return _context.stop();
93
105
  }
94
106
  }
95
- }, _callee, null, [[5, 12]]);
96
- })), [prefetchStore, url, getState, client, dispatch]);
107
+ }, _callee, null, [[7, 14]]);
108
+ })), [store, prefetchStore, connections, url, getState, client, dispatch]);
97
109
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "22.1.0",
3
+ "version": "22.2.0",
4
4
  "sideEffects": false
5
5
  }
@@ -83,16 +83,12 @@ function CardWithURLRenderer(props) {
83
83
  }, [appearance, createAnalyticsEvent]);
84
84
  var analytics = (0, _analytics2.useSmartLinkAnalytics)(url !== null && url !== void 0 ? url : '', dispatchAnalytics, id);
85
85
  var logError = (0, _react.useCallback)(function (error, info) {
86
- var componentStack = info.componentStack; // NB: APIErrors are thrown in response to Object Resolver Service.
87
- // In these cases, control is handed back to the Editor. We do not
86
+ var componentStack = info.componentStack; // NB: APIErrors are thrown in response to Object Resolver Service. We do not
88
87
  // fire an event for these, as they do not cover failed UI render events.
88
+ // The rest of the errors caught here are unexpected, and correlate
89
+ // to the reliability of the smart-card front-end components.
89
90
 
90
- if (error.name === 'APIError') {
91
- throw error;
92
- } // NB: the rest of the errors caught here are unexpected, and correlate
93
- // to the reliability of the smart-card front-end components. We instrument
94
- // these in order to measure our front-end reliability.
95
- else {
91
+ if (error.name !== 'APIError') {
96
92
  var errorInfo = {
97
93
  componentStack: componentStack
98
94
  };
@@ -102,7 +98,11 @@ function CardWithURLRenderer(props) {
102
98
  error: error,
103
99
  errorInfo: errorInfo
104
100
  });
105
- }
101
+ } // Rethrow to hand control to the consumer of Smart-card.
102
+ // In the case of editor this allows the Smart Link to fallback to a blue link.
103
+
104
+
105
+ throw error;
106
106
  }, [analytics.ui, appearance, id]);
107
107
 
108
108
  if (!url) {
@@ -140,5 +140,5 @@ function CardWithURLRenderer(props) {
140
140
  }
141
141
 
142
142
  var ErrorFallback = function ErrorFallback() {
143
- return /*#__PURE__*/_react.default.createElement("span", null);
143
+ return null;
144
144
  };
@@ -43,12 +43,12 @@ var IconTitleWrapper = _styled.default.span(_templateObject3 || (_templateObject
43
43
 
44
44
  exports.IconTitleWrapper = IconTitleWrapper;
45
45
 
46
- var LozengeWrapper = _styled.default.span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n display: inline-block;\n vertical-align: 1px;\n & > span {\n margin-left: 4px;\n padding: 2px 0 2px 0;\n }\n"]))); // TODO: Replace overrides with proper AtlasKit solution.
46
+ var LozengeWrapper = _styled.default.span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n display: inline-block;\n vertical-align: 1px;\n & > span {\n margin-left: 4px;\n }\n"]))); // TODO: Replace overrides with proper AtlasKit solution.
47
47
 
48
48
 
49
49
  exports.LozengeWrapper = LozengeWrapper;
50
50
 
51
- var LozengeBlockWrapper = _styled.default.span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n & > span {\n margin-left: 4px;\n padding: 2px 0 2px 0;\n }\n"])));
51
+ var LozengeBlockWrapper = _styled.default.span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n & > span {\n margin-left: 4px;\n }\n"])));
52
52
 
53
53
  exports.LozengeBlockWrapper = LozengeBlockWrapper;
54
54
 
@@ -0,0 +1,6 @@
1
+ export { InlineCardPageObject } from './page-objects/InlineCard';
2
+ export { BlockCardPageObject } from './page-objects/BlockCard';
3
+ export { EmbedCardPageObject } from './page-objects/EmbedCard';
4
+ export { inlineSmartLinkRendersTestCase } from './test-cases/inline';
5
+ export { blockSmartLinkRendersTestCase } from './test-cases/card';
6
+ export { embedSmartLinkRendersTestCase } from './test-cases/embed';
@@ -0,0 +1,61 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import { InProductTestPageObject } from '@atlaskit/in-product-testing';
3
+ export class BaseCardPageObject extends InProductTestPageObject {
4
+ constructor(cy, appearance) {
5
+ super(cy);
6
+ this.cy = cy;
7
+ this.appearance = appearance;
8
+ }
9
+
10
+ _toSelector(appearance, status) {
11
+ const viewSelector = status.replace(/_/g, '-');
12
+ return this.toTestId(`${appearance}-card-${viewSelector}-view`);
13
+ }
14
+
15
+ expectCardReady(numOfCards = 1, status = 'resolved') {
16
+ const selector = this._toSelector(this.appearance, status);
17
+
18
+ return this.cy // NOTE: `timeout` used since Smart Links rely on a network response.
19
+ .get(selector, {
20
+ timeout: BaseCardPageObject.CARD_TIMEOUT
21
+ }).should('have.length', numOfCards).each(element => {
22
+ this.cy.wrap(element) // NOTE: `be.visible` is used to ensure the file is still visible
23
+ // whilst it is being uploaded.
24
+ .should('be.visible');
25
+ });
26
+ }
27
+
28
+ expectCardNotExists(status = 'resolved') {
29
+ const selector = this._toSelector(this.appearance, status);
30
+
31
+ return this.cy.get(selector).should('not.exist');
32
+ }
33
+
34
+ findCardNth(nth = 1, status = 'resolved') {
35
+ const selector = this._toSelector(this.appearance, status);
36
+
37
+ return this.cy // NOTE: `timeout` used since Smart Links rely on a network response.
38
+ .get(selector, {
39
+ timeout: BaseCardPageObject.CARD_TIMEOUT
40
+ }).should('have.length.at.least', nth).should('be.visible').eq(nth - 1);
41
+ }
42
+
43
+ assertHrefRendered(url) {
44
+ return this.cy.get(`a[href="${url}"]`, {
45
+ timeout: BaseCardPageObject.CARD_TIMEOUT
46
+ }).should('be.visible');
47
+ }
48
+
49
+ assertHrefNotRendered(url) {
50
+ return this.cy.get(`a[href="${url}"]`, {
51
+ timeout: BaseCardPageObject.CARD_TIMEOUT
52
+ }).should('not.exist');
53
+ }
54
+
55
+ click(status = 'resolved') {
56
+ return this.findCardNth(1, status).click();
57
+ }
58
+
59
+ }
60
+
61
+ _defineProperty(BaseCardPageObject, "CARD_TIMEOUT", 15000);
@@ -0,0 +1,8 @@
1
+ import { BaseCardPageObject } from './BaseCard';
2
+ export class BlockCardPageObject extends BaseCardPageObject {
3
+ constructor(cy) {
4
+ super(cy, 'block');
5
+ this.cy = cy;
6
+ }
7
+
8
+ }
@@ -0,0 +1,8 @@
1
+ import { BaseCardPageObject } from './BaseCard';
2
+ export class EmbedCardPageObject extends BaseCardPageObject {
3
+ constructor(cy) {
4
+ super(cy, 'embed');
5
+ this.cy = cy;
6
+ }
7
+
8
+ }
@@ -0,0 +1,8 @@
1
+ import { BaseCardPageObject } from './BaseCard';
2
+ export class InlineCardPageObject extends BaseCardPageObject {
3
+ constructor(cy) {
4
+ super(cy, 'inline');
5
+ this.cy = cy;
6
+ }
7
+
8
+ }