summaryrefslogtreecommitdiffstats
path: root/polygerrit-ui/app/elements/admin/gr-group-members/gr-group-members_test.html
diff options
context:
space:
mode:
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.html123
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>