Skip to content

Commit fc3f58f

Browse files
committed
feat: set context name
on ValidationContext instance
1 parent ab227a3 commit fc3f58f

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

package/lib/SimpleSchema.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ class SimpleSchema {
586586
namedContext(name) {
587587
if (typeof name !== 'string') name = 'default';
588588
if (!this._validationContexts[name]) {
589-
this._validationContexts[name] = new ValidationContext(this);
589+
this._validationContexts[name] = new ValidationContext(this, name);
590590
}
591591
return this._validationContexts[name];
592592
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/* eslint-disable func-names, prefer-arrow-callback */
2+
3+
import expect from 'expect';
4+
import { SimpleSchema } from './SimpleSchema';
5+
6+
describe('SimpleSchema - namedContext', function () {
7+
it('returns a named context', function () {
8+
const schema = new SimpleSchema({});
9+
const context = schema.namedContext('form');
10+
expect(context.name).toBe('form');
11+
expect(schema._validationContexts.form).toBe(context);
12+
});
13+
14+
it('returns a context named "default" if no name is passed', function () {
15+
const schema = new SimpleSchema({});
16+
const context = schema.namedContext();
17+
expect(context.name).toBe('default');
18+
expect(schema._validationContexts.default).toBe(context);
19+
});
20+
21+
it('returns the same context instance when called with the same name', function () {
22+
const schema = new SimpleSchema({});
23+
const context1 = schema.namedContext('abc');
24+
expect(schema._validationContexts.abc).toBe(context1);
25+
const context2 = schema.namedContext('abc');
26+
expect(context2).toBe(context1);
27+
});
28+
});

package/lib/ValidationContext.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,12 @@ import MongoObject from 'mongo-object';
22
import doValidation from './doValidation';
33

44
export default class ValidationContext {
5-
constructor(ss) {
5+
/**
6+
* @param {SimpleSchema} ss SimpleSchema instance to use for validation
7+
* @param {String} [name] Optional context name, accessible on context.name.
8+
*/
9+
constructor(ss, name) {
10+
this.name = name;
611
this._simpleSchema = ss;
712
this._schema = ss.schema();
813
this._schemaKeys = Object.keys(this._schema);

0 commit comments

Comments
 (0)