| <!DOCTYPE html> |
| <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes"> |
| <script src="imports.js"></script> |
| <script src="webcomponentsjs/webcomponents-lite.js"></script> |
| <link rel="import" href="polymer/polymer.html"> |
| |
| <title>build-result-item</title> |
| <link rel="import" href="webcomponent_lib/build-result-item.html"> |
| |
| <test-fixture id="basic"> |
| <template is="dom-template"> |
| <build-result-item |
| build="{{build}}" |
| get-trigger="[[getTrigger]]" |
| retry-build="[[retryBuild]]"> |
| </build-result-item> |
| </template> |
| </test-fixture> |
| |
| <script> |
| suite('build-result-item tests', () => { |
| let element; |
| let sandbox; |
| let getTriggerSpy; |
| let resolveGetTrigger; |
| let rejectGetTrigger; |
| let retryBuildSpy; |
| |
| setup((done) => { |
| sandbox = sinon.sandbox.create(); |
| const getTriggerPromise = new Promise((resolve, reject) => { |
| resolveGetTrigger = resolve; |
| rejectGetTrigger = reject; |
| }); |
| getTriggerSpy = sinon.stub(); |
| getTriggerSpy.returns(getTriggerPromise); |
| retryBuildSpy = sinon.stub(); |
| retryBuildSpy.returns(Promise.resolve()); |
| |
| element = fixture('basic', { |
| getTrigger: getTriggerSpy, |
| retryBuild: retryBuildSpy, |
| build: { |
| buildTriggerId: 'test-build-trigger-id', |
| logUrl: 'http://example.com/test-log-url', |
| startTime: "2019-02-06T22:25:19.269Z", |
| finishTime: "2019-02-06T22:25:44.574Z", |
| }, |
| }); |
| flush(done); |
| }); |
| |
| teardown(() => { sandbox.restore(); }); |
| |
| suite('trigger name', () => { |
| test('calls getTrigger', () => { |
| assert.isTrue(getTriggerSpy.called); |
| assert.isTrue(getTriggerSpy.calledWith('test-build-trigger-id')); |
| }); |
| |
| function assertTriggerText(text) { |
| const name = element.$$('td:nth-child(1)'); |
| assert.equal(name.textContent.trim(), text); |
| } |
| |
| suite('on success', () => { |
| setup(done => { |
| resolveGetTrigger({description: 'test trigger name'}); |
| flush(done); |
| }); |
| |
| test('renders the trigger name on success', () => { |
| assertTriggerText('test trigger name'); |
| }); |
| }); |
| |
| suite('on empty response', () => { |
| setup(done => { |
| resolveGetTrigger(); |
| flush(done); |
| }); |
| |
| test('renders the id when there is no description', () => { |
| assertTriggerText('test-build-trigger-id'); |
| }); |
| }); |
| |
| suite('on error', () => { |
| setup(done => { |
| rejectGetTrigger(new Error('broken')); |
| flush(done); |
| }); |
| |
| test('renders the id when the call fails', () => { |
| assertTriggerText('test-build-trigger-id'); |
| }); |
| }); |
| }); |
| |
| test('renders the status', () => { |
| const status = element.$$('td:nth-child(3) > build-result-status'); |
| assert.exists(status); |
| }); |
| |
| test('renders the checking system', () => { |
| const checkingSystem = element.$$('td:nth-child(4)'); |
| assert.equal(checkingSystem .textContent.trim(), "Google Cloud Build"); |
| }); |
| |
| test('renders the run date', () => { |
| const name = element.$$('td:nth-child(5)'); |
| assert.equal(name .textContent.trim(), "2/6/2019"); |
| }); |
| |
| suite('duration', () => { |
| test('renders the run duration', () => { |
| const name = element.$$('td:nth-child(6)'); |
| assert.equal(name .textContent.trim(), "25 sec"); |
| }); |
| |
| test('renders 0 sec when the start and end time are the same', () => { |
| element.build = { |
| buildTriggerId: 'test-build-trigger-id', |
| logUrl: 'http://example.com/test-log-url', |
| startTime: "2019-02-06T22:25:19.269Z", |
| finishTime: "2019-02-06T22:25:19.269Z", |
| }; |
| const name = element.$$('td:nth-child(6)'); |
| assert.equal(name .textContent.trim(), "0 sec"); |
| }); |
| }); |
| |
| test('renders a link to the log', () => { |
| const logLink = element.$$('td:nth-child(7) > a'); |
| assert.equal(logLink.getAttribute('href'), "http://example.com/test-log-url"); |
| assert.equal(logLink.textContent.trim(), "View log"); |
| }); |
| |
| suite('retryBuild', () => { |
| let retryBuildLink; |
| |
| setup(() => { |
| retryBuildLink = element.$$('td:nth-child(7) > gr-button'); |
| }); |
| |
| test('shows a link to the log url', () => { |
| assert.equal(retryBuildLink.textContent.trim(), "Re-run"); |
| }); |
| |
| test('clicking on the link calls the retryBuild property', () => { |
| assert.isFalse(retryBuildSpy.called); |
| retryBuildLink.click(); |
| assert.isTrue(retryBuildSpy.called); |
| }); |
| }); |
| }); |
| </script> |