Factor page select tests into their own behavior

This commit is contained in:
Michael Lange
2020-03-31 16:29:34 -07:00
parent 5cc55b79e0
commit c99214441f
2 changed files with 51 additions and 37 deletions

View File

@@ -0,0 +1,42 @@
import { pluralize } from 'ember-inflector';
import { test } from 'qunit';
import { selectChoose } from 'ember-power-select/test-support';
export default function pageSizeSelect({ resourceName, pageObject, pageObjectList, setup }) {
test(`the number of ${pluralize(
resourceName
)} is equal to the localStorage user setting for page size`, async function(assert) {
const storedPageSize = 10;
window.localStorage.nomadPageSize = storedPageSize;
await setup.call(this);
assert.equal(pageObjectList.length, storedPageSize);
assert.equal(pageObject.pageSizeSelect.selectedOption, '10');
});
test('when the page size user setting is unset, the default page size is 25', async function(assert) {
await setup.call(this);
assert.equal(pageObjectList.length, pageObject.pageSize);
assert.equal(pageObject.pageSizeSelect.selectedOption, pageObject.pageSize);
});
test(`changing the page size updates the ${pluralize(
resourceName
)} list and also updates the user setting in localStorage`, async function(assert) {
const desiredPageSize = 10;
await setup.call(this);
assert.equal(window.localStorage.nomadPageSize, null);
assert.equal(pageObjectList.length, pageObject.pageSize);
assert.equal(pageObject.pageSizeSelect.selectedOption, pageObject.pageSize);
await selectChoose('[data-test-page-size-select]', desiredPageSize);
assert.equal(window.localStorage.nomadPageSize, desiredPageSize);
assert.equal(pageObjectList.length, desiredPageSize);
assert.equal(pageObject.pageSizeSelect.selectedOption, desiredPageSize);
});
}

View File

@@ -2,7 +2,7 @@ import { currentURL } from '@ember/test-helpers';
import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import { setupMirage } from 'ember-cli-mirage/test-support';
import { selectChoose } from 'ember-power-select/test-support';
import pageSizeSelect from './behaviors/page-size-select';
import JobsList from 'nomad-ui/tests/pages/jobs/list';
let managementToken, clientToken;
@@ -341,42 +341,14 @@ module('Acceptance | jobs list', function(hooks) {
assert.equal(JobsList.jobs.length, 1, 'Only one job shown due to query param');
});
test('the number of jobs shown is equal to the localStorage user setting for page size', async function(assert) {
const storedPageSize = 10;
window.localStorage.nomadPageSize = storedPageSize;
server.createList('job', JobsList.pageSize, { shallow: true, createAllocations: false });
await JobsList.visit();
assert.equal(JobsList.jobs.length, storedPageSize);
assert.equal(JobsList.pageSizeSelect.selectedOption, '10');
});
test('when the page size user setting is unset, the default page size is 25', async function(assert) {
server.createList('job', JobsList.pageSize, { shallow: true, createAllocations: false });
await JobsList.visit();
assert.equal(JobsList.jobs.length, JobsList.pageSize);
assert.equal(JobsList.pageSizeSelect.selectedOption, JobsList.pageSize);
});
test('changing the page size updates the jobs list and also updates the user setting in localStorage', async function(assert) {
const desiredPageSize = 10;
server.createList('job', JobsList.pageSize, { shallow: true, createAllocations: false });
await JobsList.visit();
assert.equal(window.localStorage.nomadPageSize, null);
assert.equal(JobsList.jobs.length, JobsList.pageSize);
assert.equal(JobsList.pageSizeSelect.selectedOption, JobsList.pageSize);
await selectChoose('[data-test-page-size-select]', desiredPageSize);
assert.equal(window.localStorage.nomadPageSize, desiredPageSize);
assert.equal(JobsList.jobs.length, desiredPageSize);
assert.equal(JobsList.pageSizeSelect.selectedOption, desiredPageSize);
pageSizeSelect({
resourceName: 'job',
pageObject: JobsList,
pageObjectList: JobsList.jobs,
async setup() {
server.createList('job', JobsList.pageSize, { shallow: true, createAllocations: false });
await JobsList.visit();
},
});
function testFacet(label, { facet, paramName, beforeEach, filter, expectedOptions }) {