blob: 79851a0fde33fc8b3cd9763c34d084edce2cea24 [file] [log] [blame]
<!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-results-view.html">
<test-fixture id="basic">
<template is="dom-template">
<build-results-view
change="[[change]]"
revision="[[revision]]"
configure-path="[[configurePath]]"
get-build-results="[[getBuildResults]]"
is-configured="[[isConfigured]]"
get-trigger="[[getTrigger]]"
retry-build="[[retryBuild]]">
</build-results-view>
</template>
</test-fixture>
<script>
const BUILD1 = {
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",
};
const REVISION = {
"kind": "REWORK",
"_number": 3,
"created": "2018-05-15 21:56:13.000000000",
"uploader": {
"_account_id": 1000000,
},
"ref": "refs/changes/00/1000/1",
"commit": {
"parents": [],
"subject": "added test file",
"message": "added test file\n\nChange-Id: I8df212a28ae23cc239afd10ee4f506887e03ab70\n",
"commit": "1c9a1dfd38ea51dc7880f3ddf669100710f0c91b"
},
};
suite('build-results-view tests', () => {
let element;
let sandbox;
let getBuildResultsSpy;
let getBuildResultsResolve;
let getTriggerSpy;
let retryBuildSpy;
let isConfiguredSpy;
let isConfiguredResolve;
setup((done) => {
sandbox = sinon.sandbox.create();
getBuildResultsSpy = sinon.stub();
const getBuildResultsPromise = new Promise((resolve, reject) => {
getBuildResultsResolve = resolve;
});
getBuildResultsSpy.returns(getBuildResultsPromise);
isConfiguredSpy = sinon.stub();
const isConfiguredPromise = new Promise((resolve, reject) => {
isConfiguredResolve = resolve;
});
isConfiguredSpy.returns(isConfiguredPromise);
getTriggerSpy = sinon.stub();
getTriggerSpy.returns(Promise.resolve({description: 'test trigger name'}));
retryBuildSpy = sinon.stub();
retryBuildSpy.returns(Promise.resolve());
element = fixture('basic', {
getTrigger: getTriggerSpy,
retryBuild: retryBuildSpy,
getBuildResults: getBuildResultsSpy,
isConfigured: isConfiguredSpy,
configurePath: 'http://example.com/test-configure',
change: {
'project': 'test-repository',
'revisions': {
'first-sha': "test-revision",
'second-sha': REVISION,
}
},
revision: REVISION,
});
flush(done);
});
teardown(() => { sandbox.restore(); });
test('renders loading', () => {
assert.equal(element.textContent.trim(), 'Loading...');
});
test('queries the builds', () => {
assert.isTrue(getBuildResultsSpy.called);
assert.isTrue(getBuildResultsSpy.calledWith('test-repository', 'second-sha'));
});
suite('no builds returned', () => {
setup((done) => {
getBuildResultsResolve([]);
flush(done);
});
test('it calls to check if the builds are configured', () => {
assert.isTrue(isConfiguredSpy.called);
assert.isTrue(isConfiguredSpy.calledWith('test-repository'));
});
suite('not configured', () => {
setup((done) => {
isConfiguredResolve(false);
flush(done);
});
test('renders checks not configured', () => {
const header = element.$$('h2');
assert.equal(header.textContent.trim(), 'Code review checks not configured');
});
test('renders the link to configure a build', () => {
const configureLink = element.$$('build-results-configure-link');
assert.exists(configureLink);
});
});
suite('no checks ran', () => {
setup((done) => {
isConfiguredResolve(true);
flush(done);
});
test('renders checks not configured', () => {
const header = element.$$('h2');
assert.equal(header.textContent.trim(), 'No checks ran for this code review');
});
test('renders the link to configure a build', () => {
const configureLink = element.$$('build-results-configure-link');
assert.exists(configureLink);
});
});
});
suite('with build results', () => {
setup(done => {
getBuildResultsResolve([BUILD1, BUILD1, BUILD1]);
flush(done);
});
test('it calls to check if the builds are configured', () => {
assert.isFalse(isConfiguredSpy.called);
});
test('renders the header', () => {
const header = element.$$('header > h3');
assert.equal(header.textContent.trim(), 'Latest checks for Patchset 3');
});
test('renders the link to configure a build', () => {
const configureLink = element.$$('header > build-results-configure-link');
assert.exists(configureLink);
});
test('renders a table of all the builds', () => {
const tbody = element.$$('table > tbody');
assert.lengthOf(tbody.querySelectorAll('build-result-item'), 3)
});
});
});
</script>