volt 0.8.14 → 0.8.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/Readme.md +8 -2
  4. data/VERSION +1 -1
  5. data/app/volt/controllers/notices_controller.rb +1 -1
  6. data/app/volt/models/user.rb +2 -2
  7. data/app/volt/tasks/live_query/live_query_pool.rb +1 -1
  8. data/app/volt/tasks/query_tasks.rb +1 -1
  9. data/app/volt/tasks/store_tasks.rb +1 -1
  10. data/app/volt/tasks/user_tasks.rb +2 -2
  11. data/lib/volt/boot.rb +2 -2
  12. data/lib/volt/cli/asset_compile.rb +31 -27
  13. data/lib/volt/cli.rb +64 -65
  14. data/lib/volt/config.rb +25 -23
  15. data/lib/volt/console.rb +17 -16
  16. data/lib/volt/controllers/model_controller.rb +82 -80
  17. data/lib/volt/data_stores/data_store.rb +2 -2
  18. data/lib/volt/data_stores/mongo_driver.rb +2 -2
  19. data/lib/volt/extra_core/inflections.rb +2 -2
  20. data/lib/volt/extra_core/inflector/inflections.rb +185 -183
  21. data/lib/volt/extra_core/inflector/methods.rb +50 -48
  22. data/lib/volt/extra_core/string.rb +2 -2
  23. data/lib/volt/models/array_model.rb +93 -92
  24. data/lib/volt/models/cursor.rb +3 -2
  25. data/lib/volt/models/model.rb +248 -251
  26. data/lib/volt/models/model_hash_behaviour.rb +44 -44
  27. data/lib/volt/models/model_helpers.rb +38 -36
  28. data/lib/volt/models/model_state.rb +16 -17
  29. data/lib/volt/models/model_wrapper.rb +25 -24
  30. data/lib/volt/models/persistors/array_store.rb +145 -143
  31. data/lib/volt/models/persistors/base.rb +18 -16
  32. data/lib/volt/models/persistors/flash.rb +24 -22
  33. data/lib/volt/models/persistors/local_store.rb +46 -44
  34. data/lib/volt/models/persistors/model_identity_map.rb +10 -8
  35. data/lib/volt/models/persistors/model_store.rb +76 -76
  36. data/lib/volt/models/persistors/params.rb +19 -17
  37. data/lib/volt/models/persistors/query/query_listener.rb +65 -63
  38. data/lib/volt/models/persistors/query/query_listener_pool.rb +12 -10
  39. data/lib/volt/models/persistors/store.rb +28 -28
  40. data/lib/volt/models/persistors/store_factory.rb +12 -10
  41. data/lib/volt/models/persistors/store_state.rb +33 -31
  42. data/lib/volt/models/url.rb +96 -104
  43. data/lib/volt/models/validations.rb +56 -54
  44. data/lib/volt/models/validators/length_validator.rb +24 -22
  45. data/lib/volt/models/validators/presence_validator.rb +14 -12
  46. data/lib/volt/page/bindings/attribute_binding.rb +106 -106
  47. data/lib/volt/page/bindings/base_binding.rb +23 -21
  48. data/lib/volt/page/bindings/component_binding.rb +3 -1
  49. data/lib/volt/page/bindings/content_binding.rb +34 -34
  50. data/lib/volt/page/bindings/each_binding.rb +113 -113
  51. data/lib/volt/page/bindings/event_binding.rb +38 -34
  52. data/lib/volt/page/bindings/if_binding.rb +56 -54
  53. data/lib/volt/page/bindings/template_binding/grouped_controllers.rb +24 -22
  54. data/lib/volt/page/bindings/template_binding.rb +182 -185
  55. data/lib/volt/page/channel.rb +79 -77
  56. data/lib/volt/page/channel_stub.rb +29 -27
  57. data/lib/volt/page/document.rb +6 -5
  58. data/lib/volt/page/document_events.rb +54 -52
  59. data/lib/volt/page/page.rb +139 -138
  60. data/lib/volt/page/string_template_renderer.rb +36 -36
  61. data/lib/volt/page/sub_context.rb +26 -25
  62. data/lib/volt/page/targets/attribute_section.rb +27 -25
  63. data/lib/volt/page/targets/attribute_target.rb +7 -6
  64. data/lib/volt/page/targets/base_section.rb +27 -26
  65. data/lib/volt/page/targets/binding_document/base_node.rb +3 -1
  66. data/lib/volt/page/targets/binding_document/component_node.rb +85 -82
  67. data/lib/volt/page/targets/binding_document/html_node.rb +11 -9
  68. data/lib/volt/page/targets/dom_section.rb +78 -77
  69. data/lib/volt/page/targets/dom_target.rb +8 -6
  70. data/lib/volt/page/targets/dom_template.rb +90 -88
  71. data/lib/volt/page/targets/helpers/comment_searchers.rb +51 -49
  72. data/lib/volt/page/tasks.rb +59 -57
  73. data/lib/volt/page/template_renderer.rb +17 -14
  74. data/lib/volt/page/url_tracker.rb +26 -24
  75. data/lib/volt/reactive/computation.rb +87 -88
  76. data/lib/volt/reactive/dependency.rb +30 -28
  77. data/lib/volt/reactive/eventable.rb +64 -62
  78. data/lib/volt/reactive/hash_dependency.rb +25 -23
  79. data/lib/volt/reactive/reactive_accessors.rb +34 -32
  80. data/lib/volt/reactive/reactive_array.rb +162 -162
  81. data/lib/volt/reactive/reactive_hash.rb +37 -35
  82. data/lib/volt/router/routes.rb +99 -101
  83. data/lib/volt/server/component_handler.rb +20 -21
  84. data/lib/volt/server/component_templates.rb +72 -70
  85. data/lib/volt/server/html_parser/attribute_scope.rb +109 -99
  86. data/lib/volt/server/html_parser/each_scope.rb +17 -16
  87. data/lib/volt/server/html_parser/if_view_scope.rb +51 -49
  88. data/lib/volt/server/html_parser/sandlebars_parser.rb +184 -177
  89. data/lib/volt/server/html_parser/textarea_scope.rb +24 -22
  90. data/lib/volt/server/html_parser/view_handler.rb +66 -65
  91. data/lib/volt/server/html_parser/view_parser.rb +23 -21
  92. data/lib/volt/server/html_parser/view_scope.rb +142 -141
  93. data/lib/volt/server/rack/asset_files.rb +81 -79
  94. data/lib/volt/server/rack/component_code.rb +17 -15
  95. data/lib/volt/server/rack/component_html_renderer.rb +14 -12
  96. data/lib/volt/server/rack/component_paths.rb +72 -71
  97. data/lib/volt/server/rack/index_files.rb +36 -39
  98. data/lib/volt/server/rack/opal_files.rb +43 -41
  99. data/lib/volt/server/rack/source_map_server.rb +23 -21
  100. data/lib/volt/server/socket_connection_handler.rb +46 -45
  101. data/lib/volt/server/socket_connection_handler_stub.rb +21 -19
  102. data/lib/volt/server.rb +60 -58
  103. data/lib/volt/spec/setup.rb +3 -3
  104. data/lib/volt/tasks/dispatcher.rb +24 -23
  105. data/lib/volt/tasks/task_handler.rb +35 -33
  106. data/lib/volt/utils/ejson.rb +8 -6
  107. data/lib/volt/utils/generic_counting_pool.rb +33 -31
  108. data/lib/volt/utils/generic_pool.rb +73 -70
  109. data/lib/volt/utils/local_storage.rb +42 -38
  110. data/lib/volt/volt/environment.rb +1 -1
  111. data/lib/volt.rb +44 -42
  112. data/spec/apps/kitchen_sink/app/main/assets/css/todos.css +28 -0
  113. data/spec/apps/kitchen_sink/app/main/config/routes.rb +1 -0
  114. data/spec/apps/kitchen_sink/app/main/controllers/main_controller.rb +2 -2
  115. data/spec/apps/kitchen_sink/app/main/controllers/todos_controller.rb +17 -0
  116. data/spec/apps/kitchen_sink/app/main/views/main/main.html +1 -0
  117. data/spec/apps/kitchen_sink/app/main/views/todos/index.html +24 -0
  118. data/spec/apps/kitchen_sink/config.ru +1 -1
  119. data/spec/controllers/reactive_accessors_spec.rb +5 -5
  120. data/spec/extra_core/inflector_spec.rb +2 -2
  121. data/spec/integration/list_spec.rb +68 -0
  122. data/spec/models/model_spec.rb +57 -57
  123. data/spec/models/persistors/params_spec.rb +6 -6
  124. data/spec/models/persistors/store_spec.rb +7 -7
  125. data/spec/models/validations_spec.rb +3 -3
  126. data/spec/page/bindings/content_binding_spec.rb +7 -7
  127. data/spec/page/bindings/template_binding_spec.rb +4 -5
  128. data/spec/page/sub_context_spec.rb +2 -2
  129. data/spec/reactive/computation_spec.rb +10 -10
  130. data/spec/reactive/dependency_spec.rb +2 -2
  131. data/spec/reactive/eventable_spec.rb +4 -4
  132. data/spec/reactive/reactive_array_spec.rb +13 -13
  133. data/spec/router/routes_spec.rb +5 -5
  134. data/spec/server/html_parser/sandlebars_parser_spec.rb +9 -9
  135. data/spec/server/html_parser/view_parser_spec.rb +27 -27
  136. data/spec/server/rack/asset_files_spec.rb +5 -5
  137. data/spec/server/rack/component_paths_spec.rb +2 -2
  138. data/spec/tasks/live_query_spec.rb +2 -2
  139. data/spec/tasks/query_tasks.rb +1 -1
  140. data/spec/tasks/query_tracker_spec.rb +1 -1
  141. data/spec/templates/targets/binding_document/component_node_spec.rb +2 -2
  142. data/spec/utils/generic_counting_pool_spec.rb +2 -2
  143. data/spec/utils/generic_pool_spec.rb +2 -2
  144. data/templates/component/controllers/main_controller.rb +1 -1
  145. data/templates/model/model.rb.tt +2 -2
  146. data/templates/newgem/app/newgem/controllers/main_controller.rb.tt +2 -2
  147. data/templates/project/app/main/controllers/main_controller.rb +1 -1
  148. data/templates/project/config.ru +1 -1
  149. metadata +10 -3
  150. data/app/volt/assets/js/vertxbus.js +0 -216
@@ -2,45 +2,45 @@ require 'spec_helper'
2
2
  require 'volt/models'
3
3
 
4
4
 
5
- class TestItem < Model
5
+ class TestItem < Volt::Model
6
6
  end
7
7
 
8
- class Item < Model
8
+ class Item < Volt::Model
9
9
  end
10
10
 
11
11
 
12
- describe Model do
12
+ describe Volt::Model do
13
13
 
14
14
  it "should allow _ methods to be used to store values without predefining them" do
15
- a = Model.new
15
+ a = Volt::Model.new
16
16
  a._stash = 'yes'
17
17
 
18
18
  expect(a._stash).to eq('yes')
19
19
  end
20
20
 
21
21
  it "should update other values off the same model" do
22
- a = Model.new
22
+ a = Volt::Model.new
23
23
 
24
24
  values = []
25
25
  -> { values << a._name }.watch!
26
26
 
27
27
  expect(values).to eq([nil])
28
- Computation.flush!
28
+ Volt::Computation.flush!
29
29
 
30
30
  a._name = 'Bob'
31
31
 
32
- Computation.flush!
32
+ Volt::Computation.flush!
33
33
  expect(values).to eq([nil, 'Bob'])
34
34
  end
35
35
 
36
36
  it "should say unregistered attributes are nil" do
37
- a = Model.new
37
+ a = Volt::Model.new
38
38
  b = a._missing == nil
39
39
  expect(b).to eq(true)
40
40
  end
41
41
 
42
42
  it "should negate nil and false correctly" do
43
- a = Model.new
43
+ a = Volt::Model.new
44
44
  expect((!a._missing)).to eq(true)
45
45
 
46
46
  a._mis1 = nil
@@ -51,29 +51,29 @@ describe Model do
51
51
  end
52
52
 
53
53
  it "should return a nil model for an underscore value that doesn't exist" do
54
- a = Model.new
54
+ a = Volt::Model.new
55
55
  expect(a._something.attributes).to eq(nil)
56
56
  end
57
57
 
58
58
 
59
59
  it "should trigger changed once when a new value is assigned." do
60
- a = Model.new
60
+ a = Volt::Model.new
61
61
 
62
62
  count = 0
63
63
  -> { a._blue ; count += 1 }.watch!
64
64
  expect(count).to eq(1)
65
65
 
66
66
  a._blue = 'one'
67
- Computation.flush!
67
+ Volt::Computation.flush!
68
68
  expect(count).to eq(2)
69
69
 
70
70
  a._blue = 'two'
71
- Computation.flush!
71
+ Volt::Computation.flush!
72
72
  expect(count).to eq(3)
73
73
  end
74
74
 
75
75
  it "should not trigger changed on other attributes" do
76
- a = Model.new
76
+ a = Volt::Model.new
77
77
 
78
78
  blue_count = 0
79
79
  green_count = 0
@@ -85,18 +85,18 @@ describe Model do
85
85
  expect(green_count).to eq(1)
86
86
 
87
87
  a._green = 'one'
88
- Computation.flush!
88
+ Volt::Computation.flush!
89
89
  expect(blue_count).to eq(1)
90
90
  expect(green_count).to eq(2)
91
91
 
92
92
  a._blue = 'two'
93
- Computation.flush!
93
+ Volt::Computation.flush!
94
94
  expect(blue_count).to eq(2)
95
95
  expect(green_count).to eq(2)
96
96
  end
97
97
 
98
98
  it "should call change through arguments" do
99
- a = Model.new
99
+ a = Volt::Model.new
100
100
  a._one = 1
101
101
  a._two = 2
102
102
  a._three = 3
@@ -108,20 +108,20 @@ describe Model do
108
108
  expect(count).to eq(1)
109
109
 
110
110
  a._two = 5
111
- Computation.flush!
111
+ Volt::Computation.flush!
112
112
  expect(count).to eq(2)
113
113
 
114
114
  a._one = 6
115
- Computation.flush!
115
+ Volt::Computation.flush!
116
116
  expect(count).to eq(3)
117
117
 
118
118
  a._three = 7
119
- Computation.flush!
119
+ Volt::Computation.flush!
120
120
  expect(count).to eq(3)
121
121
  end
122
122
 
123
123
  it 'should update through a normal array' do
124
- model = Model.new
124
+ model = Volt::Model.new
125
125
  array = []
126
126
  array << model
127
127
 
@@ -132,14 +132,14 @@ describe Model do
132
132
  expect(values).to eq([nil])
133
133
 
134
134
  model._prop = 'one'
135
- Computation.flush!
135
+ Volt::Computation.flush!
136
136
 
137
137
  expect(values).to eq([nil, 'one'])
138
138
 
139
139
  end
140
140
 
141
141
  it "should trigger changed for any indicies after a deleted index" do
142
- model = Model.new
142
+ model = Volt::Model.new
143
143
 
144
144
  model._items << {_name: 'One'}
145
145
  model._items << {_name: 'Two'}
@@ -150,12 +150,12 @@ describe Model do
150
150
  expect(count).to eq(1)
151
151
 
152
152
  model._items.delete_at(1)
153
- Computation.flush!
153
+ Volt::Computation.flush!
154
154
  expect(count).to eq(2)
155
155
  end
156
156
 
157
157
  it "should change the size and length when an item gets added" do
158
- model = Model.new
158
+ model = Volt::Model.new
159
159
 
160
160
  model._items << {_name: 'One'}
161
161
  size = model._items.size
@@ -169,14 +169,14 @@ describe Model do
169
169
  expect(count_length).to eq(1)
170
170
 
171
171
  model._items << {_name: 'Two'}
172
- Computation.flush!
172
+ Volt::Computation.flush!
173
173
 
174
174
  expect(count_size).to eq(2)
175
175
  expect(count_length).to eq(2)
176
176
  end
177
177
 
178
178
  it "should add doubly nested arrays" do
179
- model = Model.new
179
+ model = Volt::Model.new
180
180
 
181
181
  model._items << {name: 'Cool', lists: []}
182
182
  model._items[0]._lists << {name: 'worked'}
@@ -184,61 +184,61 @@ describe Model do
184
184
  end
185
185
 
186
186
  it "should make pushed subarrays into ArrayModels" do
187
- model = Model.new
187
+ model = Volt::Model.new
188
188
 
189
189
  model._items << {_name: 'Test', _lists: []}
190
- expect(model._items[0]._lists.class).to eq(ArrayModel)
190
+ expect(model._items[0]._lists.class).to eq(Volt::ArrayModel)
191
191
  end
192
192
 
193
193
  it "should make assigned subarrays into ArrayModels" do
194
- model = Model.new
194
+ model = Volt::Model.new
195
195
 
196
196
  model._item._name = 'Test'
197
197
  model._item._lists = []
198
- expect(model._item._lists.class).to eq(ArrayModel)
198
+ expect(model._item._lists.class).to eq(Volt::ArrayModel)
199
199
  end
200
200
 
201
201
  it "should call changed when a the reference to a submodel is assigned to another value" do
202
- a = Model.new
202
+ a = Volt::Model.new
203
203
 
204
204
  count = 0
205
205
  -> { a._blue && a._blue.respond_to?(:green) && a._blue._green ; count += 1 }.watch!
206
206
  expect(count).to eq(1)
207
207
 
208
208
  a._blue._green = 5
209
- Computation.flush!
209
+ Volt::Computation.flush!
210
210
 
211
211
  # TODO: Should equal 2
212
212
  expect(count).to eq(2)
213
213
 
214
214
  a._blue = 22
215
- Computation.flush!
215
+ Volt::Computation.flush!
216
216
  expect(count).to eq(3)
217
217
 
218
218
  a._blue = {green: 50}
219
219
  expect(a._blue._green).to eq(50)
220
- Computation.flush!
220
+ Volt::Computation.flush!
221
221
  expect(count).to eq(4)
222
222
  end
223
223
 
224
224
  it "should trigger changed when a value is deleted" do
225
- a = Model.new
225
+ a = Volt::Model.new
226
226
 
227
227
  count = 0
228
228
  -> { a._blue ; count += 1 }.watch!
229
229
  expect(count).to eq(1)
230
230
 
231
231
  a._blue = 1
232
- Computation.flush!
232
+ Volt::Computation.flush!
233
233
  expect(count).to eq(2)
234
234
 
235
235
  a.delete(:blue)
236
- Computation.flush!
236
+ Volt::Computation.flush!
237
237
  expect(count).to eq(3)
238
238
  end
239
239
 
240
240
  it "should let you append nested hashes" do
241
- a = Model.new
241
+ a = Volt::Model.new
242
242
 
243
243
  a._items << {name: {text: 'Name'}}
244
244
 
@@ -247,7 +247,7 @@ describe Model do
247
247
 
248
248
 
249
249
  it "should not call added too many times" do
250
- a = Model.new
250
+ a = Volt::Model.new
251
251
  a._lists << 1
252
252
 
253
253
  count = 0
@@ -259,7 +259,7 @@ describe Model do
259
259
  end
260
260
 
261
261
  it "should propigate to different branches" do
262
- a = Model.new
262
+ a = Volt::Model.new
263
263
  count = 0
264
264
  -> do
265
265
  count += 1
@@ -268,13 +268,13 @@ describe Model do
268
268
  expect(count).to eq(1)
269
269
 
270
270
  a._new_item._name = 'Testing'
271
- Computation.flush!
271
+ Volt::Computation.flush!
272
272
  expect(count).to eq(2)
273
273
  end
274
274
 
275
275
  describe "paths" do
276
276
  it "should store the path" do
277
- a = Model.new
277
+ a = Volt::Model.new
278
278
  expect(a._test.path).to eq([:test])
279
279
  a._test = {_name: 'Yes'}
280
280
  expect(a._test.path).to eq([:test])
@@ -285,7 +285,7 @@ describe Model do
285
285
  end
286
286
 
287
287
  it "should store the paths when assigned" do
288
- a = Model.new
288
+ a = Volt::Model.new
289
289
 
290
290
  a._items = [{_name: 'Cool'}]
291
291
 
@@ -294,7 +294,7 @@ describe Model do
294
294
  end
295
295
 
296
296
  it "should handle nested paths" do
297
- a = Model.new
297
+ a = Volt::Model.new
298
298
 
299
299
  a._items << {name: 'Cool', lists: [{name: 'One'}, {name: 'Two'}]}
300
300
 
@@ -303,7 +303,7 @@ describe Model do
303
303
  end
304
304
 
305
305
  it "should trigger added when added" do
306
- a = Model.new
306
+ a = Volt::Model.new
307
307
  count = 0
308
308
  b = a._items
309
309
 
@@ -318,7 +318,7 @@ describe Model do
318
318
  end
319
319
 
320
320
  it "should trigger on false assign" do
321
- a = Model.new
321
+ a = Volt::Model.new
322
322
  count = 0
323
323
 
324
324
  -> { count += 1 ; a._complete }.watch!
@@ -326,16 +326,16 @@ describe Model do
326
326
  expect(count).to eq(1)
327
327
 
328
328
  a._complete = true
329
- Computation.flush!
329
+ Volt::Computation.flush!
330
330
  expect(count).to eq(2)
331
331
 
332
332
  a._complete = false
333
- Computation.flush!
333
+ Volt::Computation.flush!
334
334
  expect(count).to eq(3)
335
335
  end
336
336
 
337
337
  it "should delete from an ArrayModel" do
338
- array = ArrayModel.new([])
338
+ array = Volt::ArrayModel.new([])
339
339
 
340
340
  array << {name: 'One'}
341
341
  array << {name: 'Two'}
@@ -351,7 +351,7 @@ describe Model do
351
351
  end
352
352
 
353
353
  it "should compare true" do
354
- a = Model.new({_name: 'Cool'})
354
+ a = Volt::Model.new({_name: 'Cool'})
355
355
  expect(a == a).to eq(true)
356
356
  end
357
357
 
@@ -361,7 +361,7 @@ describe Model do
361
361
  end
362
362
 
363
363
  it "should convert to a hash, and unwrap all of the way down" do
364
- a = Model.new
364
+ a = Volt::Model.new
365
365
  a._items << {name: 'Test1', other: {time: 'Now'}}
366
366
  a._items << {name: 'Test2', other: {time: 'Later'}}
367
367
 
@@ -381,7 +381,7 @@ describe Model do
381
381
 
382
382
  describe "model paths" do
383
383
  before do
384
- @model = Model.new
384
+ @model = Volt::Model.new
385
385
  end
386
386
 
387
387
  it "should set the model path" do
@@ -410,19 +410,19 @@ describe Model do
410
410
 
411
411
  describe "persistors" do
412
412
  it "should setup a new instance of the persistor with self" do
413
- persistor = double('persistor')
413
+ persistor = double('volt/persistor')
414
414
  expect(persistor).to receive(:new)
415
- @model = Model.new(nil, persistor: persistor)
415
+ @model = Volt::Model.new(nil, persistor: persistor)
416
416
  end
417
417
  end
418
418
 
419
419
  if RUBY_PLATFORM != 'opal'
420
420
  describe "class loading" do
421
421
  it 'should load classes for models' do
422
- $page = Page.new
422
+ $page = Volt::Page.new
423
423
  $page.add_model('Item')
424
424
 
425
- @model = Model.new
425
+ @model = Volt::Model.new
426
426
 
427
427
  # Should return a buffer of the right type
428
428
  expect(@model._items.buffer.class).to eq(Item)
@@ -1,17 +1,17 @@
1
1
  require 'spec_helper'
2
2
  require 'volt/models'
3
3
 
4
- describe Persistors::Params do
4
+ describe Volt::Persistors::Params do
5
5
  it "should stay as params classes when used" do
6
- a = Model.new({}, persistor: Persistors::Params)
7
- expect(a._test.class).to eq(Model)
6
+ a = Volt::Model.new({}, persistor: Volt::Persistors::Params)
7
+ expect(a._test.class).to eq(Volt::Model)
8
8
 
9
- expect(a._test._cool.persistor.class).to eq(Persistors::Params)
9
+ expect(a._test._cool.persistor.class).to eq(Volt::Persistors::Params)
10
10
 
11
11
  a._items << {name: 'Test'}
12
12
 
13
- expect(a._items.persistor.class).to eq(Persistors::Params)
14
- expect(a._items[0].persistor.class).to eq(Persistors::Params)
13
+ expect(a._items.persistor.class).to eq(Volt::Persistors::Params)
14
+ expect(a._items[0].persistor.class).to eq(Volt::Persistors::Params)
15
15
  expect(a._items[0]._name.class).to eq(String)
16
16
  end
17
17
  end
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
  require 'volt/models'
3
3
 
4
- describe Persistors::Store do
4
+ describe Volt::Persistors::Store do
5
5
  it "should tell the persistor when the model has changed" do
6
- persistor = double('persistor')
7
- persistor_instance = double('persistor instance')
6
+ persistor = double('volt/persistor')
7
+ persistor_instance = double('volt/persistor instance')
8
8
  expect(persistor_instance).to receive(:loaded)
9
9
  expect(persistor).to receive(:new).and_return(persistor_instance)
10
10
 
11
- @model = Model.new(nil, persistor: persistor)
11
+ @model = Volt::Model.new(nil, persistor: persistor)
12
12
 
13
13
  expect(persistor_instance).to receive(:changed)
14
14
 
@@ -16,12 +16,12 @@ describe Persistors::Store do
16
16
  end
17
17
 
18
18
  it "should tell the persistor when something is added to an array model" do
19
- persistor = double('persistor')
20
- persistor_instance = double('persistor instance')
19
+ persistor = double('volt/persistor')
20
+ persistor_instance = double('volt/persistor instance')
21
21
  expect(persistor_instance).to receive(:loaded)
22
22
  expect(persistor).to receive(:new).and_return(persistor_instance)
23
23
 
24
- @model = ArrayModel.new([1,2,3], persistor: persistor)
24
+ @model = Volt::ArrayModel.new([1,2,3], persistor: persistor)
25
25
 
26
26
  expect(persistor_instance).to receive(:added).with(4,3)
27
27
 
@@ -1,13 +1,13 @@
1
1
  require 'volt/models'
2
2
 
3
- class TestModel < Model
3
+ class TestModel < Volt::Model
4
4
  validate :_name, length: 4
5
5
  validate :_description, length: {message: 'needs to be longer', length: 50}
6
6
  validate :_username, presence: true
7
7
  end
8
8
 
9
9
 
10
- describe Model do
10
+ describe Volt::Model do
11
11
  it "should validate the name" do
12
12
  expect(TestModel.new.errors).to eq(
13
13
  {
@@ -73,4 +73,4 @@ describe Model do
73
73
  )
74
74
  end
75
75
  end
76
- end
76
+ end
@@ -5,18 +5,18 @@ require 'volt/page/targets/dom_section'
5
5
  require 'volt/page/template_renderer'
6
6
 
7
7
 
8
- describe ContentBinding do
8
+ describe Volt::ContentBinding do
9
9
  it "should render the content in a content binding" do
10
- dom = AttributeTarget.new(0)
10
+ dom = Volt::AttributeTarget.new(0)
11
11
  context = {:name => 'jimmy'}
12
- binding = ContentBinding.new(nil, dom, context, 0, Proc.new { self[:name] })
12
+ binding = Volt::ContentBinding.new(nil, dom, context, 0, Proc.new { self[:name] })
13
13
 
14
14
  expect(dom.to_html).to eq('jimmy')
15
15
  end
16
16
 
17
17
  it "should render with a template" do
18
18
  context = {:name => 'jimmy'}
19
- binding = lambda {|page, target, context, id| ContentBinding.new(page, target, context, id, Proc.new { self[:name] }) }
19
+ binding = lambda {|page, target, context, id| Volt::ContentBinding.new(page, target, context, id, Proc.new { self[:name] }) }
20
20
 
21
21
  templates = {
22
22
  'main/main' => {
@@ -25,12 +25,12 @@ describe ContentBinding do
25
25
  }
26
26
  }
27
27
 
28
- page = double('page')
28
+ page = double('volt/page')
29
29
  expect(page).to receive(:templates).and_return(templates)
30
30
 
31
- dom = AttributeTarget.new(0)
31
+ dom = Volt::AttributeTarget.new(0)
32
32
 
33
- TemplateRenderer.new(page, dom, context, 'main', 'main/main')
33
+ Volt::TemplateRenderer.new(page, dom, context, 'main', 'main/main')
34
34
 
35
35
  expect(dom.to_html).to eq('hello jimmy')
36
36
  end
@@ -3,18 +3,17 @@ require 'volt/page/bindings/template_binding'
3
3
 
4
4
  # Setup page stub
5
5
 
6
- class Page
6
+ class Volt::Page
7
7
  attr_accessor :templates
8
8
  end
9
9
 
10
-
11
- describe TemplateBinding do
10
+ describe Volt::TemplateBinding do
12
11
  before do
13
- @page = double('page')
12
+ @page = double('volt/page')
14
13
  expect(@page).to receive(:templates).at_least(1).times { @templates }
15
14
 
16
15
  # TODO: We should decouple things so we don't need to allocate
17
- @template_binding = TemplateBinding.allocate
16
+ @template_binding = Volt::TemplateBinding.allocate
18
17
  @template_binding.instance_variable_set('@page', @page)
19
18
  @template_binding.setup_path('main/main/main')
20
19
  end
@@ -1,8 +1,8 @@
1
1
  require 'volt/page/sub_context'
2
2
 
3
- describe SubContext do
3
+ describe Volt::SubContext do
4
4
  it "should respond_to correctly on locals" do
5
- sub_context = SubContext.new({:name => 'Name'})
5
+ sub_context = Volt::SubContext.new({:name => 'Name'})
6
6
 
7
7
  expect(sub_context.respond_to?(:name)).to eq(true)
8
8
  expect(sub_context.respond_to?(:missing)).to eq(false)
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Computation do
3
+ describe Volt::Computation do
4
4
  it 'should trigger again when a dependent changes' do
5
- a = ReactiveHash.new
5
+ a = Volt::ReactiveHash.new
6
6
 
7
7
  values = []
8
8
 
@@ -11,16 +11,16 @@ describe Computation do
11
11
  expect(values).to eq([nil])
12
12
 
13
13
  a[0] = 'one'
14
- Computation.flush!
14
+ Volt::Computation.flush!
15
15
  expect(values).to eq([nil, 'one'])
16
16
 
17
17
  a[0] = 'two'
18
- Computation.flush!
18
+ Volt::Computation.flush!
19
19
  expect(values).to eq([nil, 'one', 'two'])
20
20
  end
21
21
 
22
22
  it 'should not trigger after the computation is stopped' do
23
- a = ReactiveHash.new
23
+ a = Volt::ReactiveHash.new
24
24
 
25
25
  values = []
26
26
  computation = -> { values << a[0] }.watch!
@@ -28,18 +28,18 @@ describe Computation do
28
28
  expect(values).to eq([nil])
29
29
 
30
30
  a[0] = 'one'
31
- Computation.flush!
31
+ Volt::Computation.flush!
32
32
  expect(values).to eq([nil, 'one'])
33
33
 
34
34
  computation.stop
35
35
 
36
36
  a[0] = 'two'
37
- Computation.flush!
37
+ Volt::Computation.flush!
38
38
  expect(values).to eq([nil, 'one'])
39
39
  end
40
40
 
41
41
  it 'should support nested watches' do
42
- a = ReactiveHash.new
42
+ a = Volt::ReactiveHash.new
43
43
 
44
44
  values = []
45
45
  -> do
@@ -53,11 +53,11 @@ describe Computation do
53
53
  expect(values).to eq([nil,nil])
54
54
 
55
55
  a[1] = 'inner'
56
- Computation.flush!
56
+ Volt::Computation.flush!
57
57
  expect(values).to eq([nil,nil,'inner'])
58
58
 
59
59
  a[0] = 'outer'
60
- Computation.flush!
60
+ Volt::Computation.flush!
61
61
  expect(values).to eq([nil,nil,'inner','outer','inner'])
62
62
  end
63
63
  end
@@ -1,5 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Dependency do
3
+ describe Volt::Dependency do
4
4
 
5
- end
5
+ end
@@ -2,14 +2,14 @@ require 'spec_helper'
2
2
  require 'volt/reactive/eventable'
3
3
 
4
4
  class TestEventable
5
- include Eventable
5
+ include Volt::Eventable
6
6
 
7
7
  def trigger_works_event!
8
8
  trigger!('works', 20)
9
9
  end
10
10
  end
11
11
 
12
- describe Eventable do
12
+ describe Volt::Eventable do
13
13
  it 'should allow events to be bound with on' do
14
14
  test_eventable = TestEventable.new
15
15
 
@@ -32,7 +32,7 @@ describe Eventable do
32
32
  count += 1
33
33
  end
34
34
 
35
- expect(listener.class).to eq(Listener)
35
+ expect(listener.class).to eq(Volt::Listener)
36
36
 
37
37
  expect(count).to eq(0)
38
38
  test_eventable.trigger_works_event!
@@ -45,4 +45,4 @@ describe Eventable do
45
45
  test_eventable.trigger_works_event!
46
46
  expect(count).to eq(2)
47
47
  end
48
- end
48
+ end