diff options
Diffstat (limited to 'polygerrit-ui/app/elements/admin/gr-group/gr-group_test.html')
-rw-r--r-- | polygerrit-ui/app/elements/admin/gr-group/gr-group_test.html | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/polygerrit-ui/app/elements/admin/gr-group/gr-group_test.html b/polygerrit-ui/app/elements/admin/gr-group/gr-group_test.html new file mode 100644 index 0000000000..7789cd59ba --- /dev/null +++ b/polygerrit-ui/app/elements/admin/gr-group/gr-group_test.html @@ -0,0 +1,170 @@ +<!DOCTYPE html> +<!-- +Copyright (C) 2017 The Android Open Source Project + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> + +<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes"> +<title>gr-group</title> + +<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script> +<script src="../../../bower_components/web-component-tester/browser.js"></script> +<link rel="import" href="../../../test/common-test-setup.html"/> +<link rel="import" href="gr-group.html"> + +<script>void(0);</script> + +<test-fixture id="basic"> + <template> + <gr-group></gr-group> + </template> +</test-fixture> + +<script> + suite('gr-group tests', () => { + let element; + let sandbox; + + setup(() => { + sandbox = sinon.sandbox.create(); + stub('gr-rest-api-interface', { + getLoggedIn() { return Promise.resolve(true); }, + getGroupConfig() { + return Promise.resolve({ + id: '6a1e70e1a88782771a91808c8af9bbb7a9871389', + url: '#/admin/groups/uuid-6a1e70e1a88782771a91808c8af9bbb7a9871389', + options: { + }, + description: 'Gerrit Site Administrators', + group_id: 1, + owner: 'Administrators', + owner_id: '6a1e70e1a88782771a91808c8af9bbb7a9871389', + }); + }, + }); + element = fixture('basic'); + }); + + teardown(() => { + sandbox.restore(); + }); + + test('loading displays before group config is loaded', () => { + assert.isTrue(element.$.loading.classList.contains('loading')); + assert.isFalse(getComputedStyle(element.$.loading).display === 'none'); + assert.isTrue(element.$.loadedContent.classList.contains('loading')); + assert.isTrue(getComputedStyle(element.$.loadedContent) + .display === 'none'); + }); + + test('default values are populated', done => { + sandbox.stub(element.$.restAPI, 'getIsGroupOwner', () => { + return Promise.resolve(true); + }); + element.groupId = 1; + element._loadGroup().then(() => { + assert.isFalse(element.$.visibleToAll.bindValue); + done(); + }); + }); + + test('rename group', done => { + const groupName = 'test-group'; + const groupName2 = 'test-group2'; + element.groupId = 1; + element._groupConfig = { + name: groupName, + }; + element._groupConfigOwner = 'testId'; + element._groupName = groupName; + element._groupOwner = true; + + sandbox.stub(element.$.restAPI, 'getIsGroupOwner', () => { + return Promise.resolve(true); + }); + + sandbox.stub(element.$.restAPI, 'saveGroupName', () => { + return Promise.resolve({status: 200}); + }); + + const button = element.$.inputUpdateNameBtn; + + element._loadGroup().then(() => { + assert.isTrue(button.hasAttribute('disabled')); + assert.isFalse(element.$.Title.classList.contains('edited')); + + element.$.groupNameInput.text = groupName2; + + element.$.groupOwnerInput.text = 'testId2'; + + assert.isFalse(button.hasAttribute('disabled')); + assert.isTrue(element.$.groupName.classList.contains('edited')); + + element._handleSaveName().then(() => { + assert.isTrue(button.hasAttribute('disabled')); + assert.isFalse(element.$.Title.classList.contains('edited')); + assert.equal(element._groupName, groupName2); + done(); + }); + + element._handleSaveOwner().then(() => { + assert.isTrue(button.hasAttribute('disabled')); + assert.isFalse(element.$.Title.classList.contains('edited')); + assert.equal(element._groupConfigOwner, 'testId2'); + done(); + }); + }); + }); + + test('test fire event', done => { + element._groupConfig = { + name: 'test-group', + }; + + sandbox.stub(element.$.restAPI, 'saveGroupName') + .returns(Promise.resolve({status: 200})); + + const showStub = sandbox.stub(element, 'fire'); + element._handleSaveName() + .then(() => { + assert.isTrue(showStub.called); + done(); + }); + }); + + test('_computeGroupDisabled return false for admin', () => { + const admin = true; + const owner = false; + assert.equal(element._computeGroupDisabled(owner, admin), false); + }); + + test('_computeGroupDisabled return true for admin', () => { + const admin = false; + const owner = false; + assert.equal(element._computeGroupDisabled(owner, admin), true); + }); + + test('_computeGroupDisabled return false for owner', () => { + const admin = false; + const owner = true; + assert.equal(element._computeGroupDisabled(owner, admin), false); + }); + + test('_computeGroupDisabled return true for owner', () => { + const admin = false; + const owner = false; + assert.equal(element._computeGroupDisabled(owner, admin), true); + }); + }); +</script> |