UNPKG

@kineticdata/react

Version:
316 lines (314 loc) 10.8 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 _kapps = require("./kapps"); var _kapp_builder = require("../../../tests/utils/kapp_builder"); var _promises = require("../../../tests/utils/promises"); jest.mock('axios'); // Mock out the bundle object from a dependency. jest.mock('../../helpers', function () { return { bundle: { apiLocation: function apiLocation() { return 'kapp/app/api/v1'; }, kappSlug: function kappSlug() { return 'mock-kapp'; } } }; }); describe('kapps api', function () { describe('#fetchKapps', function () { describe('when successful', function () { var response; var testKapp; beforeEach(function () { response = { status: 200, data: { kapps: [] } }; testKapp = new _kapp_builder.KappBuilder().stub().withAttribute('Attribute', 'value').build(); response.data.kapps.push(testKapp); _axios["default"].get = (0, _promises.resolvePromiseWith)(response); }); test('does not return errors', function () { expect.assertions(1); return (0, _kapps.fetchKapps)().then(function (_ref) { var serverError = _ref.serverError; expect(serverError).toBeUndefined(); }); }); test('returns an array of kapps', function () { expect.assertions(2); return (0, _kapps.fetchKapps)().then(function (_ref2) { var kapps = _ref2.kapps; expect(kapps).toBeInstanceOf(Array); expect(kapps[0]).toMatchObject({ name: testKapp.name, slug: testKapp.slug }); }); }); test('returns attributes', function () { expect.assertions(2); return (0, _kapps.fetchKapps)({ xlatAttributes: true }).then(function (_ref3) { var kapps = _ref3.kapps; expect(kapps[0].attributes).toBeDefined(); expect(kapps[0].attributes).toBeInstanceOf(Array); }); }); }); }); describe('#fetchKapp', function () { describe('when successful', function () { var response; var testKapp; beforeEach(function () { response = { status: 200, data: { kapp: {} } }; testKapp = new _kapp_builder.KappBuilder().stub().withAttribute('Attribute', 'value').build(); response.data.kapp = testKapp; _axios["default"].get = (0, _promises.resolvePromiseWith)(response); }); test('does not return errors', function () { expect.assertions(1); return (0, _kapps.fetchKapp)().then(function (_ref4) { var errors = _ref4.errors; expect(errors).toBeUndefined(); }); }); test('returns a kapp', function () { expect.assertions(1); return (0, _kapps.fetchKapp)().then(function (_ref5) { var kapp = _ref5.kapp; expect(kapp).toMatchObject({ name: testKapp.name, slug: testKapp.slug }); }); }); test('returns attributes', function () { expect.assertions(2); return (0, _kapps.fetchKapp)({ xlatAttributes: true }).then(function (_ref6) { var kapp = _ref6.kapp; expect(kapp.attributes).toBeDefined(); expect(kapp.attributes).toBeInstanceOf(Array); }); }); }); describe('when unsuccessful', function () { var response; beforeEach(function () { response = { status: 500, data: {} }; _axios["default"].get = (0, _promises.rejectPromiseWith)({ response: response }); }); test('does return errors', function () { expect.assertions(1); return (0, _kapps.fetchKapp)({ includes: 'attributes', xlatAttributes: true }).then(function (_ref7) { var error = _ref7.error; expect(error).toBeDefined(); }); }); }); }); describe('updateKapp', function () { beforeEach(function () { _axios["default"].put.mockReset(); }); test('success', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee() { var _yield$updateKapp, kapp, error; return (0, _regeneratorRuntime2["default"])().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _axios["default"].put.mockResolvedValue({ status: 200, data: { kapp: { name: 'Test', attributes: [{ name: 'Company Name', values: ['Foo Bar'] }] } } }); _context.next = 3; return (0, _kapps.updateKapp)({ kappSlug: 'catalog', kapp: { name: 'Test', attributes: [{ name: 'Company Name', values: ['Foo Bar'] }] }, include: 'attributes' }); case 3: _yield$updateKapp = _context.sent; kapp = _yield$updateKapp.kapp; error = _yield$updateKapp.error; expect(_axios["default"].put.mock.calls).toEqual([['kapp/app/api/v1/kapps/catalog', { name: 'Test', attributes: [{ name: 'Company Name', values: ['Foo Bar'] }] }, { params: { include: 'attributes' }, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); expect(kapp).toEqual({ name: 'Test', attributes: [{ name: 'Company Name', values: ['Foo Bar'] }] }); expect(error).toBeUndefined(); case 9: case "end": return _context.stop(); } }, _callee); }))); test('defaults to bundle.kappSlug() when no kappSlug provided', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee2() { return (0, _regeneratorRuntime2["default"])().wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: _axios["default"].put.mockResolvedValue({ status: 200, data: {} }); _context2.next = 3; return (0, _kapps.updateKapp)({ kapp: { name: 'Test' } }); case 3: expect(_axios["default"].put.mock.calls).toEqual([['kapp/app/api/v1/kapps/mock-kapp', { name: 'Test' }, { params: {}, headers: { 'X-Kinetic-AuthAssumed': 'true' } }]]); case 4: case "end": return _context2.stop(); } }, _callee2); }))); test('missing kapp', function () { expect(function () { (0, _kapps.updateKapp)({}); }).toThrow('updateKapp failed! The option "kapp" is required.'); }); test('missing kappSlug', function () { // Note that we need to set it to null becuse by default if kappSlug is // not passed (undefined) it checks the 'bundle' helper. expect(function () { (0, _kapps.updateKapp)({ kapp: {}, kappSlug: null }); }).toThrow('updateKapp failed! The option "kappSlug" is required.'); }); test('bad request', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee3() { var _yield$updateKapp2, kapp, error; return (0, _regeneratorRuntime2["default"])().wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: _axios["default"].put.mockRejectedValue((0, _createError["default"])('Request failed with status code 400', null, 400, null, { status: 400, statusText: 'Bad Request', data: { error: 'Invalid kapp' } })); _context3.next = 3; return (0, _kapps.updateKapp)({ kapp: { name: null } }); case 3: _yield$updateKapp2 = _context3.sent; kapp = _yield$updateKapp2.kapp; error = _yield$updateKapp2.error; expect(kapp).toBeUndefined(); expect(error).toEqual({ statusCode: 400, key: null, badRequest: true, message: 'Invalid kapp' }); case 8: case "end": return _context3.stop(); } }, _callee3); }))); test('forbidden', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/(0, _regeneratorRuntime2["default"])().mark(function _callee4() { var _yield$updateKapp3, kapp, error; return (0, _regeneratorRuntime2["default"])().wrap(function _callee4$(_context4) { while (1) switch (_context4.prev = _context4.next) { case 0: _axios["default"].put.mockRejectedValue((0, _createError["default"])('Request failed with status code 403', null, 403, null, { status: 403, statusText: 'Forbidden', data: {} })); _context4.next = 3; return (0, _kapps.updateKapp)({ kapp: { name: 'Foo' } }); case 3: _yield$updateKapp3 = _context4.sent; kapp = _yield$updateKapp3.kapp; error = _yield$updateKapp3.error; expect(kapp).toBeUndefined(); expect(error).toEqual({ statusCode: 403, key: null, forbidden: true, message: 'Forbidden' }); case 8: case "end": return _context4.stop(); } }, _callee4); }))); }); });