mirror of
https://github.com/openMF/community-app.git
synced 2026-02-06 18:06:46 +00:00
130 lines
4.8 KiB
JavaScript
130 lines
4.8 KiB
JavaScript
describe("UserFormController", function() {
|
|
var eventCallback;
|
|
beforeEach(function() {
|
|
this.scope = {
|
|
$emit: jasmine.createSpy("$scope.$emit()"),
|
|
$on: jasmine.createSpy("$scope.$on()").andCallFake(function(eventName, callback) { eventCallback = callback; })
|
|
};
|
|
this.resourceFactory = {
|
|
officeResource: {
|
|
getAllOffices: jasmine.createSpy('officeResource.getAllOffices()').andCallFake(function(params, callback) {
|
|
callback(['test_office1', 'test_office2']);
|
|
})
|
|
},
|
|
roleResource: {
|
|
getAllRoles: jasmine.createSpy('roleResource.getAllRoles()').andCallFake(function(params, callback) {
|
|
callback(['test_role1', 'test_role2']);
|
|
})
|
|
},
|
|
userResource: jasmine.createSpy('userResource')
|
|
};
|
|
|
|
this.controller = new mifosX.controllers.UserFormController(this.scope, this.resourceFactory);
|
|
});
|
|
|
|
describe("Initialization", function() {
|
|
it("should initialize the offices collection", function() {
|
|
expect(this.scope.offices).toEqual(['test_office1', 'test_office2']);
|
|
});
|
|
it("should initialize the roles collection", function() {
|
|
expect(this.scope.roles).toEqual(['test_role1', 'test_role2']);
|
|
});
|
|
});
|
|
|
|
describe("When form dialog opens", function() {
|
|
it("should listen to the 'OpenUserFormDialog' event", function() {
|
|
expect(this.scope.$on).toHaveBeenCalledWith('OpenUserFormDialog', jasmine.any(Function));
|
|
});
|
|
it("should reset the form data", function() {
|
|
eventCallback();
|
|
|
|
expect(this.scope.userFormData).toEqual({selectedRoles: {}, sendPasswordToEmail: false});
|
|
expect(this.scope.formInError).toBeFalsy();
|
|
expect(this.scope.errors).toEqual([]);
|
|
});
|
|
});
|
|
|
|
describe("Form actions", function() {
|
|
var userResource, onSuccessCallback, onErrorCallback;
|
|
beforeEach(function() {
|
|
userResource = jasmine.createSpyObj('userResource', ['$save']);
|
|
userResource.$save.andCallFake(function(params, success, error) {
|
|
onSuccessCallback = success;
|
|
onErrorCallback = error;
|
|
});
|
|
this.resourceFactory.userResource.andReturn(userResource);
|
|
});
|
|
|
|
it("should emit the 'CloseUserForm' when cancelling the form", function() {
|
|
this.scope.cancelUserForm();
|
|
|
|
expect(this.scope.$emit).toHaveBeenCalledWith('CloseUserForm');
|
|
});
|
|
|
|
describe("Save user", function() {
|
|
var expectedUserParams;
|
|
beforeEach(function() {
|
|
this.scope.userFormData = {
|
|
username: 'test_username',
|
|
firstname: 'test_firstname',
|
|
lastname: 'test_lastname',
|
|
email: 'test_email',
|
|
office: {id: 'test_office'},
|
|
sendPasswordToEmail: true,
|
|
selectedRoles: {'123': {}, '456': {}}
|
|
};
|
|
expectedUserParams = _.extend(
|
|
_.pick(this.scope.userFormData, ['username', 'firstname', 'lastname', 'email', 'sendPasswordToEmail']),
|
|
{ officeId: 'test_office', roles: [123, 456] }
|
|
);
|
|
|
|
this.scope.submitUserForm();
|
|
});
|
|
|
|
it("should emit the 'SubmitUserFormStart' event", function() {
|
|
expect(this.scope.$emit).toHaveBeenCalledWith('SubmitUserFormStart');
|
|
});
|
|
it("should create and save a new user resource", function() {
|
|
expect(this.resourceFactory.userResource).toHaveBeenCalledWith(expectedUserParams);
|
|
expect(userResource.$save).toHaveBeenCalledWith({}, jasmine.any(Function), jasmine.any(Function));
|
|
});
|
|
|
|
describe("User save error handler", function() {
|
|
beforeEach(function() {
|
|
this.scope.formInError = false;
|
|
this.scope.errors = [];
|
|
|
|
onErrorCallback({data: {errors: 'test_errors'}});
|
|
});
|
|
|
|
it("should flag the form in error", function() {
|
|
expect(this.scope.formInError).toBeTruthy();
|
|
});
|
|
it("should put the errors in the scope", function() {
|
|
expect(this.scope.errors).toEqual('test_errors');
|
|
});
|
|
it("should emit the 'SubmitUserFormError' event", function() {
|
|
expect(this.scope.$emit).toHaveBeenCalledWith('SubmitUserFormError');
|
|
});
|
|
});
|
|
|
|
describe("User save success handler", function() {
|
|
var addedUser, existingUser;
|
|
beforeEach(function() {
|
|
existingUser = {id: 'another_userId'};
|
|
this.scope.users = [existingUser];
|
|
addedUser = _.extend(expectedUserParams, {id: 'test_userId'});
|
|
|
|
onSuccessCallback({resourceId: 'test_userId'});
|
|
});
|
|
|
|
it("should add the user to the users in the scope", function() {
|
|
expect(this.scope.users).toEqual([existingUser, addedUser]);
|
|
});
|
|
it("should emit the 'SubmitUserFormSuccess' event", function() {
|
|
expect(this.scope.$emit).toHaveBeenCalledWith('SubmitUserFormSuccess');
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}); |