Skip to content

Commit 96da717

Browse files
committed
Extract all other tests
There’s one left that has some duplication but it doesn’t seem worth extracting due to how much customisation it would require.
1 parent d876037 commit 96da717

File tree

3 files changed

+86
-191
lines changed

3 files changed

+86
-191
lines changed
+2-96
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,16 @@
1-
import { currentURL } from '@ember/test-helpers';
21
import { module, test } from 'qunit';
32
import { setupApplicationTest } from 'ember-qunit';
4-
import moment from 'moment';
53

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

9-
import { formatBytes } from 'nomad-ui/helpers/format-bytes';
10-
import { filesForPath } from 'nomad-ui/mirage/config';
11-
127
import browseFilesystem from './behaviors/fs';
138

149
import FS from 'nomad-ui/tests/pages/allocations/task/fs';
1510

1611
let allocation;
17-
let allocationShortId;
1812
let files;
1913

20-
const fileSort = (prop, files) => {
21-
let dir = [];
22-
let file = [];
23-
files.forEach(f => {
24-
if (f.isDir) {
25-
dir.push(f);
26-
} else {
27-
file.push(f);
28-
}
29-
});
30-
31-
return dir.sortBy(prop).concat(file.sortBy(prop));
32-
};
33-
3414
module('Acceptance | allocation fs', function(hooks) {
3515
setupApplicationTest(hooks);
3616
setupMirage(hooks);
@@ -41,7 +21,6 @@ module('Acceptance | allocation fs', function(hooks) {
4121
const job = server.create('job', { createAllocations: false });
4222

4323
allocation = server.create('allocation', { jobId: job.id, clientStatus: 'running' });
44-
allocationShortId = allocation.id.split('-')[0];
4524

4625
this.allocation = allocation;
4726

@@ -65,11 +44,7 @@ module('Acceptance | allocation fs', function(hooks) {
6544

6645
this.files = files;
6746
this.directory = files[0];
68-
});
69-
70-
test('visiting /allocations/:allocation_id/fs', async function(assert) {
71-
await FS.visitAllocation({ id: allocation.id });
72-
assert.equal(currentURL(), `/allocations/${allocation.id}/fs`, 'No redirect');
47+
this.nestedDirectory = files[1];
7348
});
7449

7550
test('when the allocation is not running, an empty state is shown', async function(assert) {
@@ -96,76 +71,7 @@ module('Acceptance | allocation fs', function(hooks) {
9671
getTitleComponent: ({ allocation }) => `Allocation ${allocation.id.split('-')[0]} filesystem`,
9772
getBreadcrumbComponent: ({ allocation }) => allocation.id.split('-')[0],
9873
getFilesystemRoot: () => '',
74+
pageObjectVisitFunctionName: 'visitAllocation',
9975
pageObjectVisitPathFunctionName: 'visitAllocationPath',
10076
});
101-
102-
test('navigating allocation filesystem', async function(assert) {
103-
await FS.visitAllocationPath({ id: allocation.id, path: '/' });
104-
105-
const sortedFiles = fileSort('name', filesForPath(this.server.schema.allocFiles, '').models);
106-
107-
assert.ok(FS.fileViewer.isHidden);
108-
109-
assert.equal(FS.directoryEntries.length, 4);
110-
111-
assert.equal(FS.breadcrumbsText, allocationShortId);
112-
113-
assert.equal(FS.breadcrumbs.length, 1);
114-
assert.ok(FS.breadcrumbs[0].isActive);
115-
assert.equal(FS.breadcrumbs[0].text, allocationShortId);
116-
117-
FS.directoryEntries[0].as(directory => {
118-
const fileRecord = sortedFiles[0];
119-
assert.equal(directory.name, fileRecord.name, 'directories should come first');
120-
assert.ok(directory.isDirectory);
121-
assert.equal(directory.size, '', 'directory sizes are hidden');
122-
assert.equal(directory.lastModified, moment(fileRecord.modTime).fromNow());
123-
assert.notOk(directory.path.includes('//'), 'paths shouldn’t have redundant separators');
124-
});
125-
126-
FS.directoryEntries[2].as(file => {
127-
const fileRecord = sortedFiles[2];
128-
assert.equal(file.name, fileRecord.name);
129-
assert.ok(file.isFile);
130-
assert.equal(file.size, formatBytes([fileRecord.size]));
131-
assert.equal(file.lastModified, moment(fileRecord.modTime).fromNow());
132-
});
133-
134-
await FS.directoryEntries[0].visit();
135-
136-
assert.equal(FS.directoryEntries.length, 1);
137-
138-
assert.equal(FS.breadcrumbs.length, 2);
139-
assert.equal(FS.breadcrumbsText, `${allocationShortId} ${files[0].name}`);
140-
141-
assert.notOk(FS.breadcrumbs[0].isActive);
142-
143-
assert.equal(FS.breadcrumbs[1].text, files[0].name);
144-
assert.ok(FS.breadcrumbs[1].isActive);
145-
146-
await FS.directoryEntries[0].visit();
147-
148-
assert.equal(FS.directoryEntries.length, 1);
149-
assert.notOk(
150-
FS.directoryEntries[0].path.includes('//'),
151-
'paths shouldn’t have redundant separators'
152-
);
153-
154-
assert.equal(FS.breadcrumbs.length, 3);
155-
assert.equal(FS.breadcrumbsText, `${allocationShortId} ${files[0].name} ${files[1].name}`);
156-
assert.equal(FS.breadcrumbs[2].text, files[1].name);
157-
158-
assert.notOk(
159-
FS.breadcrumbs[0].path.includes('//'),
160-
'paths shouldn’t have redundant separators'
161-
);
162-
assert.notOk(
163-
FS.breadcrumbs[1].path.includes('//'),
164-
'paths shouldn’t have redundant separators'
165-
);
166-
167-
await FS.breadcrumbs[1].visit();
168-
assert.equal(FS.breadcrumbsText, `${allocationShortId} ${files[0].name}`);
169-
assert.equal(FS.breadcrumbs.length, 2);
170-
});
17177
});

ui/tests/acceptance/behaviors/fs.js

+82-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import FS from 'nomad-ui/tests/pages/allocations/task/fs';
44
import moment from 'moment';
55
import { filesForPath } from 'nomad-ui/mirage/config';
66
import Response from 'ember-cli-mirage/response';
7+
import { formatBytes } from 'nomad-ui/helpers/format-bytes';
78

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

22-
export default function browseFilesystem({ pageObjectVisitPathFunctionName, visitSegments, getExpectedPathBase, getTitleComponent, getBreadcrumbComponent, getFilesystemRoot }) {
23+
export default function browseFilesystem({ pageObjectVisitPathFunctionName, pageObjectVisitFunctionName, visitSegments, getExpectedPathBase, getTitleComponent, getBreadcrumbComponent, getFilesystemRoot }) {
24+
test('visiting filesystem root', async function(assert) {
25+
await FS[pageObjectVisitFunctionName](visitSegments({allocation: this.allocation, task: this.task }));
26+
27+
const pathBaseWithTrailingSlash = getExpectedPathBase({ allocation: this.allocation, task: this.task });
28+
const pathBaseWithoutTrailingSlash = pathBaseWithTrailingSlash.slice(0, -1);
29+
30+
assert.equal(currentURL(), pathBaseWithoutTrailingSlash, 'No redirect');
31+
});
32+
2333
test('visiting filesystem paths', async function(assert) {
2434
const paths = ['some-file.log', 'a/deep/path/to/a/file.log', '/', 'Unicode™®'];
2535

@@ -49,6 +59,77 @@ export default function browseFilesystem({ pageObjectVisitPathFunctionName, visi
4959
}, Promise.resolve());
5060
});
5161

62+
test('navigating allocation filesystem', async function(assert) {
63+
const objects = { allocation: this.allocation, task: this.task };
64+
await FS[pageObjectVisitPathFunctionName]({ ...visitSegments(objects), path: '/' });
65+
66+
const sortedFiles = fileSort('name', filesForPath(this.server.schema.allocFiles, getFilesystemRoot(objects)).models);
67+
68+
assert.ok(FS.fileViewer.isHidden);
69+
70+
assert.equal(FS.directoryEntries.length, 4);
71+
72+
assert.equal(FS.breadcrumbsText, getBreadcrumbComponent(objects));
73+
74+
assert.equal(FS.breadcrumbs.length, 1);
75+
assert.ok(FS.breadcrumbs[0].isActive);
76+
assert.equal(FS.breadcrumbs[0].text, getBreadcrumbComponent(objects));
77+
78+
FS.directoryEntries[0].as(directory => {
79+
const fileRecord = sortedFiles[0];
80+
assert.equal(directory.name, fileRecord.name, 'directories should come first');
81+
assert.ok(directory.isDirectory);
82+
assert.equal(directory.size, '', 'directory sizes are hidden');
83+
assert.equal(directory.lastModified, moment(fileRecord.modTime).fromNow());
84+
assert.notOk(directory.path.includes('//'), 'paths shouldn’t have redundant separators');
85+
});
86+
87+
FS.directoryEntries[2].as(file => {
88+
const fileRecord = sortedFiles[2];
89+
assert.equal(file.name, fileRecord.name);
90+
assert.ok(file.isFile);
91+
assert.equal(file.size, formatBytes([fileRecord.size]));
92+
assert.equal(file.lastModified, moment(fileRecord.modTime).fromNow());
93+
});
94+
95+
await FS.directoryEntries[0].visit();
96+
97+
assert.equal(FS.directoryEntries.length, 1);
98+
99+
assert.equal(FS.breadcrumbs.length, 2);
100+
assert.equal(FS.breadcrumbsText, `${getBreadcrumbComponent(objects)} ${this.directory.name}`);
101+
102+
assert.notOk(FS.breadcrumbs[0].isActive);
103+
104+
assert.equal(FS.breadcrumbs[1].text, this.directory.name);
105+
assert.ok(FS.breadcrumbs[1].isActive);
106+
107+
await FS.directoryEntries[0].visit();
108+
109+
assert.equal(FS.directoryEntries.length, 1);
110+
assert.notOk(
111+
FS.directoryEntries[0].path.includes('//'),
112+
'paths shouldn’t have redundant separators'
113+
);
114+
115+
assert.equal(FS.breadcrumbs.length, 3);
116+
assert.equal(FS.breadcrumbsText, `${getBreadcrumbComponent(objects)} ${this.directory.name} ${this.nestedDirectory.name}`);
117+
assert.equal(FS.breadcrumbs[2].text, this.nestedDirectory.name);
118+
119+
assert.notOk(
120+
FS.breadcrumbs[0].path.includes('//'),
121+
'paths shouldn’t have redundant separators'
122+
);
123+
assert.notOk(
124+
FS.breadcrumbs[1].path.includes('//'),
125+
'paths shouldn’t have redundant separators'
126+
);
127+
128+
await FS.breadcrumbs[1].visit();
129+
assert.equal(FS.breadcrumbsText, `${getBreadcrumbComponent(objects)} ${this.directory.name}`);
130+
assert.equal(FS.breadcrumbs.length, 2);
131+
});
132+
52133
test('sorting allocation filesystem directory', async function(assert) {
53134
this.server.get('/client/fs/ls/:allocation_id', () => {
54135
return [

ui/tests/acceptance/task-fs-test.js

+2-94
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
import { currentURL } from '@ember/test-helpers';
21
import { module, test } from 'qunit';
32
import { setupApplicationTest } from 'ember-qunit';
4-
import moment from 'moment';
53

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

9-
import { formatBytes } from 'nomad-ui/helpers/format-bytes';
10-
import { filesForPath } from 'nomad-ui/mirage/config';
11-
127
import browseFilesystem from './behaviors/fs';
138

149
import FS from 'nomad-ui/tests/pages/allocations/task/fs';
@@ -17,20 +12,6 @@ let allocation;
1712
let task;
1813
let files, taskDirectory, directory, nestedDirectory;
1914

20-
const fileSort = (prop, files) => {
21-
let dir = [];
22-
let file = [];
23-
files.forEach(f => {
24-
if (f.isDir) {
25-
dir.push(f);
26-
} else {
27-
file.push(f);
28-
}
29-
});
30-
31-
return dir.sortBy(prop).concat(file.sortBy(prop));
32-
};
33-
3415
module('Acceptance | task fs', function(hooks) {
3516
setupApplicationTest(hooks);
3617
setupMirage(hooks);
@@ -75,11 +56,7 @@ module('Acceptance | task fs', function(hooks) {
7556

7657
this.files = files;
7758
this.directory = directory;
78-
});
79-
80-
test('visiting /allocations/:allocation_id/:task_name/fs', async function(assert) {
81-
await FS.visit({ id: allocation.id, name: task.name });
82-
assert.equal(currentURL(), `/allocations/${allocation.id}/${task.name}/fs`, 'No redirect');
59+
this.nestedDirectory = nestedDirectory;
8360
});
8461

8562
test('when the task is not running, an empty state is shown', async function(assert) {
@@ -106,76 +83,7 @@ module('Acceptance | task fs', function(hooks) {
10683
getTitleComponent: ({task}) => `Task ${task.name} filesystem`,
10784
getBreadcrumbComponent: ({task}) => task.name,
10885
getFilesystemRoot: ({ task }) => task.name,
86+
pageObjectVisitFunctionName: 'visit',
10987
pageObjectVisitPathFunctionName: 'visitPath',
11088
});
111-
112-
test('navigating allocation filesystem', async function(assert) {
113-
await FS.visitPath({ id: allocation.id, name: task.name, path: '/' });
114-
115-
const sortedFiles = fileSort('name', filesForPath(this.server.schema.allocFiles, task.name).models);
116-
117-
assert.ok(FS.fileViewer.isHidden);
118-
119-
assert.equal(FS.directoryEntries.length, 4);
120-
121-
assert.equal(FS.breadcrumbsText, task.name);
122-
123-
assert.equal(FS.breadcrumbs.length, 1);
124-
assert.ok(FS.breadcrumbs[0].isActive);
125-
assert.equal(FS.breadcrumbs[0].text, 'task-name');
126-
127-
FS.directoryEntries[0].as(directory => {
128-
const fileRecord = sortedFiles[0];
129-
assert.equal(directory.name, fileRecord.name, 'directories should come first');
130-
assert.ok(directory.isDirectory);
131-
assert.equal(directory.size, '', 'directory sizes are hidden');
132-
assert.equal(directory.lastModified, moment(fileRecord.modTime).fromNow());
133-
assert.notOk(directory.path.includes('//'), 'paths shouldn’t have redundant separators');
134-
});
135-
136-
FS.directoryEntries[2].as(file => {
137-
const fileRecord = sortedFiles[2];
138-
assert.equal(file.name, fileRecord.name);
139-
assert.ok(file.isFile);
140-
assert.equal(file.size, formatBytes([fileRecord.size]));
141-
assert.equal(file.lastModified, moment(fileRecord.modTime).fromNow());
142-
});
143-
144-
await FS.directoryEntries[0].visit();
145-
146-
assert.equal(FS.directoryEntries.length, 1);
147-
148-
assert.equal(FS.breadcrumbs.length, 2);
149-
assert.equal(FS.breadcrumbsText, `${task.name} ${directory.name}`);
150-
151-
assert.notOk(FS.breadcrumbs[0].isActive);
152-
153-
assert.equal(FS.breadcrumbs[1].text, directory.name);
154-
assert.ok(FS.breadcrumbs[1].isActive);
155-
156-
await FS.directoryEntries[0].visit();
157-
158-
assert.equal(FS.directoryEntries.length, 1);
159-
assert.notOk(
160-
FS.directoryEntries[0].path.includes('//'),
161-
'paths shouldn’t have redundant separators'
162-
);
163-
164-
assert.equal(FS.breadcrumbs.length, 3);
165-
assert.equal(FS.breadcrumbsText, `${task.name} ${directory.name} ${nestedDirectory.name}`);
166-
assert.equal(FS.breadcrumbs[2].text, nestedDirectory.name);
167-
168-
assert.notOk(
169-
FS.breadcrumbs[0].path.includes('//'),
170-
'paths shouldn’t have redundant separators'
171-
);
172-
assert.notOk(
173-
FS.breadcrumbs[1].path.includes('//'),
174-
'paths shouldn’t have redundant separators'
175-
);
176-
177-
await FS.breadcrumbs[1].visit();
178-
assert.equal(FS.breadcrumbsText, `${task.name} ${directory.name}`);
179-
assert.equal(FS.breadcrumbs.length, 2);
180-
});
18189
});

0 commit comments

Comments
 (0)