aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@kwsites/file-exists/dist/test/exists.spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/@kwsites/file-exists/dist/test/exists.spec.js')
-rw-r--r--node_modules/@kwsites/file-exists/dist/test/exists.spec.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/node_modules/@kwsites/file-exists/dist/test/exists.spec.js b/node_modules/@kwsites/file-exists/dist/test/exists.spec.js
new file mode 100644
index 0000000..a36b549
--- /dev/null
+++ b/node_modules/@kwsites/file-exists/dist/test/exists.spec.js
@@ -0,0 +1,77 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+jest.mock('fs');
+//@ts-ignore
+const fs_1 = require("fs");
+const src_1 = require("../src");
+describe(`exists`, () => {
+ let statSync;
+ let statSyncMock;
+ let path;
+ beforeEach(() => {
+ path = `./path/${Math.random()}`;
+ fs_1.addStatSyncMock(statSyncMock = jest.fn(() => statSync()));
+ });
+ afterEach(() => {
+ fs_1.assertMocksUsed();
+ statSync = statSyncMock = undefined;
+ });
+ describe('known errors', () => {
+ beforeEach(() => givenStatSyncThrows({ code: 'ENOENT' }));
+ it('with type', () => {
+ expect(src_1.exists(path, src_1.READABLE)).toBe(false);
+ });
+ it('with type omitted', () => {
+ expect(src_1.exists(path)).toBe(false);
+ });
+ });
+ describe('unknown errors', () => {
+ let err;
+ beforeEach(() => err = givenStatSyncThrows(new Error('something')));
+ it('with type', () => {
+ expect(() => src_1.exists(path, src_1.READABLE)).toThrow(err);
+ });
+ it('with type omitted', () => {
+ expect(() => src_1.exists(path)).toThrow(err);
+ });
+ });
+ describe('path is a file', () => {
+ beforeEach(() => givenStatSyncIsA('file'));
+ existsReturns(true, false, true);
+ });
+ describe('path is a folder', () => {
+ beforeEach(() => givenStatSyncIsA('folder'));
+ existsReturns(false, true, true);
+ });
+ describe('path is unknown', () => {
+ beforeEach(() => givenStatSyncIsA('unknown'));
+ existsReturns(false, false, false);
+ });
+ function existsReturns(file, folder, readable) {
+ it('when searching for a file', () => {
+ expect(src_1.exists(path, src_1.FILE)).toBe(file);
+ });
+ it('when searching for a folder', () => {
+ expect(src_1.exists(path, src_1.FOLDER)).toBe(folder);
+ });
+ it('when searching for either', () => {
+ expect(src_1.exists(path, src_1.READABLE)).toBe(readable);
+ });
+ it('when searching without a type', () => {
+ expect(src_1.exists(path)).toBe(readable);
+ });
+ }
+ function givenStatSyncThrows(err) {
+ statSync = () => { throw err; };
+ return err;
+ }
+ function givenStatSyncIsA(type) {
+ const mockStat = {
+ isFile() { return type === 'file'; },
+ isDirectory() { return type === 'folder'; },
+ };
+ statSync = () => mockStat;
+ return mockStat;
+ }
+});
+//# sourceMappingURL=exists.spec.js.map \ No newline at end of file