X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fkarma%2Funit%2FcrmCaseTypeSpec.js;h=3369579c19bdf3d99aa5563871c2f33e6d7e00a0;hb=68098e7b9ee8ff39df2c602a628e2c1758c7fd89;hp=9279d2017d762ed753cc6b952da69f22c78bc586;hpb=5afcf74389296764bd92ed3bc3b2f5f209933bfe;p=civicrm-core.git diff --git a/tests/karma/unit/crmCaseTypeSpec.js b/tests/karma/unit/crmCaseTypeSpec.js index 9279d2017d..3369579c19 100644 --- a/tests/karma/unit/crmCaseTypeSpec.js +++ b/tests/karma/unit/crmCaseTypeSpec.js @@ -11,6 +11,7 @@ describe('crmCaseType', function() { var apiCalls; var ctrl; var compile; + var defaultAssigneeDefaultValue; var scope; beforeEach(function() { @@ -187,6 +188,18 @@ describe('crmCaseType', function() { "contact_type_b": "Individual", "is_reserved": "0", "is_active": "1" + }, + { + "id": "2", + "name_a_b": "Spouse of", + "label_a_b": "Spouse of", + "name_b_a": "Spouse of", + "label_b_a": "Spouse of", + "description": "Spousal relationship.", + "contact_type_a": "Individual", + "contact_type_b": "Individual", + "is_reserved": "0", + "is_active": "1" } ] }, @@ -231,8 +244,65 @@ describe('crmCaseType', function() { } ] } + }, + defaultAssigneeTypes: { + values: [ + { + "id": "1174", + "option_group_id": "152", + "label": "None", + "value": "1", + "name": "NONE", + "filter": "0", + "is_default": "1", + "weight": "1", + "is_optgroup": "0", + "is_reserved": "0", + "is_active": "1" + }, + { + "id": "1175", + "option_group_id": "152", + "label": "By relationship to workflow client", + "value": "2", + "name": "BY_RELATIONSHIP", + "filter": "0", + "is_default": "0", + "weight": "2", + "is_optgroup": "0", + "is_reserved": "0", + "is_active": "1" + }, + { + "id": "1176", + "option_group_id": "152", + "label": "Specific contact", + "value": "3", + "name": "SPECIFIC_CONTACT", + "filter": "0", + "is_default": "0", + "weight": "3", + "is_optgroup": "0", + "is_reserved": "0", + "is_active": "1" + }, + { + "id": "1177", + "option_group_id": "152", + "label": "User creating the workflow", + "value": "4", + "name": "USER_CREATING_THE_CASE", + "filter": "0", + "is_default": "0", + "weight": "4", + "is_optgroup": "0", + "is_reserved": "0", + "is_active": "1" + } + ] } }; + defaultAssigneeDefaultValue = _.find(apiCalls.defaultAssigneeTypes.values, { is_default: '1' }); scope = $rootScope.$new(); ctrl = $controller('CaseTypeCtrl', {$scope: scope, apiCalls: apiCalls}); }); @@ -245,6 +315,37 @@ describe('crmCaseType', function() { expect(scope.activityTypes['ADC referral']).toEqualData(apiCalls.actTypes.values[0]); }); + it('should store the default assignee types', function() { + expect(scope.defaultAssigneeTypes).toBe(apiCalls.defaultAssigneeTypes.values); + }); + + it('should store the default assignee types values indexed by name', function() { + var defaultAssigneeTypeValues = _.chain(apiCalls.defaultAssigneeTypes.values) + .indexBy('name').mapValues('value').value(); + + expect(scope.defaultAssigneeTypeValues).toEqual(defaultAssigneeTypeValues); + }); + + it('should store the default assignee relationship type options', function() { + var defaultRelationshipTypeOptions = _.transform(apiCalls.relTypes.values, function(result, relType) { + var isBidirectionalRelationship = relType.label_a_b === relType.label_b_a; + + result.push({ + label: relType.label_b_a, + value: relType.id + '_b_a' + }); + + if (!isBidirectionalRelationship) { + result.push({ + label: relType.label_a_b, + value: relType.id + '_a_b' + }); + } + }, []); + + expect(scope.defaultRelationshipTypeOptions).toEqual(defaultRelationshipTypeOptions); + }); + it('addActivitySet should add an activitySet to the case type', function() { scope.addActivitySet('timeline'); var activitySets = scope.caseType.definition.activitySets; @@ -263,6 +364,75 @@ describe('crmCaseType', function() { expect(newSet.timeline).toBe('1'); expect(newSet.label).toBe('Timeline #2'); }); + + describe('when clearing the activity\'s default assignee type values', function() { + var activity; + + beforeEach(function() { + activity = { + default_assignee_relationship: 1, + default_assignee_contact: 2 + }; + + scope.clearActivityDefaultAssigneeValues(activity); + }); + + it('clears the default assignee relationship for the activity', function() { + expect(activity.default_assignee_relationship).toBe(null); + }); + + it('clears the default assignee contact for the activity', function() { + expect(activity.default_assignee_contact).toBe(null); + }); + }); + + describe('when adding a new activity to a set', function() { + var activitySet; + + beforeEach(function() { + activitySet = { activityTypes: [] }; + scope.activityTypes = { comment: { label: 'Add a new comment' } }; + + scope.addActivity(activitySet, 'comment'); + }); + + it('adds a new Comment activity to the set', function() { + expect(activitySet.activityTypes[0]).toEqual({ + name: 'comment', + label: scope.activityTypes.comment.label, + status: 'Scheduled', + reference_activity: 'Open Case', + reference_offset: '1', + reference_select: 'newest', + default_assignee_type: defaultAssigneeDefaultValue.value + }); + }); + }); + + describe('when creating a new workflow', function() { + beforeEach(inject(function ($controller) { + apiCalls.caseType = null; + + ctrl = $controller('CaseTypeCtrl', {$scope: scope, apiCalls: apiCalls}); + })); + + it('sets default values for the case type title, name, and active status', function() { + expect(scope.caseType).toEqual(jasmine.objectContaining({ + title: '', + name: '', + is_active: '1' + })); + }); + + it('adds an Open Case activty to the default activty set', function() { + expect(scope.caseType.definition.activitySets[0].activityTypes).toEqual([{ + name: 'Open Case', + label: 'Open Case', + status: 'Completed', + default_assignee_type: defaultAssigneeDefaultValue.value + }]); + }); + }); }); describe('crmAddName', function () {