1 |
|
2 | var Block, assert, async, makeReq, makeRes, path;
|
3 |
|
4 | async = require("async");
|
5 |
|
6 | assert = require("assert");
|
7 |
|
8 | path = require('path');
|
9 |
|
10 | makeReq = function(config) {
|
11 | if (config == null) {
|
12 | config = {};
|
13 | }
|
14 | return config;
|
15 | };
|
16 |
|
17 | makeRes = function() {
|
18 | return {
|
19 | locals: {}
|
20 | };
|
21 | };
|
22 |
|
23 | Block = (require('../index.js')).block;
|
24 |
|
25 | describe('Block', function() {
|
26 | describe('$block.render()', function() {
|
27 | it('verify region', function(done) {
|
28 | var region_verify, req, res;
|
29 | region_verify = null;
|
30 | Block.configure({
|
31 | blocks: [
|
32 | {
|
33 | init: function(req, res, next) {
|
34 | return next('<div>1</div>');
|
35 | },
|
36 | filters: [
|
37 | function(options, cb) {
|
38 | region_verify = options.region;
|
39 | return cb(null, true);
|
40 | }
|
41 | ]
|
42 | }
|
43 | ]
|
44 | });
|
45 | req = {};
|
46 | res = {
|
47 | locals: {}
|
48 | };
|
49 | return Block.init(req, res, function(err) {
|
50 | return res.locals.$block.render('region1', function(err, html) {
|
51 | assert.equal("region1", region_verify);
|
52 | return done();
|
53 | });
|
54 | });
|
55 | });
|
56 | return it('success', function(done) {
|
57 | var req, res;
|
58 | Block.configure({
|
59 | blocks: [
|
60 | {
|
61 | init: function(req, res, next) {
|
62 | return next('<div>1</div>');
|
63 | },
|
64 | filters: [
|
65 | function(options, cb) {
|
66 | return cb(null, true);
|
67 | }
|
68 | ],
|
69 | options: {
|
70 | id: "block1"
|
71 | }
|
72 | }, {
|
73 | init: function(req, res, next) {
|
74 | return next('<div>2</div>');
|
75 | },
|
76 | filters: [
|
77 | function(options, cb) {
|
78 | return cb(null, true);
|
79 | }
|
80 | ],
|
81 | options: {
|
82 | id: "block2"
|
83 | }
|
84 | }, {
|
85 | init: function(req, res, next) {
|
86 | return next('<div>3</div>');
|
87 | },
|
88 | filters: [
|
89 | function(options, cb) {
|
90 | return cb(null, false);
|
91 | }
|
92 | ]
|
93 | }
|
94 | ]
|
95 | });
|
96 | req = makeRes();
|
97 | res = {
|
98 | locals: {
|
99 | $theme: {}
|
100 | }
|
101 | };
|
102 | return Block.init(req, res, function(err) {
|
103 | assert.equal('need theme' !== err, true);
|
104 | return res.locals.$block.render('region1', function(err, html) {
|
105 | assert.equal("<div>1</div><div>2</div>", html);
|
106 | assert.equal(true, res.locals.$block.current != null);
|
107 | assert.equal("block2", res.locals.$block.current.id);
|
108 | return done();
|
109 | });
|
110 | });
|
111 | });
|
112 | });
|
113 | describe('$block.exists()', function() {
|
114 | it('true', function(done) {
|
115 | var req, res;
|
116 | Block.configure({
|
117 | blocks: [
|
118 | {
|
119 | init: function(req, res, next) {
|
120 | return next('<div>1</div>');
|
121 | },
|
122 | filters: [
|
123 | function(options, cb) {
|
124 | return cb(null, true);
|
125 | }
|
126 | ]
|
127 | }
|
128 | ]
|
129 | });
|
130 | req = makeRes();
|
131 | res = {
|
132 | locals: {
|
133 | $theme: {
|
134 | current: {
|
135 | name: 'default'
|
136 | }
|
137 | }
|
138 | }
|
139 | };
|
140 | return Block.init(req, res, function(err) {
|
141 | assert.equal('need theme' !== err, true);
|
142 | return res.locals.$block.exists('region1', function(err, result) {
|
143 | assert.equal(true, result);
|
144 | return done();
|
145 | });
|
146 | });
|
147 | });
|
148 | it('false', function(done) {
|
149 | var req, res;
|
150 | Block.configure({
|
151 | blocks: [
|
152 | {
|
153 | init: function(req, res, next) {
|
154 | return next('<div>1</div>');
|
155 | },
|
156 | filters: [
|
157 | function(options, cb) {
|
158 | return cb(null, false);
|
159 | }
|
160 | ]
|
161 | }
|
162 | ]
|
163 | });
|
164 | req = makeRes();
|
165 | res = {
|
166 | locals: {
|
167 | $theme: {
|
168 | current: {
|
169 | name: 'default'
|
170 | }
|
171 | }
|
172 | }
|
173 | };
|
174 | return Block.init(req, res, function(err) {
|
175 | assert.equal('need theme' !== err, true);
|
176 | return res.locals.$block.exists('region1', function(err, result) {
|
177 | assert.equal(false, result);
|
178 | return done();
|
179 | });
|
180 | });
|
181 | });
|
182 | return it('show be true if no filter', function(done) {
|
183 | var req, res;
|
184 | Block.configure({
|
185 | blocks: [
|
186 | {
|
187 | init: function(req, res, next) {
|
188 | return next('<div>1</div>');
|
189 | }
|
190 | }
|
191 | ]
|
192 | });
|
193 | req = makeRes();
|
194 | res = {
|
195 | locals: {
|
196 | $theme: {
|
197 | current: {
|
198 | name: 'default'
|
199 | }
|
200 | }
|
201 | }
|
202 | };
|
203 | return Block.init(req, res, function(err) {
|
204 | assert.equal('need theme' !== err, true);
|
205 | return res.locals.$block.exists('region1', function(err, result) {
|
206 | assert.equal(true, result);
|
207 | return done();
|
208 | });
|
209 | });
|
210 | });
|
211 | });
|
212 | return describe('filter', function() {
|
213 | return describe('region()', function() {
|
214 | it('success', function(done) {
|
215 | var region1;
|
216 | region1 = Block.filters.region('region1');
|
217 | return region1({
|
218 | region: 'region1'
|
219 | }, function(err, result) {
|
220 | assert.equal(true, result);
|
221 | return done();
|
222 | });
|
223 | });
|
224 | return it('failed', function(done) {
|
225 | var region1;
|
226 | region1 = Block.filters.region('region1');
|
227 | return region1({
|
228 | region: 'region2'
|
229 | }, function(err, result) {
|
230 | assert.equal(false, result);
|
231 | return done();
|
232 | });
|
233 | });
|
234 | });
|
235 | });
|
236 | });
|
237 |
|
238 |
|