Skip to content

Commit

Permalink
Extract all other tests
Browse files Browse the repository at this point in the history
There’s one left that has some duplication but it doesn’t
seem worth extracting due to how much customisation it
would require.
  • Loading branch information
backspace committed May 27, 2020
1 parent d876037 commit 9ddb00d
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 187 deletions.
95 changes: 2 additions & 93 deletions ui/tests/acceptance/allocation-fs-test.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import { currentURL } from '@ember/test-helpers';
import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import moment from 'moment';

import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import Response from 'ember-cli-mirage/response';

import { formatBytes } from 'nomad-ui/helpers/format-bytes';
import { filesForPath } from 'nomad-ui/mirage/config';

import browseFilesystem from './behaviors/fs';

import FS from 'nomad-ui/tests/pages/allocations/task/fs';
Expand All @@ -17,20 +13,6 @@ let allocation;
let allocationShortId;
let files;

const fileSort = (prop, files) => {
let dir = [];
let file = [];
files.forEach(f => {
if (f.isDir) {
dir.push(f);
} else {
file.push(f);
}
});

return dir.sortBy(prop).concat(file.sortBy(prop));
};

module('Acceptance | allocation fs', function(hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
Expand Down Expand Up @@ -65,11 +47,7 @@ module('Acceptance | allocation fs', function(hooks) {

this.files = files;
this.directory = files[0];
});

test('visiting /allocations/:allocation_id/fs', async function(assert) {
await FS.visitAllocation({ id: allocation.id });
assert.equal(currentURL(), `/allocations/${allocation.id}/fs`, 'No redirect');
this.nestedDirectory = files[1];
});

test('when the allocation is not running, an empty state is shown', async function(assert) {
Expand All @@ -96,76 +74,7 @@ module('Acceptance | allocation fs', function(hooks) {
getTitleComponent: ({ allocation }) => `Allocation ${allocation.id.split('-')[0]} filesystem`,
getBreadcrumbComponent: ({ allocation }) => allocation.id.split('-')[0],
getFilesystemRoot: () => '',
pageObjectVisitFunctionName: 'visitAllocation',
pageObjectVisitPathFunctionName: 'visitAllocationPath',
});

test('navigating allocation filesystem', async function(assert) {
await FS.visitAllocationPath({ id: allocation.id, path: '/' });

const sortedFiles = fileSort('name', filesForPath(this.server.schema.allocFiles, '').models);

assert.ok(FS.fileViewer.isHidden);

assert.equal(FS.directoryEntries.length, 4);

assert.equal(FS.breadcrumbsText, allocationShortId);

assert.equal(FS.breadcrumbs.length, 1);
assert.ok(FS.breadcrumbs[0].isActive);
assert.equal(FS.breadcrumbs[0].text, allocationShortId);

FS.directoryEntries[0].as(directory => {
const fileRecord = sortedFiles[0];
assert.equal(directory.name, fileRecord.name, 'directories should come first');
assert.ok(directory.isDirectory);
assert.equal(directory.size, '', 'directory sizes are hidden');
assert.equal(directory.lastModified, moment(fileRecord.modTime).fromNow());
assert.notOk(directory.path.includes('//'), 'paths shouldn’t have redundant separators');
});

FS.directoryEntries[2].as(file => {
const fileRecord = sortedFiles[2];
assert.equal(file.name, fileRecord.name);
assert.ok(file.isFile);
assert.equal(file.size, formatBytes([fileRecord.size]));
assert.equal(file.lastModified, moment(fileRecord.modTime).fromNow());
});

await FS.directoryEntries[0].visit();

assert.equal(FS.directoryEntries.length, 1);

assert.equal(FS.breadcrumbs.length, 2);
assert.equal(FS.breadcrumbsText, `${allocationShortId} ${files[0].name}`);

assert.notOk(FS.breadcrumbs[0].isActive);

assert.equal(FS.breadcrumbs[1].text, files[0].name);
assert.ok(FS.breadcrumbs[1].isActive);

await FS.directoryEntries[0].visit();

assert.equal(FS.directoryEntries.length, 1);
assert.notOk(
FS.directoryEntries[0].path.includes('//'),
'paths shouldn’t have redundant separators'
);

assert.equal(FS.breadcrumbs.length, 3);
assert.equal(FS.breadcrumbsText, `${allocationShortId} ${files[0].name} ${files[1].name}`);
assert.equal(FS.breadcrumbs[2].text, files[1].name);

assert.notOk(
FS.breadcrumbs[0].path.includes('//'),
'paths shouldn’t have redundant separators'
);
assert.notOk(
FS.breadcrumbs[1].path.includes('//'),
'paths shouldn’t have redundant separators'
);

await FS.breadcrumbs[1].visit();
assert.equal(FS.breadcrumbsText, `${allocationShortId} ${files[0].name}`);
assert.equal(FS.breadcrumbs.length, 2);
});
});
84 changes: 83 additions & 1 deletion ui/tests/acceptance/behaviors/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import FS from 'nomad-ui/tests/pages/allocations/task/fs';
import moment from 'moment';
import { filesForPath } from 'nomad-ui/mirage/config';
import Response from 'ember-cli-mirage/response';
import { formatBytes } from 'nomad-ui/helpers/format-bytes';

const fileSort = (prop, files) => {
let dir = [];
Expand All @@ -19,7 +20,16 @@ const fileSort = (prop, files) => {
return dir.sortBy(prop).concat(file.sortBy(prop));
};

export default function browseFilesystem({ pageObjectVisitPathFunctionName, visitSegments, getExpectedPathBase, getTitleComponent, getBreadcrumbComponent, getFilesystemRoot }) {
export default function browseFilesystem({ pageObjectVisitPathFunctionName, pageObjectVisitFunctionName, visitSegments, getExpectedPathBase, getTitleComponent, getBreadcrumbComponent, getFilesystemRoot }) {
test('visiting filesystem root', async function(assert) {
await FS[pageObjectVisitFunctionName](visitSegments({allocation: this.allocation, task: this.task }));

const pathBaseWithTrailingSlash = getExpectedPathBase({ allocation: this.allocation, task: this.task });
const pathBaseWithoutTrailingSlash = pathBaseWithTrailingSlash.slice(0, -1);

assert.equal(currentURL(), pathBaseWithoutTrailingSlash, 'No redirect');
});

test('visiting filesystem paths', async function(assert) {
const paths = ['some-file.log', 'a/deep/path/to/a/file.log', '/', 'Unicode™®'];

Expand Down Expand Up @@ -49,6 +59,78 @@ export default function browseFilesystem({ pageObjectVisitPathFunctionName, visi
}, Promise.resolve());
});

test('navigating allocation filesystem', async function(assert) {
const objects = { allocation: this.allocation, task: this.task };
await FS[pageObjectVisitPathFunctionName]({ ...visitSegments(objects), path: '/' });

const files = this.files;
const sortedFiles = fileSort('name', filesForPath(this.server.schema.allocFiles, getFilesystemRoot(objects)).models);

assert.ok(FS.fileViewer.isHidden);

assert.equal(FS.directoryEntries.length, 4);

assert.equal(FS.breadcrumbsText, getBreadcrumbComponent(objects));

assert.equal(FS.breadcrumbs.length, 1);
assert.ok(FS.breadcrumbs[0].isActive);
assert.equal(FS.breadcrumbs[0].text, getBreadcrumbComponent(objects));

FS.directoryEntries[0].as(directory => {
const fileRecord = sortedFiles[0];
assert.equal(directory.name, fileRecord.name, 'directories should come first');
assert.ok(directory.isDirectory);
assert.equal(directory.size, '', 'directory sizes are hidden');
assert.equal(directory.lastModified, moment(fileRecord.modTime).fromNow());
assert.notOk(directory.path.includes('//'), 'paths shouldn’t have redundant separators');
});

FS.directoryEntries[2].as(file => {
const fileRecord = sortedFiles[2];
assert.equal(file.name, fileRecord.name);
assert.ok(file.isFile);
assert.equal(file.size, formatBytes([fileRecord.size]));
assert.equal(file.lastModified, moment(fileRecord.modTime).fromNow());
});

await FS.directoryEntries[0].visit();

assert.equal(FS.directoryEntries.length, 1);

assert.equal(FS.breadcrumbs.length, 2);
assert.equal(FS.breadcrumbsText, `${getBreadcrumbComponent(objects)} ${this.directory.name}`);

assert.notOk(FS.breadcrumbs[0].isActive);

assert.equal(FS.breadcrumbs[1].text, this.directory.name);
assert.ok(FS.breadcrumbs[1].isActive);

await FS.directoryEntries[0].visit();

assert.equal(FS.directoryEntries.length, 1);
assert.notOk(
FS.directoryEntries[0].path.includes('//'),
'paths shouldn’t have redundant separators'
);

assert.equal(FS.breadcrumbs.length, 3);
assert.equal(FS.breadcrumbsText, `${getBreadcrumbComponent(objects)} ${this.directory.name} ${this.nestedDirectory.name}`);
assert.equal(FS.breadcrumbs[2].text, this.nestedDirectory.name);

assert.notOk(
FS.breadcrumbs[0].path.includes('//'),
'paths shouldn’t have redundant separators'
);
assert.notOk(
FS.breadcrumbs[1].path.includes('//'),
'paths shouldn’t have redundant separators'
);

await FS.breadcrumbs[1].visit();
assert.equal(FS.breadcrumbsText, `${getBreadcrumbComponent(objects)} ${this.directory.name}`);
assert.equal(FS.breadcrumbs.length, 2);
});

test('sorting allocation filesystem directory', async function(assert) {
this.server.get('/client/fs/ls/:allocation_id', () => {
return [
Expand Down
95 changes: 2 additions & 93 deletions ui/tests/acceptance/task-fs-test.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import { currentURL } from '@ember/test-helpers';
import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import moment from 'moment';

import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import Response from 'ember-cli-mirage/response';

import { formatBytes } from 'nomad-ui/helpers/format-bytes';
import { filesForPath } from 'nomad-ui/mirage/config';

import browseFilesystem from './behaviors/fs';

import FS from 'nomad-ui/tests/pages/allocations/task/fs';
Expand All @@ -17,20 +13,6 @@ let allocation;
let task;
let files, taskDirectory, directory, nestedDirectory;

const fileSort = (prop, files) => {
let dir = [];
let file = [];
files.forEach(f => {
if (f.isDir) {
dir.push(f);
} else {
file.push(f);
}
});

return dir.sortBy(prop).concat(file.sortBy(prop));
};

module('Acceptance | task fs', function(hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
Expand Down Expand Up @@ -75,11 +57,7 @@ module('Acceptance | task fs', function(hooks) {

this.files = files;
this.directory = directory;
});

test('visiting /allocations/:allocation_id/:task_name/fs', async function(assert) {
await FS.visit({ id: allocation.id, name: task.name });
assert.equal(currentURL(), `/allocations/${allocation.id}/${task.name}/fs`, 'No redirect');
this.nestedDirectory = nestedDirectory;
});

test('when the task is not running, an empty state is shown', async function(assert) {
Expand All @@ -106,76 +84,7 @@ module('Acceptance | task fs', function(hooks) {
getTitleComponent: ({task}) => `Task ${task.name} filesystem`,
getBreadcrumbComponent: ({task}) => task.name,
getFilesystemRoot: ({ task }) => task.name,
pageObjectVisitFunctionName: 'visit',
pageObjectVisitPathFunctionName: 'visitPath',
});

test('navigating allocation filesystem', async function(assert) {
await FS.visitPath({ id: allocation.id, name: task.name, path: '/' });

const sortedFiles = fileSort('name', filesForPath(this.server.schema.allocFiles, task.name).models);

assert.ok(FS.fileViewer.isHidden);

assert.equal(FS.directoryEntries.length, 4);

assert.equal(FS.breadcrumbsText, task.name);

assert.equal(FS.breadcrumbs.length, 1);
assert.ok(FS.breadcrumbs[0].isActive);
assert.equal(FS.breadcrumbs[0].text, 'task-name');

FS.directoryEntries[0].as(directory => {
const fileRecord = sortedFiles[0];
assert.equal(directory.name, fileRecord.name, 'directories should come first');
assert.ok(directory.isDirectory);
assert.equal(directory.size, '', 'directory sizes are hidden');
assert.equal(directory.lastModified, moment(fileRecord.modTime).fromNow());
assert.notOk(directory.path.includes('//'), 'paths shouldn’t have redundant separators');
});

FS.directoryEntries[2].as(file => {
const fileRecord = sortedFiles[2];
assert.equal(file.name, fileRecord.name);
assert.ok(file.isFile);
assert.equal(file.size, formatBytes([fileRecord.size]));
assert.equal(file.lastModified, moment(fileRecord.modTime).fromNow());
});

await FS.directoryEntries[0].visit();

assert.equal(FS.directoryEntries.length, 1);

assert.equal(FS.breadcrumbs.length, 2);
assert.equal(FS.breadcrumbsText, `${task.name} ${directory.name}`);

assert.notOk(FS.breadcrumbs[0].isActive);

assert.equal(FS.breadcrumbs[1].text, directory.name);
assert.ok(FS.breadcrumbs[1].isActive);

await FS.directoryEntries[0].visit();

assert.equal(FS.directoryEntries.length, 1);
assert.notOk(
FS.directoryEntries[0].path.includes('//'),
'paths shouldn’t have redundant separators'
);

assert.equal(FS.breadcrumbs.length, 3);
assert.equal(FS.breadcrumbsText, `${task.name} ${directory.name} ${nestedDirectory.name}`);
assert.equal(FS.breadcrumbs[2].text, nestedDirectory.name);

assert.notOk(
FS.breadcrumbs[0].path.includes('//'),
'paths shouldn’t have redundant separators'
);
assert.notOk(
FS.breadcrumbs[1].path.includes('//'),
'paths shouldn’t have redundant separators'
);

await FS.breadcrumbs[1].visit();
assert.equal(FS.breadcrumbsText, `${task.name} ${directory.name}`);
assert.equal(FS.breadcrumbs.length, 2);
});
});

0 comments on commit 9ddb00d

Please sign in to comment.