Skip to content

Commit

Permalink
feat: new string validations
Browse files Browse the repository at this point in the history
  • Loading branch information
gcandal committed Jan 11, 2021
1 parent 9c97622 commit 469b5c4
Show file tree
Hide file tree
Showing 2 changed files with 164 additions and 0 deletions.
47 changes: 47 additions & 0 deletions js/util/validation.js
Expand Up @@ -64,6 +64,26 @@ export const isIn = function(valueC, message = "Value must be one of: %{1}") {
return validation;
};

export const isUpper = function(message = "Value contains lower cased characters") {
const validation = (value, ctx) => {
if (value === null) return true;
if (value === "") return true;
if (value === value.toUpperCase()) return true;
throw new ValidationError(message);
};
return validation;
};

export const isLower = function(message = "Value contains upper cased characters") {
const validation = (value, ctx) => {
if (value === null) return true;
if (value === "") return true;
if (value === value.toLowerCase()) return true;
throw new ValidationError(message);
};
return validation;
};

export const isSimple = function(message = "Value contains invalid characters") {
const validation = (value, ctx) => {
if (value === null) return true;
Expand Down Expand Up @@ -103,3 +123,30 @@ export const isRegex = function(regex, message = "Value has incorrect format") {
};
return validation;
};

export const stringGt = function(valueC, message = "Must be larger than %{1} characters") {
const validation = (value, ctx) => {
if (value === null) return true;
if (value.length > valueC) return true;
throw new ValidationError(message.replace("%{1}", String(valueC)));
};
return validation;
};

export const stringLt = function(valueC, message = "Must be smaller than %{1} characters") {
const validation = (value, ctx) => {
if (value === null) return true;
if (value.length < valueC) return true;
throw new ValidationError(message.replace("%{1}", String(valueC)));
};
return validation;
};

export const stringEq = function(valueC, message = "Must be exactly %{1} characters") {
const validation = (value, ctx) => {
if (value === null) return true;
if (value.length === valueC) return true;
throw new ValidationError(message.replace("%{1}", String(valueC)));
};
return validation;
};
117 changes: 117 additions & 0 deletions test/util/validation.js
Expand Up @@ -124,6 +124,54 @@ describe("#isIn()", function() {
});
});

describe("#isUpper()", function() {
it("should verify basic is simple conditions", () => {
let result;

result = yonius.isUpper()("HELLO");
assert.strictEqual(result, true);

result = yonius.isUpper()("HELLO.WORLD");
assert.strictEqual(result, true);

result = yonius.isUpper()(null);
assert.strictEqual(result, true);

assert.throws(
() => yonius.isUpper()("illegal!"),
err => {
assert.strictEqual(err instanceof yonius.ValidationError, true);
assert.strictEqual(err.message, "Value contains lower cased characters");
return true;
}
);
});
});

describe("#isLower()", function() {
it("should verify basic is simple conditions", () => {
let result;

result = yonius.isLower()("hello");
assert.strictEqual(result, true);

result = yonius.isLower()("hello.hello");
assert.strictEqual(result, true);

result = yonius.isLower()(null);
assert.strictEqual(result, true);

assert.throws(
() => yonius.isLower()("ILLEGAL!"),
err => {
assert.strictEqual(err instanceof yonius.ValidationError, true);
assert.strictEqual(err.message, "Value contains upper cased characters");
return true;
}
);
});
});

describe("#isSimple()", function() {
it("should verify basic is simple conditions", () => {
let result;
Expand Down Expand Up @@ -213,3 +261,72 @@ describe("#isRegex()", function() {
);
});
});

describe("#stringGt()", function() {
it("should verify basic greater than operations", () => {
let result;

result = yonius.stringGt(2)("xxx");
assert.strictEqual(result, true);

result = yonius.stringGt(4)("xxxxx");
assert.strictEqual(result, true);

result = yonius.stringGt(4)(null);
assert.strictEqual(result, true);

assert.throws(
() => yonius.stringGt(4)("xxxx"),
err => {
assert.strictEqual(err instanceof yonius.ValidationError, true);
assert.strictEqual(err.message, "Must be larger than 4 characters");
return true;
}
);
});
});

describe("#stringLt()", function() {
it("should verify basic greater than operations", () => {
let result;

result = yonius.stringLt(2)("x");
assert.strictEqual(result, true);

result = yonius.stringLt(4)("xxx");
assert.strictEqual(result, true);

result = yonius.stringLt(4)(null);
assert.strictEqual(result, true);

assert.throws(
() => yonius.stringLt(4)("xxxx"),
err => {
assert.strictEqual(err instanceof yonius.ValidationError, true);
assert.strictEqual(err.message, "Must be smaller than 4 characters");
return true;
}
);
});
});

describe("#stringEq()", function() {
it("should verify basic greater than operations", () => {
let result;

result = yonius.stringEq(2)("xx");
assert.strictEqual(result, true);

result = yonius.stringEq(4)(null);
assert.strictEqual(result, true);

assert.throws(
() => yonius.stringEq(4)("xxx"),
err => {
assert.strictEqual(err instanceof yonius.ValidationError, true);
assert.strictEqual(err.message, "Must be exactly 4 characters");
return true;
}
);
});
});

0 comments on commit 469b5c4

Please sign in to comment.