29de8f4f76
This continues #8455 by adding accessibility audits to component integration tests and fixing associated errors. It adds audits to existing tests rather than adding separate ones to facilitate auditing the various permutations a component’s rendering can go through. It also adds linting to ensure audits happen in component tests. This necessitated consolidating test files that were scattered.
105 lines
3.5 KiB
JavaScript
105 lines
3.5 KiB
JavaScript
import { module, test } from 'qunit';
|
|
import { setupRenderingTest } from 'ember-qunit';
|
|
import hbs from 'htmlbars-inline-precompile';
|
|
import { startMirage } from 'nomad-ui/initializers/ember-cli-mirage';
|
|
import { render, settled } from '@ember/test-helpers';
|
|
import { initialize as fragmentSerializerInitializer } from 'nomad-ui/initializers/fragment-serializer';
|
|
import { componentA11yAudit } from 'nomad-ui/tests/helpers/a11y-audit';
|
|
|
|
module('Integration | Component | plugin allocation row', function(hooks) {
|
|
setupRenderingTest(hooks);
|
|
|
|
hooks.beforeEach(function() {
|
|
fragmentSerializerInitializer(this.owner);
|
|
this.store = this.owner.lookup('service:store');
|
|
this.server = startMirage();
|
|
this.server.create('node');
|
|
});
|
|
|
|
hooks.afterEach(function() {
|
|
this.server.shutdown();
|
|
});
|
|
|
|
test('Plugin allocation row immediately fetches the plugin allocation', async function(assert) {
|
|
const plugin = this.server.create('csi-plugin', { id: 'plugin', controllerRequired: true });
|
|
const storageController = plugin.controllers.models[0];
|
|
|
|
const pluginRecord = await this.store.find('plugin', 'csi/plugin');
|
|
|
|
this.setProperties({
|
|
plugin: pluginRecord.get('controllers.firstObject'),
|
|
});
|
|
|
|
await render(hbs`
|
|
<PluginAllocationRow @pluginAllocation={{plugin}} />
|
|
`);
|
|
|
|
await settled();
|
|
|
|
const allocationRequest = this.server.pretender.handledRequests.find(req =>
|
|
req.url.startsWith('/v1/allocation')
|
|
);
|
|
assert.equal(allocationRequest.url, `/v1/allocation/${storageController.allocID}`);
|
|
await componentA11yAudit(this.element, assert);
|
|
});
|
|
|
|
test('After the plugin allocation row fetches the plugin allocation, allocation stats are fetched', async function(assert) {
|
|
const plugin = this.server.create('csi-plugin', { id: 'plugin', controllerRequired: true });
|
|
const storageController = plugin.controllers.models[0];
|
|
|
|
const pluginRecord = await this.store.find('plugin', 'csi/plugin');
|
|
|
|
this.setProperties({
|
|
plugin: pluginRecord.get('controllers.firstObject'),
|
|
});
|
|
|
|
await render(hbs`
|
|
<PluginAllocationRow @pluginAllocation={{plugin}} />
|
|
`);
|
|
|
|
await settled();
|
|
|
|
const [statsRequest] = this.server.pretender.handledRequests.slice(-1);
|
|
|
|
assert.equal(statsRequest.url, `/v1/client/allocation/${storageController.allocID}/stats`);
|
|
});
|
|
|
|
test('Setting a new plugin fetches the new plugin allocation', async function(assert) {
|
|
const plugin = this.server.create('csi-plugin', {
|
|
id: 'plugin',
|
|
isMonolith: false,
|
|
controllerRequired: true,
|
|
controllersExpected: 2,
|
|
});
|
|
const storageController = plugin.controllers.models[0];
|
|
const storageController2 = plugin.controllers.models[1];
|
|
|
|
const pluginRecord = await this.store.find('plugin', 'csi/plugin');
|
|
|
|
this.setProperties({
|
|
plugin: pluginRecord.get('controllers.firstObject'),
|
|
});
|
|
|
|
await render(hbs`
|
|
<PluginAllocationRow @pluginAllocation={{plugin}} />
|
|
`);
|
|
|
|
await settled();
|
|
|
|
const allocationRequest = this.server.pretender.handledRequests.find(req =>
|
|
req.url.startsWith('/v1/allocation')
|
|
);
|
|
|
|
assert.equal(allocationRequest.url, `/v1/allocation/${storageController.allocID}`);
|
|
|
|
this.set('plugin', pluginRecord.get('controllers').toArray()[1]);
|
|
await settled();
|
|
|
|
const latestAllocationRequest = this.server.pretender.handledRequests
|
|
.filter(req => req.url.startsWith('/v1/allocation'))
|
|
.reverse()[0];
|
|
|
|
assert.equal(latestAllocationRequest.url, `/v1/allocation/${storageController2.allocID}`);
|
|
});
|
|
});
|