UNPKG

@kineticdata/react

Version:
334 lines (332 loc) 12.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regeneratorRuntime")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator")); var _axios = _interopRequireDefault(require("axios")); var _createError = _interopRequireDefault(require("axios/lib/core/createError")); var _attributeDefinitions = require("./attributeDefinitions"); jest.mock('axios'); // Mock out the bundle object from a dependency. jest.mock('../../helpers', function () { return { bundle: { apiLocation: function apiLocation() { return 'space/app/api/v1'; } } }; }); describe('attributeDefinitions api', function () { describe('fetchAttributeDefinitions', function () { beforeEach(function () { _axios["default"].get.mockReset(); }); test('success space scoped attribute', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee() { var result; return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _axios["default"].get.mockResolvedValue({ status: 200, data: { spaceAttributeDefinitions: [{ allowsMultiple: false, description: 'Slug of this spaces Admin Kapp (typically admin)', name: 'Admin Kapp Slug' }, { allowsMultiple: false, description: null, name: 'Bundle Package Version' }] } }); _context.next = 3; return (0, _attributeDefinitions.fetchAttributeDefinitions)({ attributeType: 'spaceAttributeDefinitions' }); case 3: result = _context.sent; expect(_axios["default"].get.mock.calls).toEqual([['space/app/api/v1/spaceAttributeDefinitions', { params: {}, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); expect(result).toEqual({ attributeDefinitions: [{ allowsMultiple: false, description: 'Slug of this spaces Admin Kapp (typically admin)', name: 'Admin Kapp Slug' }, { allowsMultiple: false, description: null, name: 'Bundle Package Version' }] }); case 6: case "end": return _context.stop(); } }, _callee); }))); test('success kapp scoped attribute', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee2() { var result; return (0, _regeneratorRuntime2["default"])().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _axios["default"].get.mockResolvedValue({ status: 200, data: { categoryAttributeDefinitions: [{ allowsMultiple: false, description: 'Slug of this spaces Admin Kapp (typically admin)', name: 'Admin Kapp Slug' }, { allowsMultiple: false, description: null, name: 'Bundle Package Version' }] } }); _context2.next = 3; return (0, _attributeDefinitions.fetchAttributeDefinitions)({ attributeType: 'categoryAttributeDefinitions', kappSlug: 'services' }); case 3: result = _context2.sent; expect(_axios["default"].get.mock.calls).toEqual([['space/app/api/v1/kapps/services/categoryAttributeDefinitions', { params: {}, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); expect(result).toEqual({ attributeDefinitions: [{ allowsMultiple: false, description: 'Slug of this spaces Admin Kapp (typically admin)', name: 'Admin Kapp Slug' }, { allowsMultiple: false, description: null, name: 'Bundle Package Version' }] }); case 6: case "end": return _context2.stop(); } }, _callee2); }))); test('failure kapp scoped attribute - missing kappSlug', function () { expect(function () { (0, _attributeDefinitions.fetchAttributeDefinitions)({ attributeType: 'categoryAttributeDefinitions' }); }).toThrowError('fetchAttributeDefinitions failed! A kappSlug is required when using categoryAttributeDefinitions'); }); test('forbidden', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee3() { var result; return (0, _regeneratorRuntime2["default"])().wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _axios["default"].get.mockRejectedValue((0, _createError["default"])('Request failed with status code 403', null, 403, null, { status: 403, statusText: 'Forbidden' })); _context3.next = 3; return (0, _attributeDefinitions.fetchAttributeDefinitions)({ attributeType: 'spaceAttributeDefinitions' }); case 3: result = _context3.sent; expect(_axios["default"].get.mock.calls).toEqual([['space/app/api/v1/spaceAttributeDefinitions', { params: {}, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); expect(result).toEqual({ error: { statusCode: 403, key: null, forbidden: true, message: 'Forbidden' } }); case 6: case "end": return _context3.stop(); } }, _callee3); }))); }); describe('fetchAttributeDefinition', function () { beforeEach(function () { _axios["default"].get.mockReset(); }); test('success', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee4() { var result; return (0, _regeneratorRuntime2["default"])().wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _axios["default"].get.mockResolvedValue({ status: 200, data: { spaceAttributeDefinition: { allowsMultiple: false, name: 'Foo' } } }); _context4.next = 3; return (0, _attributeDefinitions.fetchAttributeDefinition)({ attributeType: 'spaceAttributeDefinitions', attributeName: 'Foo' }); case 3: result = _context4.sent; expect(_axios["default"].get.mock.calls).toEqual([['space/app/api/v1/spaceAttributeDefinitions/Foo', { params: {}, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); expect(result).toEqual({ attributeDefinition: { allowsMultiple: false, name: 'Foo' } }); case 6: case "end": return _context4.stop(); } }, _callee4); }))); test('invalid attributeType', function () { expect(function () { (0, _attributeDefinitions.fetchAttributeDefinition)({ attributeType: 'notAValidAttributeType', attributeName: 'Foo' }); }).toThrowError('fetchAttributeDefinition failed! The provided attributeType (notAValidAttributeType) is not valid'); }); }); describe('createAttributeDefinition', function () { beforeEach(function () { _axios["default"].post.mockReset(); }); test('success create attribute definition', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee5() { var result; return (0, _regeneratorRuntime2["default"])().wrap(function _callee5$(_context5) { while (1) switch (_context5.prev = _context5.next) { case 0: _axios["default"].post.mockResolvedValue({ status: 200, data: { spaceAttributeDefinition: { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true } } }); _context5.next = 3; return (0, _attributeDefinitions.createAttributeDefinition)({ attributeType: 'spaceAttributeDefinitions', attributeDefinition: { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true } }); case 3: result = _context5.sent; expect(_axios["default"].post.mock.calls).toEqual([['space/app/api/v1/spaceAttributeDefinitions', { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true }, { params: {}, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); expect(result).toEqual({ attributeDefinition: { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true } }); case 6: case "end": return _context5.stop(); } }, _callee5); }))); test('missing name', function () { expect(function () { (0, _attributeDefinitions.createAttributeDefinition)({ attributeType: 'spaceAttributeDefinitions' }); }).toThrowError('createAttributeDefinition failed! The following required options are missing: attributeDefinition'); }); }); describe('updateAttributeDefinition', function () { beforeEach(function () { _axios["default"].put.mockReset(); }); test('success update attribute definition', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee6() { var result; return (0, _regeneratorRuntime2["default"])().wrap(function _callee6$(_context6) { while (1) switch (_context6.prev = _context6.next) { case 0: _axios["default"].put.mockResolvedValue({ status: 200, data: { spaceAttributeDefinition: { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true } } }); _context6.next = 3; return (0, _attributeDefinitions.updateAttributeDefinition)({ attributeType: 'spaceAttributeDefinitions', attributeName: 'Test Attribute', attributeDefinition: { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true } }); case 3: result = _context6.sent; expect(_axios["default"].put.mock.calls).toEqual([['space/app/api/v1/spaceAttributeDefinitions/Test%20Attribute', { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true }, { params: {}, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); expect(result).toEqual({ attributeDefinition: { name: 'Test Attribute', description: 'Test Attr Desc', allowsMultiple: true } }); case 6: case "end": return _context6.stop(); } }, _callee6); }))); }); });