validata
Version:
Type safe data validation and sanitization
81 lines • 3.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.expectFormatIssue = void 0;
const string_1 = require("./string");
const string_format_1 = require("./string-format");
const test_helpers_1 = require("./test-helpers");
const types_1 = require("./types");
const expectFormatIssue = (fut, value, expectedFormat) => {
const result = fut.process(value);
if (!(0, types_1.isIssue)(result)) {
fail('no issue');
}
expect(result.issues).toEqual(expect.arrayContaining([
expect.objectContaining({
info: expect.objectContaining({
expectedFormat,
}),
reason: 'incorrect-format',
}),
]));
};
exports.expectFormatIssue = expectFormatIssue;
describe('StringFormat', () => {
describe('ULID', () => {
const fut = (0, string_1.isString)({ format: string_format_1.StringFormat.ULID() });
it('have issues with invalid ULIDs', () => {
(0, exports.expectFormatIssue)(fut, '', 'ulid');
(0, exports.expectFormatIssue)(fut, 'test', 'ulid');
(0, exports.expectFormatIssue)(fut, 'test01EFNX7ZQ36RXJV136T0SP4Y77', 'ulid');
(0, exports.expectFormatIssue)(fut, '01EFNX7ZQ36RXJV136T0SP4Y77test', 'ulid');
(0, exports.expectFormatIssue)(fut, '{01EFNX7ZQ36RXJV136T0SP4Y77}', 'ulid');
(0, exports.expectFormatIssue)(fut, '01EFNX7Z-Q36R-XJV1-36T0-SP4Y77', 'ulid');
(0, exports.expectFormatIssue)(fut, 'a4beb195-6171-4542-9cc2-1c75f5688095', 'ulid');
});
it('accept ULIDs', () => {
(0, test_helpers_1.expectSuccess)(fut, '01EFNX7ZQ36RXJV136T0SP4Y77');
(0, test_helpers_1.expectSuccess)(fut, '01EFNX7SQ8A5YPF2YJDVJTY1H5');
});
});
describe('UUID', () => {
const fut = (0, string_1.isString)({ format: string_format_1.StringFormat.UUID() });
it('have issues with invalid UUIDs', () => {
(0, exports.expectFormatIssue)(fut, '', 'uuid');
(0, exports.expectFormatIssue)(fut, 'test', 'uuid');
(0, exports.expectFormatIssue)(fut, 'testa4beb195-6171-4542-9cc2-1c75f5688095', 'uuid');
(0, exports.expectFormatIssue)(fut, 'a4beb195-6171-4542-9cc2-1c75f5688095test', 'uuid');
(0, exports.expectFormatIssue)(fut, '{a4beb195-6171-4542-9cc2-1c75f5688095}', 'uuid');
});
it('accept UUIDs', () => {
(0, test_helpers_1.expectSuccess)(fut, 'b8493e8b-fdf8-4420-ab63-0701a6850da6');
(0, test_helpers_1.expectSuccess)(fut, '52491B51-E733-43A2-BCDE-1CCE35EE82A6');
});
});
describe('email', () => {
const fut = (0, string_1.isString)({ format: string_format_1.StringFormat.email() });
it('have issues with invalid email addresses', () => {
(0, exports.expectFormatIssue)(fut, '', 'email');
(0, exports.expectFormatIssue)(fut, 'test', 'email');
(0, exports.expectFormatIssue)(fut, 'foo@', 'email');
(0, exports.expectFormatIssue)(fut, '@home', 'email');
});
it('accept email addresses', () => {
(0, test_helpers_1.expectSuccess)(fut, 'me@work.com');
(0, test_helpers_1.expectSuccess)(fut, 'me@my.home.com');
});
});
});
describe('maybe StringFormat', () => {
describe('ULID', () => {
const fut = (0, string_1.maybeString)({ format: string_format_1.StringFormat.ULID() });
it('undefined', () => {
(0, test_helpers_1.expectSuccess)(fut, undefined);
(0, test_helpers_1.expectSuccess)(fut, null);
});
it('value', () => {
(0, test_helpers_1.expectSuccess)(fut, '01EFNX7ZQ36RXJV136T0SP4Y77');
(0, test_helpers_1.expectSuccess)(fut, '01EFNX7SQ8A5YPF2YJDVJTY1H5');
});
});
});
//# sourceMappingURL=string-format.test.js.map