diff options
Diffstat (limited to 'polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members_test.html')
-rw-r--r-- | polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members_test.html | 123 |
1 files changed, 117 insertions, 6 deletions
diff --git a/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members_test.html b/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members_test.html index d670d4d546..81123e7014 100644 --- a/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members_test.html +++ b/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members_test.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <!-- +@license Copyright (C) 2017 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); @@ -38,9 +39,11 @@ limitations under the License. let groups; let groupMembers; let includedGroups; + let groupStub; setup(() => { sandbox = sinon.sandbox.create(); + groups = { name: 'Administrators', owner: 'Administrators', @@ -114,13 +117,24 @@ limitations under the License. return Promise.resolve({}); } }, + getSuggestedGroups(input) { + if (input.startsWith('test')) { + return Promise.resolve({ + 'test-admin': { + id: '1ce023d3fb4e4260776fb92cd08b52bbd21ce70a', + }, + 'test/Administrator (admin)': { + id: 'test%3Aadmin', + }, + }); + } else { + return Promise.resolve({}); + } + }, getLoggedIn() { return Promise.resolve(true); }, getConfig() { return Promise.resolve(); }, - getGroupConfig() { - return Promise.resolve(groups); - }, getGroupMembers() { return Promise.resolve(groupMembers); }, @@ -137,6 +151,9 @@ limitations under the License. element = fixture('basic'); sandbox.stub(element, 'getBaseUrl').returns('https://test/site'); element.groupId = 1; + groupStub = sandbox.stub(element.$.restAPI, 'getGroupConfig', () => { + return Promise.resolve(groups); + }); return element._loadGroupDetails(); }); @@ -156,7 +173,7 @@ limitations under the License. 'https://test/site/group/url'); }); - test('save correctly', () => { + test('save members correctly', () => { element._groupOwner = true; const memberName = 'test-admin'; @@ -166,7 +183,7 @@ limitations under the License. return Promise.resolve({}); }); - const button = Polymer.dom(element.root).querySelector('gr-button'); + const button = element.$.saveGroupMember; assert.isTrue(button.hasAttribute('disabled')); @@ -183,6 +200,33 @@ limitations under the License. }); }); + test('save included groups correctly', () => { + element._groupOwner = true; + + const includedGroupName = 'testName'; + + const saveIncludedGroupStub = sandbox.stub( + element.$.restAPI, 'saveIncludedGroup', () => { + return Promise.resolve({}); + }); + + const button = element.$.saveIncludedGroups; + + assert.isTrue(button.hasAttribute('disabled')); + + element.$.includedGroupSearchInput.text = includedGroupName; + element.$.includedGroupSearchInput.value = 'testId'; + + assert.isFalse(button.hasAttribute('disabled')); + + return element._handleSavingIncludedGroups().then(() => { + assert.isTrue(button.hasAttribute('disabled')); + assert.isFalse(element.$.Title.classList.contains('edited')); + assert.equal(saveIncludedGroupStub.lastCall.args[0], 'Administrators'); + assert.equal(saveIncludedGroupStub.lastCall.args[1], 'testId'); + }); + }); + test('add included group 404 shows helpful error text', () => { element._groupOwner = true; @@ -217,6 +261,20 @@ limitations under the License. }); }); + test('_getGroupSuggestions empty', () => { + return element._getGroupSuggestions('nonexistent').then(groups => { + assert.equal(groups.length, 0); + }); + }); + + test('_getGroupSuggestions non-empty', () => { + return element._getGroupSuggestions('test').then(groups => { + assert.equal(groups.length, 2); + assert.equal(groups[0].name, 'test-admin'); + assert.equal(groups[1].name, 'test/Administrator (admin)'); + }); + }); + test('_computeHideItemClass returns string for admin', () => { const admin = true; const owner = false; @@ -237,7 +295,7 @@ limitations under the License. test('delete member', () => { const deletelBtns = Polymer.dom(element.root) - .querySelectorAll('.deleteButton'); + .querySelectorAll('.deleteMembersButton'); MockInteractions.tap(deletelBtns[0]); assert.equal(element._itemId, '1000097'); assert.equal(element._itemName, 'jane'); @@ -251,5 +309,58 @@ limitations under the License. assert.equal(element._itemId, '1000098'); assert.equal(element._itemName, '1000098'); }); + + test('delete included groups', () => { + const deletelBtns = Polymer.dom(element.root) + .querySelectorAll('.deleteIncludedGroupButton'); + MockInteractions.tap(deletelBtns[0]); + assert.equal(element._itemId, 'testId'); + assert.equal(element._itemName, 'testName'); + MockInteractions.tap(deletelBtns[1]); + assert.equal(element._itemId, 'testId2'); + assert.equal(element._itemName, 'testName2'); + MockInteractions.tap(deletelBtns[2]); + assert.equal(element._itemId, 'testId3'); + assert.equal(element._itemName, 'testName3'); + }); + + test('_computeLoadingClass', () => { + assert.equal(element._computeLoadingClass(true), 'loading'); + + assert.equal(element._computeLoadingClass(false), ''); + }); + + test('_computeGroupUrl', () => { + assert.isUndefined(element._computeGroupUrl(undefined)); + + assert.isUndefined(element._computeGroupUrl(false)); + + let url = '#/admin/groups/uuid-529b3c2605bb1029c8146f9de4a91c776fe64498'; + assert.equal(element._computeGroupUrl(url), + 'https://test/site/admin/groups/' + + 'uuid-529b3c2605bb1029c8146f9de4a91c776fe64498'); + + url = 'https://gerrit.local/admin/groups/' + + 'uuid-529b3c2605bb1029c8146f9de4a91c776fe64498'; + assert.equal(element._computeGroupUrl(url), url); + }); + + test('fires page-error', done => { + groupStub.restore(); + + element.groupId = 1; + + const response = {status: 404}; + sandbox.stub( + element.$.restAPI, 'getGroupConfig', (group, errFn) => { + errFn(response); + }); + element.addEventListener('page-error', e => { + assert.deepEqual(e.detail.response, response); + done(); + }); + + element._loadGroupDetails(); + }); }); </script> |