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

Commit 62810c7

Browse files
feat(rules): Added StringInstance rule
1 parent 227ca58 commit 62810c7

8 files changed

Lines changed: 111 additions & 1 deletion

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ The library can be loaded either as a standalone script, or through an [AMD](htt
133133
- [Scalar](docs/scalar.md)
134134
- [Slug](docs/slug.md)
135135
- [Sorted](docs/sorted.md)
136+
- [StringInstance](docs/string-instance.md)
136137
- [StringType](docs/string-type.md)
137138
- [StringVal](docs/string-val.md)
138139
- [SymbolicLink](docs/symbolic-link.md)

awesome-validator.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/string-instance.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# String Instance
2+
3+
Validates if the given input is string instance.
4+
5+
Valid values:
6+
7+
```js
8+
validator.stringInstance().validate('');
9+
validator.stringInstance().validate(' ');
10+
validator.stringInstance().validate(' ');
11+
validator.stringInstance().validate('0');
12+
validator.stringInstance().validate('foo');
13+
validator.stringInstance().validate(String());
14+
```
15+
16+
Invalid values:
17+
18+
```js
19+
validator.stringInstance().validate(undefined);
20+
validator.stringInstance().validate(null);
21+
validator.stringInstance().validate(true);
22+
validator.stringInstance().validate(false);
23+
validator.stringInstance().validate(0);
24+
validator.stringInstance().validate(1);
25+
validator.stringInstance().validate(-1);
26+
validator.stringInstance().validate(1.1);
27+
validator.stringInstance().validate(-1.1);
28+
validator.stringInstance().validate([]);
29+
validator.stringInstance().validate({});
30+
validator.stringInstance().validate(new Array());
31+
validator.stringInstance().validate(new Object());
32+
validator.stringInstance().validate(Object.create(null));
33+
```

src/rules/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export * from './roman';
5454
export * from './scalar';
5555
export * from './slug';
5656
export * from './sorted';
57+
export * from './string-instance';
5758
export * from './string-type';
5859
export * from './string-val';
5960
export * from './symbolic-link';

src/rules/string-instance.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { AbstractConstructotName } from './abstract-constructor-name';
2+
3+
export class StringInstance extends AbstractConstructotName {
4+
5+
/**
6+
* Get constructor name.
7+
*/
8+
protected getConstructorName(): string {
9+
return 'String';
10+
}
11+
}

src/validator.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,13 @@ export class Validator extends rules.AllOf {
397397
return this.addRule(new rules.Sorted(fn, ascending));
398398
}
399399

400+
/**
401+
* String Instance.
402+
*/
403+
public stringInstance(): this {
404+
return this.addRule(new rules.StringInstance());
405+
}
406+
400407
/**
401408
* String Type.
402409
*/

test/rules/string-instance.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { assert } from 'chai';
2+
3+
import { AbstractRule } from '../../src/rules/abstract-rule';
4+
import { StringInstance } from '../../src/rules/string-instance';
5+
6+
describe('String Instance', () => {
7+
8+
let stringInstance: StringInstance;
9+
10+
beforeEach(() => {
11+
stringInstance = new StringInstance();
12+
});
13+
14+
it('is rule', () => {
15+
assert.instanceOf(stringInstance, AbstractRule);
16+
});
17+
18+
it('values is valid', () => {
19+
assert.isTrue(stringInstance.validate(String()));
20+
assert.isTrue(stringInstance.validate(String('')));
21+
assert.isTrue(stringInstance.validate(String(' ')));
22+
assert.isTrue(stringInstance.validate(String('foo')));
23+
assert.isTrue(stringInstance.validate(''));
24+
assert.isTrue(stringInstance.validate(' '));
25+
assert.isTrue(stringInstance.validate('foo'));
26+
});
27+
28+
it('values is not valid', () => {
29+
assert.isFalse(stringInstance.validate(Boolean()));
30+
assert.isFalse(stringInstance.validate(Number()));
31+
assert.isFalse(stringInstance.validate(null));
32+
assert.isFalse(stringInstance.validate(undefined));
33+
assert.isFalse(stringInstance.validate(true));
34+
assert.isFalse(stringInstance.validate(false));
35+
assert.isFalse(stringInstance.validate(0));
36+
assert.isFalse(stringInstance.validate(-0));
37+
assert.isFalse(stringInstance.validate(1));
38+
assert.isFalse(stringInstance.validate(-1));
39+
assert.isFalse(stringInstance.validate(0.0));
40+
assert.isFalse(stringInstance.validate(-0.0));
41+
assert.isFalse(stringInstance.validate(1.0));
42+
assert.isFalse(stringInstance.validate(-1.0));
43+
assert.isFalse(stringInstance.validate(0.1));
44+
assert.isFalse(stringInstance.validate(-0.1));
45+
assert.isFalse(stringInstance.validate(1.1));
46+
assert.isFalse(stringInstance.validate(-1.1));
47+
assert.isFalse(stringInstance.validate([]));
48+
assert.isFalse(stringInstance.validate({}));
49+
assert.isFalse(stringInstance.validate(new Array('foo')));
50+
assert.isFalse(stringInstance.validate(new Object({foo: 'bar'})));
51+
52+
class Foo {}
53+
assert.isFalse(stringInstance.validate(new Foo()));
54+
});
55+
56+
});

test/validator.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ describe('Validator', () => {
7171
assert.instanceOf(validator.slug(), Validator);
7272
assert.instanceOf(validator.sorted(), Validator);
7373
assert.instanceOf(validator.sorted(null, false), Validator);
74+
assert.instanceOf(validator.stringInstance(), Validator);
7475
assert.instanceOf(validator.stringType(), Validator);
7576
assert.instanceOf(validator.stringVal(), Validator);
7677
assert.instanceOf(validator.symbolicLink(), Validator);

0 commit comments

Comments
 (0)