| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import {assert} from 'chai'; |
| import sinon from 'sinon'; |
| import {EztAppBase} from './ezt-app-base.js'; |
| |
| |
| let element; |
| |
| describe('ezt-app-base', () => { |
| beforeEach(() => { |
| element = document.createElement('ezt-app-base'); |
| document.body.appendChild(element); |
| }); |
| |
| afterEach(() => { |
| document.body.removeChild(element); |
| }); |
| |
| it('initializes', () => { |
| assert.instanceOf(element, EztAppBase); |
| }); |
| |
| it('fetches user data when userDisplayName set', async () => { |
| sinon.stub(element, 'fetchUserData'); |
| |
| element.userDisplayName = 'test@example.com'; |
| |
| await element.updateComplete; |
| |
| sinon.assert.calledOnce(element.fetchUserData); |
| sinon.assert.calledWith(element.fetchUserData, 'test@example.com'); |
| }); |
| |
| it('does not fetch data when userDisplayName is empty', async () => { |
| sinon.stub(element, 'fetchUserData'); |
| element.userDisplayName = ''; |
| |
| await element.updateComplete; |
| |
| sinon.assert.notCalled(element.fetchUserData); |
| }); |
| |
| it('fetches project data when projectName set', async () => { |
| sinon.stub(element, 'fetchProjectData'); |
| |
| element.projectName = 'chromium'; |
| |
| await element.updateComplete; |
| |
| sinon.assert.calledOnce(element.fetchProjectData); |
| sinon.assert.calledWith(element.fetchProjectData, 'chromium'); |
| }); |
| |
| it('does not fetch data when projectName is empty', async () => { |
| sinon.stub(element, 'fetchProjectData'); |
| element.projectName = ''; |
| |
| await element.updateComplete; |
| |
| sinon.assert.notCalled(element.fetchProjectData); |
| }); |
| }); |