Skip to content
This repository was archived by the owner on Oct 20, 2021. It is now read-only.

Commit a1cc2a2

Browse files
feat(rules): Added Directory rule
1 parent 02e5412 commit a1cc2a2

7 files changed

Lines changed: 77 additions & 4 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ The library can be loaded either as a standalone script, or through an [AMD](htt
9595
- [Cpf](docs/cpf.md)
9696
- [DateTime](docs/date-time.md)
9797
- [Digit](docs/digit.md)
98+
- [Directory](docs/directory.md)
9899
- [Empty](docs/empty.md)
99100
- [EndsWith](docs/ends-width.md)
100101
- [Equals](docs/equals.md)

awesome-validator.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/directory.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Directory
2+
3+
Validates directories.
4+
5+
Valid values:
6+
7+
```js
8+
validator.directory().validate(__dirname);
9+
```
10+
11+
Invalid values:
12+
13+
```js
14+
validator.directory().validate(__filename);
15+
```

src/rules/directory.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Stats } from 'fs';
2+
3+
import { AbstractFileSystem } from './abstract-file-system';
4+
5+
export class Directory extends AbstractFileSystem {
6+
7+
/**
8+
* Validate File System.
9+
*/
10+
protected validateFileSystem(stats: Stats): boolean {
11+
return stats.isDirectory();
12+
}
13+
}

src/rules/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export * from './contains';
1616
export * from './cpf';
1717
export * from './date-time';
1818
export * from './digit';
19+
export * from './directory';
1920
export * from './empty';
2021
export * from './ends-with';
2122
export * from './equals';

test/rules/directory.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import * as fs from 'fs';
2+
import * as mock from 'mock-fs';
3+
import * as tempy from 'tempy';
4+
5+
import { assert } from 'chai';
6+
7+
import { AbstractRule } from '../../src/rules/abstract-rule';
8+
import { Directory } from '../../src/rules/directory';
9+
10+
describe('Directory', () => {
11+
12+
let directory: Directory;
13+
14+
beforeEach(() => {
15+
directory = new Directory();
16+
17+
mock({
18+
'dir': {},
19+
'file.txt': 'foo'
20+
});
21+
});
22+
23+
afterEach(() => {
24+
mock.restore();
25+
});
26+
27+
it('is rule', () => {
28+
assert.instanceOf(directory, AbstractRule);
29+
});
30+
31+
it('values is valid', () => {
32+
assert.isTrue(directory.validate('dir'));
33+
assert.isTrue(directory.validate(fs.statSync(tempy.directory())));
34+
});
35+
36+
it('values is not valid', () => {
37+
assert.isFalse(directory.validate('foo'));
38+
assert.isFalse(directory.validate('file.txt'));
39+
assert.isFalse(directory.validate(__filename));
40+
});
41+
42+
});

test/rules/file.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ describe('File', () => {
1515
file = new File();
1616

1717
mock({
18+
'dir': {},
1819
'file.txt': 'foo'
1920
});
2021
});
@@ -33,8 +34,8 @@ describe('File', () => {
3334
});
3435

3536
it('values is not valid', () => {
36-
assert.isFalse(file.validate(''));
3737
assert.isFalse(file.validate('foo'));
38+
assert.isFalse(file.validate('dir'));
3839
assert.isFalse(file.validate(__dirname));
3940
});
4041

0 commit comments

Comments
 (0)