From 9ddb00da67f6976f26669950aebc442b6d902954 Mon Sep 17 00:00:00 2001 From: Buck Doyle Date: Wed, 27 May 2020 15:28:24 -0500 Subject: [PATCH] Extract all other tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There’s one left that has some duplication but it doesn’t seem worth extracting due to how much customisation it would require. --- ui/tests/acceptance/allocation-fs-test.js | 95 +---------------------- ui/tests/acceptance/behaviors/fs.js | 84 +++++++++++++++++++- ui/tests/acceptance/task-fs-test.js | 95 +---------------------- 3 files changed, 87 insertions(+), 187 deletions(-) diff --git a/ui/tests/acceptance/allocation-fs-test.js b/ui/tests/acceptance/allocation-fs-test.js index 37fe16d139f3..72b8874a46ef 100644 --- a/ui/tests/acceptance/allocation-fs-test.js +++ b/ui/tests/acceptance/allocation-fs-test.js @@ -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'; @@ -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); @@ -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) { @@ -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); - }); }); diff --git a/ui/tests/acceptance/behaviors/fs.js b/ui/tests/acceptance/behaviors/fs.js index 14e3dd367b11..0563f61d8c56 100644 --- a/ui/tests/acceptance/behaviors/fs.js +++ b/ui/tests/acceptance/behaviors/fs.js @@ -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 = []; @@ -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™®']; @@ -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 [ diff --git a/ui/tests/acceptance/task-fs-test.js b/ui/tests/acceptance/task-fs-test.js index aa95fc14e748..5514035032a3 100644 --- a/ui/tests/acceptance/task-fs-test.js +++ b/ui/tests/acceptance/task-fs-test.js @@ -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'; @@ -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); @@ -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) { @@ -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); - }); });