blob: 828a3c65590a0d4daded2a9371a3b81309650dee [file] [log] [blame]
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import '../../../test/common-test-setup';
import './gr-group-audit-log';
import {
addListenerForTest,
mockPromise,
stubRestApi,
} from '../../../test/test-utils';
import {GrGroupAuditLog} from './gr-group-audit-log';
import {
EncodedGroupId,
GroupAuditEventType,
GroupInfo,
GroupName,
} from '../../../types/common';
import {
createAccountWithId,
createGroupAuditEventInfo,
createGroupInfo,
} from '../../../test/test-data-generators';
import {PageErrorEvent} from '../../../types/events';
import {fixture, html, assert} from '@open-wc/testing';
suite('gr-group-audit-log tests', () => {
let element: GrGroupAuditLog;
setup(async () => {
element = await fixture(html`<gr-group-audit-log></gr-group-audit-log>`);
});
test('render', () => {
assert.shadowDom.equal(
element,
/* HTML */ `
<table class="genericList" id="list">
<tbody>
<tr class="headerRow">
<th class="date topHeader">Date</th>
<th class="topHeader type">Type</th>
<th class="member topHeader">Member</th>
<th class="by-user topHeader">By User</th>
</tr>
<tr class="loading loadingMsg" id="loading">
<td>Loading...</td>
</tr>
</tbody>
</table>
`
);
});
suite('members', () => {
test('test getNameForGroup', () => {
let member: GroupInfo = {
...createGroupInfo(),
name: 'test-name' as GroupName,
};
assert.equal(element.getNameForGroup(member), 'test-name');
member = createGroupInfo('test-id');
assert.equal(element.getNameForGroup(member), 'test-id');
});
test('test isGroupEvent', () => {
assert.isTrue(
element.isGroupEvent(
createGroupAuditEventInfo(GroupAuditEventType.ADD_GROUP)
)
);
assert.isTrue(
element.isGroupEvent(
createGroupAuditEventInfo(GroupAuditEventType.REMOVE_GROUP)
)
);
assert.isFalse(
element.isGroupEvent(
createGroupAuditEventInfo(GroupAuditEventType.ADD_USER)
)
);
assert.isFalse(
element.isGroupEvent(
createGroupAuditEventInfo(GroupAuditEventType.REMOVE_USER)
)
);
});
});
suite('users', () => {
test('test getIdForUser', () => {
const user = {
...createAccountWithId(12),
username: 'test-user',
};
assert.equal(element.getIdForUser(user), ' (12)');
});
test('test _account_id not present', () => {
const account = {
user: {
username: 'test-user',
},
};
assert.equal(element.getIdForUser(account.user), '');
});
});
suite('404', () => {
test('fires page-error', async () => {
element.groupId = '1' as EncodedGroupId;
await element.updateComplete;
const response = {...new Response(), status: 404};
stubRestApi('getGroupAuditLog').callsFake((_group, errFn) => {
if (errFn) errFn(response);
return Promise.resolve(undefined);
});
const pageErrorCalled = mockPromise();
addListenerForTest(document, 'page-error', e => {
assert.deepEqual((e as PageErrorEvent).detail.response, response);
pageErrorCalled.resolve();
});
element.getAuditLogs();
await pageErrorCalled;
});
});
});