1 | var assert = require("assert")
|
2 | , form = require("../index")
|
3 | , field = form.field;
|
4 |
|
5 | module.exports = {
|
6 |
|
7 | "field : arrays": function () {
|
8 |
|
9 | var request = {
|
10 | body: {
|
11 | field1: "",
|
12 | field2: "Hello!",
|
13 | field3: ["Alpacas?", "Llamas!!?", "Vicunas!", "Guanacos!!!"]
|
14 | }
|
15 | };
|
16 | form(
|
17 | field("fieldx").array(),
|
18 | field("field1").array(),
|
19 | field("field2").array(),
|
20 | field("field3").array()
|
21 | )(request, {});
|
22 | assert.strictEqual(Array.isArray(request.form.fieldx), true);
|
23 | assert.strictEqual(request.form.fieldx.length, 0);
|
24 | assert.strictEqual(Array.isArray(request.form.field1), true);
|
25 | assert.strictEqual(request.form.field1.length, 0);
|
26 | assert.strictEqual(request.form.field2[0], "Hello!");
|
27 | assert.strictEqual(request.form.field2.length, 1);
|
28 | assert.strictEqual(request.form.field3[0], "Alpacas?");
|
29 | assert.strictEqual(request.form.field3[1], "Llamas!!?");
|
30 | assert.strictEqual(request.form.field3[2], "Vicunas!");
|
31 | assert.strictEqual(request.form.field3[3], "Guanacos!!!");
|
32 | assert.strictEqual(request.form.field3.length, 4);
|
33 |
|
34 |
|
35 | var request = { body: { field: ["red", "blue"] } };
|
36 | form(field("field"))(request, {});
|
37 | assert.strictEqual(request.form.field, "red");
|
38 |
|
39 |
|
40 | var request = { body: { field: ["david", "stephen", "greg"] } };
|
41 | form(field("field").array().toUpper())(request, {});
|
42 | assert.strictEqual(request.form.field[0], "DAVID");
|
43 | assert.strictEqual(request.form.field[1], "STEPHEN");
|
44 | assert.strictEqual(request.form.field[2], "GREG");
|
45 | assert.strictEqual(request.form.field.length, 3);
|
46 |
|
47 |
|
48 | var request = { body: { field: [1, 2, "f"] } };
|
49 | form(field("field").array().isInt())(request, {});
|
50 | assert.equal(request.form.errors.length, 1);
|
51 | assert.equal(request.form.errors[0], "field is not an integer");
|
52 | },
|
53 | "field : nesting": function () {
|
54 |
|
55 | var request = {
|
56 | body: {
|
57 | field: {
|
58 | nest: "wow",
|
59 | child: "4",
|
60 | gb: {
|
61 | a: "a",
|
62 | b: "aaaa",
|
63 | c: {
|
64 | fruit: "deeper",
|
65 | must: {
|
66 | go: "deeperrrr"
|
67 | }
|
68 | }
|
69 | }
|
70 | }
|
71 |
|
72 | }
|
73 | };
|
74 | form(
|
75 | field("field.nest").toUpper(),
|
76 | field("field.child").toUpper(),
|
77 | field("field.gb.a").toUpper(),
|
78 | field("field.gb.b").toUpper(),
|
79 | field("field.gb.c.fruit").toUpper(),
|
80 | field("field.gb.c.must.go").toUpper()
|
81 | )(request, {});
|
82 | assert.strictEqual(request.form.field.nest, "WOW");
|
83 | assert.strictEqual(request.form.field.child, "4");
|
84 | assert.strictEqual(request.form.field.gb.a, "A");
|
85 | assert.strictEqual(request.form.field.gb.b, "AAAA");
|
86 | assert.strictEqual(request.form.field.gb.c.fruit, "DEEPER");
|
87 | assert.strictEqual(request.form.field.gb.c.must.go, "DEEPERRRR");
|
88 |
|
89 |
|
90 | var request = {
|
91 | body: {
|
92 | field: {
|
93 | nest: "wow",
|
94 | child: "4",
|
95 | gb: {
|
96 | a: "a",
|
97 | b: "aaaa",
|
98 | c: {
|
99 | fruit: "deeper",
|
100 | must: {
|
101 | go: "deeperrrr"
|
102 | }
|
103 | }
|
104 | }
|
105 | }
|
106 |
|
107 | }
|
108 | };
|
109 | form(
|
110 | field("field[nest]").toUpper(),
|
111 | field("field[child]").toUpper(),
|
112 | field("field[gb][a]").toUpper(),
|
113 | field("field[gb][b]").toUpper(),
|
114 | field("field[gb][c][fruit]").toUpper(),
|
115 | field("field[gb][c][must][go]").toUpper()
|
116 | )(request, {});
|
117 | assert.strictEqual(request.form.field.nest, "WOW");
|
118 | assert.strictEqual(request.form.field.child, "4");
|
119 | assert.strictEqual(request.form.field.gb.a, "A");
|
120 | assert.strictEqual(request.form.field.gb.b, "AAAA");
|
121 | assert.strictEqual(request.form.field.gb.c.fruit, "DEEPER");
|
122 | assert.strictEqual(request.form.field.gb.c.must.go, "DEEPERRRR");
|
123 | },
|
124 |
|
125 | "field : filter/validate combo ordering": function () {
|
126 |
|
127 | var request = {
|
128 | body: {
|
129 | field1: " whatever ",
|
130 | field2: " some thing "
|
131 | }
|
132 | };
|
133 | form(
|
134 | field("field1").trim().toUpper().maxLength(5),
|
135 | field("field2").minLength(12).trim()
|
136 | )(request, {});
|
137 | assert.strictEqual(request.form.field1, "WHATEVER");
|
138 | assert.strictEqual(request.form.field2, "some thing");
|
139 | assert.equal(request.form.errors.length, 1);
|
140 | assert.equal(request.form.errors[0], "field1 is too long");
|
141 | },
|
142 |
|
143 | "field : autoTrim": function () {
|
144 |
|
145 | form.configure({ autoTrim: true });
|
146 | var request = { body: { field: " whatever " } };
|
147 | form(field("field"))(request, {});
|
148 | assert.strictEqual(request.form.field, "whatever");
|
149 | form.configure({ autoTrim: false });
|
150 | },
|
151 |
|
152 | "field : passThrough": function () {
|
153 |
|
154 | form.configure({ passThrough: true });
|
155 | var request = {
|
156 | body: {
|
157 | field1: "fdsa",
|
158 | field2: "asdf"
|
159 | }
|
160 | };
|
161 | form(field("field1"))(request, {});
|
162 | assert.strictEqual(request.form.field1, "fdsa");
|
163 | assert.strictEqual(request.form.field2, "asdf");
|
164 |
|
165 |
|
166 | form.configure({ passThrough: false });
|
167 | var request = { body: {
|
168 | field1: "fdsa",
|
169 | field2: "asdf"
|
170 | } };
|
171 | form(field("field1"))(request, {});
|
172 | assert.strictEqual(request.form.field1, "fdsa");
|
173 | assert.strictEqual(typeof request.form.field2, "undefined");
|
174 | },
|
175 |
|
176 | "form : getErrors() gives full map": function() {
|
177 | var request = {
|
178 | body: {
|
179 | field0: "win",
|
180 | field1: "fail",
|
181 | field2: "fail",
|
182 | field3: "fail"
|
183 | }
|
184 | };
|
185 | form(
|
186 | field("field0").equals("win"),
|
187 | field("field1").isEmail(),
|
188 | field("field2").isEmail().isUrl(),
|
189 | field("field3").isEmail().isUrl().isIP()
|
190 | )(request, {});
|
191 | assert.equal(request.form.isValid, false);
|
192 | assert.equal(request.form.errors.length, 6);
|
193 | assert.equal(typeof request.form.getErrors().field0, "undefined");
|
194 | assert.equal(request.form.getErrors().field1.length, 1);
|
195 | assert.equal(request.form.getErrors().field2.length, 2);
|
196 | assert.equal(request.form.getErrors().field3.length, 3);
|
197 | }
|
198 |
|
199 | } |
\ | No newline at end of file |