| <!DOCTYPE html> | 
 | <!-- | 
 | @license | 
 | Copyright (C) 2018 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-cla-view</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-cla-view.html"> | 
 |  | 
 | <script>void(0);</script> | 
 |  | 
 | <test-fixture id="basic"> | 
 |   <template> | 
 |     <gr-cla-view></gr-cla-view> | 
 |   </template> | 
 | </test-fixture> | 
 |  | 
 | <script> | 
 |   suite('gr-cla-view tests', () => { | 
 |     let element; | 
 |     const signedAgreements = [{ | 
 |       name: 'CLA', | 
 |       description: 'Contributor License Agreement', | 
 |       url: 'static/cla.html', | 
 |     }]; | 
 |     const auth = { | 
 |       name: 'Individual', | 
 |       description: 'test-description', | 
 |       url: 'static/cla_individual.html', | 
 |       auto_verify_group: { | 
 |         url: '#/admin/groups/uuid-e9aaddc47f305be7661ad4db9b66f9b707bd19a0', | 
 |         options: { | 
 |           visible_to_all: true, | 
 |         }, | 
 |         group_id: 20, | 
 |         owner: 'CLA Accepted - Individual', | 
 |         owner_id: 'e9aaddc47f305be7661ad4db9b66f9b707bd19a0', | 
 |         created_on: '2017-07-31 15:11:04.000000000', | 
 |         id: 'e9aaddc47f305be7661ad4db9b66f9b707bd19a0', | 
 |         name: 'CLA Accepted - Individual', | 
 |       }, | 
 |     }; | 
 |  | 
 |     const auth2 = { | 
 |       name: 'Individual2', | 
 |       description: 'test-description2', | 
 |       url: 'static/cla_individual2.html', | 
 |       auto_verify_group: { | 
 |         url: '#/admin/groups/uuid-bc53f2738ef8ad0b3a4f53846ff59b05822caecb', | 
 |         options: {}, | 
 |         group_id: 21, | 
 |         owner: 'CLA Accepted - Individual2', | 
 |         owner_id: 'bc53f2738ef8ad0b3a4f53846ff59b05822caecb', | 
 |         created_on: '2017-07-31 15:25:42.000000000', | 
 |         id: 'bc53f2738ef8ad0b3a4f53846ff59b05822caecb', | 
 |         name: 'CLA Accepted - Individual2', | 
 |       }, | 
 |     }; | 
 |  | 
 |     const auth3 = { | 
 |       name: 'CLA', | 
 |       description: 'Contributor License Agreement', | 
 |       url: 'static/cla_individual.html', | 
 |     }; | 
 |  | 
 |     const config = { | 
 |       auth: { | 
 |         use_contributor_agreements: true, | 
 |         contributor_agreements: [ | 
 |           { | 
 |             name: 'Individual', | 
 |             description: 'test-description', | 
 |             url: 'static/cla_individual.html', | 
 |           }, | 
 |           { | 
 |             name: 'CLA', | 
 |             description: 'Contributor License Agreement', | 
 |             url: 'static/cla.html', | 
 |           }], | 
 |       }, | 
 |     }; | 
 |     const config2 = { | 
 |       auth: { | 
 |         use_contributor_agreements: true, | 
 |         contributor_agreements: [ | 
 |           { | 
 |             name: 'Individual2', | 
 |             description: 'test-description2', | 
 |             url: 'static/cla_individual2.html', | 
 |           }, | 
 |         ], | 
 |       }, | 
 |     }; | 
 |     const groups = [{ | 
 |       options: {visible_to_all: true}, | 
 |       id: 'e9aaddc47f305be7661ad4db9b66f9b707bd19a0', | 
 |       group_id: 3, | 
 |       name: 'CLA Accepted - Individual', | 
 |     }, | 
 |     ]; | 
 |  | 
 |     setup(done => { | 
 |       stub('gr-rest-api-interface', { | 
 |         getConfig() { return Promise.resolve(config); }, | 
 |         getAccountGroups() { return Promise.resolve(groups); }, | 
 |         getAccountAgreements() { return Promise.resolve(signedAgreements); }, | 
 |       }); | 
 |       element = fixture('basic'); | 
 |       element.loadData().then(() => { flush(done); }); | 
 |     }); | 
 |  | 
 |     test('renders as expected with signed agreement', () => { | 
 |       const agreementSections = Polymer.dom(element.root) | 
 |           .querySelectorAll('.contributorAgreementButton'); | 
 |       const agreementSubmittedTexts = Polymer.dom(element.root) | 
 |           .querySelectorAll('.alreadySubmittedText'); | 
 |       assert.equal(agreementSections.length, 2); | 
 |       assert.isFalse(agreementSections[0].querySelector('input').disabled); | 
 |       assert.equal(getComputedStyle(agreementSubmittedTexts[0]).display, | 
 |           'none'); | 
 |       assert.isTrue(agreementSections[1].querySelector('input').disabled); | 
 |       assert.notEqual(getComputedStyle(agreementSubmittedTexts[1]).display, | 
 |           'none'); | 
 |     }); | 
 |  | 
 |     test('_disableAggreements', () => { | 
 |       // In the auto verify group and have not yet signed agreement | 
 |       assert.isTrue( | 
 |           element._disableAggreements(auth, groups, signedAgreements)); | 
 |       // Not in the auto verify group and have not yet signed agreement | 
 |       assert.isFalse( | 
 |           element._disableAggreements(auth2, groups, signedAgreements)); | 
 |       // Not in the auto verify group, have signed agreement | 
 |       assert.isTrue( | 
 |           element._disableAggreements(auth3, groups, signedAgreements)); | 
 |     }); | 
 |  | 
 |     test('_hideAggreements', () => { | 
 |       // Not in the auto verify group and have not yet signed agreement | 
 |       assert.equal( | 
 |           element._hideAggreements(auth, groups, signedAgreements), ''); | 
 |       // In the auto verify group | 
 |       assert.equal( | 
 |           element._hideAggreements(auth2, groups, signedAgreements), 'hide'); | 
 |       // Not in the auto verify group, have signed agreement | 
 |       assert.equal( | 
 |           element._hideAggreements(auth3, groups, signedAgreements), ''); | 
 |     }); | 
 |  | 
 |     test('_disableAgreementsText', () => { | 
 |       assert.isFalse(element._disableAgreementsText('I AGREE')); | 
 |       assert.isTrue(element._disableAgreementsText('I DO NOT AGREE')); | 
 |     }); | 
 |  | 
 |     test('_computeHideAgreementClass', () => { | 
 |       assert.equal( | 
 |           element._computeHideAgreementClass( | 
 |               auth.name, config.auth.contributor_agreements), | 
 |           'hideAgreementsTextBox'); | 
 |       assert.isUndefined( | 
 |           element._computeHideAgreementClass( | 
 |               auth.name, config2.auth.contributor_agreements)); | 
 |     }); | 
 |  | 
 |     test('_getAgreementsUrl', () => { | 
 |       assert.equal(element._getAgreementsUrl( | 
 |           'http://test.org/test.html'), 'http://test.org/test.html'); | 
 |       assert.equal(element._getAgreementsUrl( | 
 |           'test_cla.html'), '/test_cla.html'); | 
 |     }); | 
 |   }); | 
 | </script> |