blob: 063714ece9a8c55171f77710f161b567d8e95277 [file] [log] [blame]
// 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 {MrRelatedIssues} from './mr-related-issues.js';
let element;
describe('mr-related-issues', () => {
beforeEach(() => {
element = document.createElement('mr-related-issues');
document.body.appendChild(element);
});
afterEach(() => {
document.body.removeChild(element);
});
it('initializes', () => {
assert.instanceOf(element, MrRelatedIssues);
});
it('dialog closes when issueRef changes', async () => {
element.issueRef = {projectName: 'chromium', localId: 22};
await element.updateComplete;
const dialog = element.shadowRoot.querySelector('chops-dialog');
element.open();
await element.updateComplete;
assert.isTrue(dialog.opened);
element.issueRef = {projectName: 'chromium', localId: 23};
await element.updateComplete;
assert.isFalse(dialog.opened);
});
it('computes blocked on table rows', () => {
element.projectName = 'proj';
element.sortedBlockedOn = [
{projectName: 'proj', localId: 1, statusRef: {meansOpen: true},
summary: 'Issue 1'},
{projectName: 'proj', localId: 2, statusRef: {meansOpen: true},
summary: 'Issue 2'},
{projectName: 'proj', localId: 3,
summary: 'Issue 3'},
{projectName: 'proj2', localId: 4,
summary: 'Issue 4 on another project'},
{extIdentifier: 'b/123456', statusRef: {meansOpen: true}},
{extIdentifier: 'b/987654', statusRef: {meansOpen: false},
summary: 'FedRef with a summary'},
{projectName: 'proj', localId: 5, statusRef: {meansOpen: false},
summary: 'Issue 5'},
{projectName: 'proj2', localId: 6, statusRef: {meansOpen: false},
summary: 'Issue 6 on another project'},
];
assert.deepEqual(element._rows, [
{
draggable: true,
cells: [
{
type: 'issue',
issue: {projectName: 'proj', localId: 1, statusRef: {meansOpen: true},
summary: 'Issue 1'},
isClosed: false,
},
{
type: 'text',
content: 'Issue 1',
},
],
},
{
draggable: true,
cells: [
{
type: 'issue',
issue: {projectName: 'proj', localId: 2, statusRef: {meansOpen: true},
summary: 'Issue 2'},
isClosed: false,
},
{
type: 'text',
content: 'Issue 2',
},
],
},
{
draggable: true,
cells: [
{
type: 'issue',
issue: {projectName: 'proj', localId: 3,
summary: 'Issue 3'},
isClosed: false,
},
{
type: 'text',
content: 'Issue 3',
},
],
},
{
draggable: true,
cells: [
{
type: 'issue',
issue: {projectName: 'proj2', localId: 4,
summary: 'Issue 4 on another project'},
isClosed: false,
},
{
type: 'text',
content: 'Issue 4 on another project',
},
],
},
{
draggable: false,
cells: [
{
type: 'issue',
issue: {
extIdentifier: 'b/123456',
statusRef: {meansOpen: true},
},
isClosed: false,
},
{
type: 'text',
content: '(not available)',
},
],
},
{
draggable: false,
cells: [
{
type: 'issue',
issue: {
extIdentifier: 'b/987654',
statusRef: {meansOpen: false},
summary: 'FedRef with a summary',
},
isClosed: true,
},
{
type: 'text',
content: 'FedRef with a summary',
},
],
},
{
draggable: false,
cells: [
{
type: 'issue',
issue: {projectName: 'proj', localId: 5,
statusRef: {meansOpen: false},
summary: 'Issue 5'},
isClosed: true,
},
{
type: 'text',
content: 'Issue 5',
},
],
},
{
draggable: false,
cells: [
{
type: 'issue',
issue: {projectName: 'proj2', localId: 6,
statusRef: {meansOpen: false},
summary: 'Issue 6 on another project'},
isClosed: true,
},
{
type: 'text',
content: 'Issue 6 on another project',
},
],
},
]);
});
});