@kineticdata/react
Version:
A React library for the Kinetic Platform
136 lines (135 loc) • 4.35 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _axios = _interopRequireDefault(require("axios"));
var _profile = require("./profile");
var _user_builder = require("../../../tests/utils/user_builder");
var _promises = require("../../../tests/utils/promises");
// Mock out the bundle object from a dependency.
jest.mock('../../helpers', function () {
return {
bundle: {
apiLocation: function apiLocation() {
return 'user/app/api/v1';
},
kappSlug: function kappSlug() {
return 'mock-kapp';
}
}
};
});
describe('profile api', function () {
describe('#fetchProfile', function () {
describe('when successful', function () {
var response;
var testUser;
beforeEach(function () {
response = {
status: 200,
data: {}
};
testUser = new _user_builder.UserBuilder().stub().withAttribute('Attribute', 'value').build();
response.data = testUser;
_axios["default"].get = (0, _promises.resolvePromiseWith)(response);
});
test('does not return errors', function () {
expect.assertions(1);
return (0, _profile.fetchProfile)().then(function (_ref) {
var errors = _ref.errors;
expect(errors).toBeUndefined();
});
});
test('returns a profile', function () {
expect.assertions(1);
return (0, _profile.fetchProfile)().then(function (_ref2) {
var profile = _ref2.profile;
expect(profile).toMatchObject({
username: testUser.username,
displayName: testUser.displayName
});
});
});
test('returns attributes', function () {
expect.assertions(2);
return (0, _profile.fetchProfile)().then(function (_ref3) {
var profile = _ref3.profile;
expect(profile.attributes).toBeDefined();
expect(profile.attributes).toBeInstanceOf(Array);
});
});
});
});
describe('#updateProfile', function () {
describe('when successful', function () {
var response;
var testUser;
beforeEach(function () {
response = {
status: 200,
data: {
user: {}
}
};
testUser = new _user_builder.UserBuilder().stub().withAttribute('Attribute', 'value').build();
response.data.user = testUser;
_axios["default"].put = (0, _promises.resolvePromiseWith)(response);
});
test('does not return errors', function () {
expect.assertions(1);
return (0, _profile.updateProfile)({
profile: testUser
}).then(function (_ref4) {
var errors = _ref4.errors;
expect(errors).toBeUndefined();
});
});
test('returns a profile', function () {
expect.assertions(1);
return (0, _profile.updateProfile)({
profile: testUser
}).then(function (_ref5) {
var profile = _ref5.profile;
expect(profile).toMatchObject({
username: testUser.username,
displayName: testUser.displayName
});
});
});
test('returns attributes', function () {
expect.assertions(2);
return (0, _profile.updateProfile)({
profile: testUser
}).then(function (_ref6) {
var profile = _ref6.profile;
expect(profile.attributes).toBeDefined();
expect(profile.attributes).toBeInstanceOf(Array);
});
});
});
describe('when unsuccessful', function () {
var response;
beforeEach(function () {
response = {
status: 500,
data: {}
};
_axios["default"].put = (0, _promises.rejectPromiseWith)({
response: response
});
});
test('throws an exception when no profile object is provided', function () {
expect(function () {
(0, _profile.updateProfile)();
}).toThrow();
});
test('does return errors', function () {
expect.assertions(1);
return (0, _profile.updateProfile)({
profile: {}
}).then(function (_ref7) {
var error = _ref7.error;
expect(error).toBeDefined();
});
});
});
});
});