UNPKG

2.48 kBPlain TextView Raw
1import {expect} from 'chai';
2import {assertFileSystemContract, dirName, fileName, ignoredDir, ignoredFile,} from './implementation-suite'
3import {SlowFs} from '../test-kit/drivers/slow-fs';
4import {FileSystem, MemoryFileSystem, TimeoutFileSystem} from '../src/universal';
5
6describe('the timeout file system proxy', () => {
7 const timeout = 200;
8
9 assertFileSystemContract(() =>
10 Promise.resolve(new TimeoutFileSystem(timeout, new MemoryFileSystem(undefined, {ignore: [ignoredDir, ignoredFile]}))),
11 {retries: 15, interval: 2, timeout: 40, noExtraEventsGrace: 10}
12 );
13
14 describe(`delayed timeout test`, () => {
15 let fs: FileSystem;
16 let startTimestamp: number;
17 const delay = timeout * 2;
18
19 beforeEach(() => {
20 startTimestamp = Date.now();
21 fs = new TimeoutFileSystem(timeout, new SlowFs(delay));
22 });
23
24 it(`ensureDirectory exit before delay is over`, () => {
25 return expect(fs.ensureDirectory(dirName)).to.eventually.be.rejectedWith('timed out')
26 .then(() => expect(startTimestamp - Date.now()).to.be.below(delay));
27 });
28
29 it(`saveFile exit before delay is over`, () => {
30 return expect(fs.saveFile(`${dirName}\\${fileName}`, '#goodnessSquad')).to.eventually.be.rejectedWith('timed out')
31 .then(() => expect(startTimestamp - Date.now()).to.be.below(delay));
32 });
33
34 it(`deleteFile exit before delay is over`, () => {
35 return expect(fs.deleteFile(`${dirName}\\${fileName}`)).to.eventually.be.rejectedWith('timed out')
36 .then(() => expect(startTimestamp - Date.now()).to.be.below(delay));
37 });
38
39 it(`deleteDirectory exit before delay is over`, () => {
40 return expect(fs.deleteDirectory(dirName)).to.eventually.be.rejectedWith('timed out')
41 .then(() => expect(startTimestamp - Date.now()).to.be.below(delay));
42 });
43
44 it(`loadTextFile exit before delay is over`, () => {
45 return expect(fs.loadTextFile(dirName)).to.eventually.be.rejectedWith('timed out')
46 .then(() => expect(startTimestamp - Date.now()).to.be.below(delay));
47 });
48
49 it(`loadDirectoryTree exit before delay is over`, () => {
50 return expect(fs.loadDirectoryTree()).to.eventually.be.rejectedWith('timed out')
51 .then(() => expect(startTimestamp - Date.now()).to.be.below(delay));
52 });
53 });
54});