joosy 1.0.0.RC4 → 1.0.0.RC5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. data/Gemfile +1 -1
  2. data/Gemfile.lock +99 -82
  3. data/README.md +1 -1
  4. data/app/assets/javascripts/joosy/core/application.js.coffee +2 -2
  5. data/app/assets/javascripts/joosy/core/form.js.coffee +35 -22
  6. data/app/assets/javascripts/joosy/core/helpers/form.js.coffee +38 -9
  7. data/app/assets/javascripts/joosy/core/helpers/view.js.coffee +10 -4
  8. data/app/assets/javascripts/joosy/core/helpers/widgets.js.coffee +6 -1
  9. data/app/assets/javascripts/joosy/core/joosy.js.coffee +5 -3
  10. data/app/assets/javascripts/joosy/core/layout.js.coffee +5 -5
  11. data/app/assets/javascripts/joosy/core/modules/events.js.coffee +28 -10
  12. data/app/assets/javascripts/joosy/core/modules/log.js.coffee +1 -1
  13. data/app/assets/javascripts/joosy/core/modules/module.js.coffee +2 -2
  14. data/app/assets/javascripts/joosy/core/modules/time_manager.js.coffee +1 -1
  15. data/app/assets/javascripts/joosy/core/page.js.coffee +1 -1
  16. data/app/assets/javascripts/joosy/core/resource/collection.js.coffee +18 -18
  17. data/app/assets/javascripts/joosy/core/resource/generic.js.coffee +21 -19
  18. data/app/assets/javascripts/joosy/core/resource/rest.js.coffee +26 -14
  19. data/app/assets/javascripts/joosy/core/resource/rest_collection.js.coffee +2 -2
  20. data/app/assets/javascripts/joosy/core/router.js.coffee +2 -2
  21. data/app/assets/javascripts/joosy/core/widget.js.coffee +3 -0
  22. data/app/assets/javascripts/joosy/preloaders/caching.js.coffee +7 -7
  23. data/app/assets/javascripts/joosy/preloaders/inline.js.coffee +5 -5
  24. data/lib/joosy/rails/version.rb +1 -1
  25. data/lib/rails/generators/joosy/templates/app/helpers/application.js.coffee +2 -2
  26. data/lib/rails/generators/joosy/templates/app/pages/welcome/index.js.coffee +5 -5
  27. data/lib/rails/generators/joosy/templates/app/routes.js.coffee +2 -2
  28. data/lib/rails/generators/joosy/templates/preload.html.slim +19 -0
  29. data/lib/rails/resources_with_joosy.rb +2 -2
  30. data/spec/javascripts/helpers/spec_helper.js.coffee +19 -0
  31. data/spec/javascripts/joosy/core/form_spec.js.coffee +36 -16
  32. data/spec/javascripts/joosy/core/helpers/forms_spec.js.coffee +28 -23
  33. data/spec/javascripts/joosy/core/helpers/widgets_spec.js.coffee +17 -0
  34. data/spec/javascripts/joosy/core/joosy_spec.js.coffee +2 -0
  35. data/spec/javascripts/joosy/core/modules/events_spec.js.coffee +35 -1
  36. data/spec/javascripts/joosy/core/modules/renderer_spec.js.coffee +29 -29
  37. data/spec/javascripts/joosy/core/page_spec.js.coffee +2 -2
  38. data/spec/javascripts/joosy/core/resource/collection_spec.js.coffee +14 -9
  39. data/spec/javascripts/joosy/core/resource/generic_spec.js.coffee +19 -19
  40. data/spec/javascripts/joosy/core/resource/rest_collection_spec.js.coffee +0 -1
  41. data/spec/javascripts/joosy/core/resource/rest_spec.js.coffee +9 -3
  42. data/spec/javascripts/joosy/preloaders/caching_spec.js.coffee +7 -7
  43. data/spec/javascripts/joosy/preloaders/inline_spec.js.coffee +5 -5
  44. data/spec/javascripts/support/sinon-1.3.1.js +6 -6
  45. data/spec/javascripts/support/sinon-ie-1.3.1.js +5 -5
  46. metadata +22 -20
@@ -21,16 +21,16 @@ describe "Joosy.Resource.Generic", ->
21
21
  it "remembers where it belongs", ->
22
22
  resource = new Joosy.Resource.Generic foo: 'bar'
23
23
  expect(resource.data).toEqual foo: 'bar'
24
-
24
+
25
25
  it "produces magic function", ->
26
26
  expect(Object.isFunction @resource).toBeTruthy()
27
27
  expect(@resource.data).toEqual @data
28
-
28
+
29
29
  it "gets values", ->
30
30
  expect(@resource 'foo').toEqual 'bar'
31
31
  expect(@resource 'very.deep').toEqual value: 'boo!'
32
32
  expect(@resource 'very.deep.value').toEqual 'boo!'
33
-
33
+
34
34
  it "sets values", ->
35
35
  expect(@resource 'foo').toEqual 'bar'
36
36
  @resource 'foo', 'baz'
@@ -39,49 +39,49 @@ describe "Joosy.Resource.Generic", ->
39
39
  expect(@resource 'very.deep').toEqual value: 'boo!'
40
40
  @resource 'very.deep', 'banana!'
41
41
  expect(@resource 'very.deep').toEqual 'banana!'
42
-
42
+
43
43
  @resource 'another.deep.value', 'banana strikes back'
44
44
  expect(@resource 'another.deep').toEqual value: 'banana strikes back'
45
-
45
+
46
46
  it "handles @at", ->
47
47
  class Fluffy extends Joosy.Resource.Generic
48
48
  @entity 'fluffy'
49
49
 
50
50
  clone = Fluffy.at('rumbas!')
51
-
51
+
52
52
  expect(clone.__source).toEqual 'rumbas!'
53
53
  expect(Joosy.Module.hasAncestor clone, Fluffy).toBeTruthy()
54
54
 
55
55
  clone = Fluffy.at Test.build(1)
56
-
56
+
57
57
  expect(clone.__source).toEqual '/tests/1/fluffies'
58
58
  expect(Joosy.Module.hasAncestor clone, Fluffy).toBeTruthy()
59
59
  # clone won't be instanceof Fluffy in IE
60
60
  #expect(clone.build({}) instanceof Fluffy).toBeTruthy()
61
-
61
+
62
62
  it "triggers 'changed' right", ->
63
63
  callback = sinon.spy()
64
64
  @resource.bind 'changed', callback
65
65
  @resource 'foo', 'baz'
66
66
  @resource 'foo', 'baz2'
67
-
67
+
68
68
  expect(callback.callCount).toEqual(2)
69
-
69
+
70
70
  it "handles the before filter", ->
71
71
  class R extends Joosy.Resource.Generic
72
72
  @beforeLoad (data) ->
73
73
  data ||= {}
74
74
  data.tested = true
75
75
  data
76
-
76
+
77
77
  resource = R.build()
78
-
78
+
79
79
  expect(resource 'tested').toBeTruthy()
80
-
80
+
81
81
  it "should map inlines", ->
82
- class RumbaMumba extends Joosy.Resource.Generic
82
+ class RumbaMumba extends Joosy.Resource.Generic
83
83
  @entity 'rumba_mumba'
84
-
84
+
85
85
  class R extends Joosy.Resource.Generic
86
86
  @map 'rumbaMumbas', RumbaMumba
87
87
 
@@ -103,7 +103,7 @@ describe "Joosy.Resource.Generic", ->
103
103
 
104
104
  it "should use magic collections", ->
105
105
  class window.RumbaMumbasCollection extends Joosy.Resource.Collection
106
-
106
+
107
107
  class RumbaMumba extends Joosy.Resource.Generic
108
108
  @entity 'rumba_mumba'
109
109
  class R extends Joosy.Resource.Generic
@@ -116,9 +116,9 @@ describe "Joosy.Resource.Generic", ->
116
116
  ]
117
117
  expect(resource('rumbaMumbas') instanceof RumbaMumbasCollection).toBeTruthy()
118
118
  expect(resource('rumbaMumbas').at(0)('foo')).toEqual 'bar'
119
-
119
+
120
120
  window.RumbaMumbasCollection = undefined
121
-
121
+
122
122
  it "should use manually set collections", ->
123
123
  class OloCollection extends Joosy.Resource.Collection
124
124
 
@@ -152,4 +152,4 @@ describe "Joosy.Resource.Generic", ->
152
152
 
153
153
  inline('foo', 'bar')
154
154
 
155
- expect(root('test_inlines').at(0)('foo')).toEqual 'bar'
155
+ expect(root('test_inlines').at(0)('foo')).toEqual 'bar'
@@ -12,7 +12,6 @@ describe "Joosy.Resource.RESTCollection", ->
12
12
 
13
13
  it "loads", ->
14
14
  @collection.load [{"id": 1, "name": "test1"}, {"id": 2, "name": "test2"}]
15
- console.log @collection.data[0].constructor
16
15
  expect(@collection.data.length).toEqual 2
17
16
  expect(@collection.data[0] instanceof Test).toBeTruthy()
18
17
  expect(@collection.data[0].data.name).toEqual 'test1'
@@ -23,17 +23,21 @@ describe "Joosy.Resource.REST", ->
23
23
 
24
24
  it "builds member path", ->
25
25
  parent = FluffyParent.build 1
26
+ grandParent = FluffyParent.build 666
26
27
 
27
28
  expect(Fluffy.memberPath 1).toEqual '/fluffies/1'
28
29
  expect(Fluffy.memberPath 1, parent: parent).toEqual '/fluffy_parents/1/fluffies/1'
30
+ expect(Fluffy.memberPath 1, parent: [grandParent, parent]).toEqual '/fluffy_parents/666/fluffy_parents/1/fluffies/1'
29
31
  expect(Fluffy.memberPath 1, parent: parent, from: 'test').toEqual '/fluffy_parents/1/fluffies/1/test'
30
32
  expect(Fluffy.memberPath 1, parent: parent, from: 'test', params: {foo: 'bar'}).toEqual '/fluffy_parents/1/fluffies/1/test'
31
33
 
32
34
  it "builds collection path", ->
33
35
  parent = FluffyParent.build 1
36
+ grandParent = FluffyParent.build 666
34
37
 
35
38
  expect(Fluffy.collectionPath()).toEqual '/fluffies'
36
39
  expect(Fluffy.collectionPath parent: parent).toEqual '/fluffy_parents/1/fluffies'
40
+ expect(Fluffy.collectionPath parent: [grandParent, parent]).toEqual '/fluffy_parents/666/fluffy_parents/1/fluffies'
37
41
  expect(Fluffy.collectionPath parent: parent, from: 'test').toEqual '/fluffy_parents/1/fluffies/test'
38
42
  expect(Fluffy.collectionPath parent: parent, from: 'test', params: {foo: 'bar'}).toEqual '/fluffy_parents/1/fluffies/test'
39
43
 
@@ -41,10 +45,11 @@ describe "Joosy.Resource.REST", ->
41
45
  describe "finds resource", ->
42
46
  rawData = '{"fluffy": {"id": 1, "name": "test1"}}'
43
47
 
44
- callback = sinon.spy (target) ->
48
+ callback = sinon.spy (target, data) ->
45
49
  expect(target instanceof Fluffy).toEqual true
46
50
  expect(target.id()).toEqual 1
47
51
  expect(target 'name').toEqual 'test1'
52
+ expect(data).toEqual $.parseJSON(rawData)
48
53
 
49
54
  it "without params", ->
50
55
  resource = Fluffy.find 1, callback
@@ -75,12 +80,13 @@ describe "Joosy.Resource.REST", ->
75
80
  checkAndRespond @server.requests[0], 'GET', /^\/fluffies\/1\?_=\d+/, rawData
76
81
 
77
82
  describe "finds collection", ->
78
- rawData = '{"fluffies": [{"id": 1, "name": "test1"}, {"id": 2, "name": "test2"}]}'
83
+ rawData = '{"page": 42, "fluffies": [{"id": 1, "name": "test1"}, {"id": 2, "name": "test2"}]}'
79
84
 
80
- callback = sinon.spy (target) ->
85
+ callback = sinon.spy (target, data) ->
81
86
  expect(target instanceof Joosy.Resource.RESTCollection).toEqual true
82
87
  expect(target.size()).toEqual 2
83
88
  expect(target.at(0) instanceof Fluffy).toEqual true
89
+ expect(data).toEqual $.parseJSON(rawData)
84
90
 
85
91
  it "without params", ->
86
92
  resource = Fluffy.find 'all', callback
@@ -3,16 +3,16 @@ describe "CachingPreloader", ->
3
3
  it "should load JS", ->
4
4
  window.variable_assigned_on_load = undefined
5
5
  localStorage.clear()
6
-
6
+
7
7
  callback = sinon.spy()
8
8
  server = sinon.fakeServer.create()
9
-
9
+
10
10
  load = ->
11
- CachingPreloader.load [['/spec/javascripts/support/assets/test.js']],
11
+ CachingPreloader.load [['/spec/javascripts/support/assets/test.js']],
12
12
  complete: callback
13
13
 
14
14
  load()
15
-
15
+
16
16
  expect(server.requests.length).toEqual 1
17
17
  target = server.requests[0]
18
18
  expect(target.method).toEqual 'GET'
@@ -23,9 +23,9 @@ describe "CachingPreloader", ->
23
23
  expect(callback.callCount).toEqual 1
24
24
  expect(window.variable_assigned_on_load).toEqual 'yapyap'
25
25
  window.variable_assigned_on_load = undefined
26
-
26
+
27
27
  load()
28
-
28
+
29
29
  expect(server.requests.length).toEqual 1
30
30
  expect(callback.callCount).toEqual 2
31
31
  expect(window.variable_assigned_on_load).toEqual 'yapyap'
@@ -33,4 +33,4 @@ describe "CachingPreloader", ->
33
33
  server.restore()
34
34
 
35
35
  window.variable_assigned_on_load = undefined
36
- localStorage.clear()
36
+ localStorage.clear()
@@ -3,14 +3,14 @@ describe "InlinePreloader", ->
3
3
  it "should load JS", ->
4
4
  window.variable_assigned_on_load = undefined
5
5
  callback = sinon.spy()
6
-
6
+
7
7
  runs ->
8
- InlinePreloader.load [['/spec/javascripts/support/assets/test.js']],
8
+ InlinePreloader.load [['/spec/javascripts/support/assets/test.js']],
9
9
  complete: callback
10
-
10
+
11
11
  waits 100
12
-
12
+
13
13
  runs ->
14
14
  expect(callback.callCount).toEqual 1
15
15
  expect(window.variable_assigned_on_load).toEqual 'yapyap'
16
- window.variable_assigned_on_load = undefined
16
+ window.variable_assigned_on_load = undefined
@@ -4,13 +4,13 @@
4
4
  * @author Christian Johansen (christian@cjohansen.no)
5
5
  *
6
6
  * (The BSD License)
7
- *
7
+ *
8
8
  * Copyright (c) 2010-2011, Christian Johansen, christian@cjohansen.no
9
9
  * All rights reserved.
10
- *
10
+ *
11
11
  * Redistribution and use in source and binary forms, with or without modification,
12
12
  * are permitted provided that the following conditions are met:
13
- *
13
+ *
14
14
  * * Redistributions of source code must retain the above copyright notice,
15
15
  * this list of conditions and the following disclaimer.
16
16
  * * Redistributions in binary form must reproduce the above copyright notice,
@@ -19,7 +19,7 @@
19
19
  * * Neither the name of Christian Johansen nor the names of his contributors
20
20
  * may be used to endorse or promote products derived from this software
21
21
  * without specific prior written permission.
22
- *
22
+ *
23
23
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
24
24
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25
25
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -1197,7 +1197,7 @@ var sinon = (function (buster) {
1197
1197
  } else {
1198
1198
  this.exception = error;
1199
1199
  }
1200
-
1200
+
1201
1201
  return this;
1202
1202
  }
1203
1203
 
@@ -1238,7 +1238,7 @@ var sinon = (function (buster) {
1238
1238
  if (typeof pos != "number") {
1239
1239
  throw new TypeError("argument index is not number");
1240
1240
  }
1241
-
1241
+
1242
1242
  this.returnArgAt = pos;
1243
1243
 
1244
1244
  return this;
@@ -4,13 +4,13 @@
4
4
  * @author Christian Johansen (christian@cjohansen.no)
5
5
  *
6
6
  * (The BSD License)
7
- *
7
+ *
8
8
  * Copyright (c) 2010-2011, Christian Johansen, christian@cjohansen.no
9
9
  * All rights reserved.
10
- *
10
+ *
11
11
  * Redistribution and use in source and binary forms, with or without modification,
12
12
  * are permitted provided that the following conditions are met:
13
- *
13
+ *
14
14
  * * Redistributions of source code must retain the above copyright notice,
15
15
  * this list of conditions and the following disclaimer.
16
16
  * * Redistributions in binary form must reproduce the above copyright notice,
@@ -19,7 +19,7 @@
19
19
  * * Neither the name of Christian Johansen nor the names of his contributors
20
20
  * may be used to endorse or promote products derived from this software
21
21
  * without specific prior written permission.
22
- *
22
+ *
23
23
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
24
24
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25
25
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -79,4 +79,4 @@ function XMLHttpRequest() {}
79
79
 
80
80
  // Reassign the original function. Now its writable attribute
81
81
  // should be true. Hackish, I know, but it works.
82
- XMLHttpRequest = sinon.xhr.XMLHttpRequest || undefined;
82
+ XMLHttpRequest = sinon.xhr.XMLHttpRequest || undefined;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joosy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.RC4
4
+ version: 1.0.0.RC5
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-06-19 00:00:00.000000000 Z
15
+ date: 2012-12-14 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
19
- requirement: &70267714575100 !ruby/object:Gem::Requirement
19
+ requirement: &70277116410620 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: 3.1.0
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70267714575100
27
+ version_requirements: *70277116410620
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: coffee-rails
30
- requirement: &70267714574680 !ruby/object:Gem::Requirement
30
+ requirement: &70277116408700 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *70267714574680
38
+ version_requirements: *70277116408700
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: jquery-rails
41
- requirement: &70267714574220 !ruby/object:Gem::Requirement
41
+ requirement: &70277116407280 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: '0'
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *70267714574220
49
+ version_requirements: *70277116407280
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: haml_coffee_assets
52
- requirement: &70267714609360 !ruby/object:Gem::Requirement
52
+ requirement: &70277116405680 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ! '>='
@@ -57,10 +57,10 @@ dependencies:
57
57
  version: '0'
58
58
  type: :runtime
59
59
  prerelease: false
60
- version_requirements: *70267714609360
60
+ version_requirements: *70277116405680
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: i18n-js
63
- requirement: &70267714608940 !ruby/object:Gem::Requirement
63
+ requirement: &70277116402480 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ! '>='
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: '0'
69
69
  type: :runtime
70
70
  prerelease: false
71
- version_requirements: *70267714608940
71
+ version_requirements: *70277116402480
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: guard
74
- requirement: &70267714608520 !ruby/object:Gem::Requirement
74
+ requirement: &70277116399260 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ! '>='
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: '0'
80
80
  type: :development
81
81
  prerelease: false
82
- version_requirements: *70267714608520
82
+ version_requirements: *70277116399260
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-coffeescript
85
- requirement: &70267714608100 !ruby/object:Gem::Requirement
85
+ requirement: &70277116397960 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ! '>='
@@ -90,10 +90,10 @@ dependencies:
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
- version_requirements: *70267714608100
93
+ version_requirements: *70277116397960
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: guard-sprockets
96
- requirement: &70267714607680 !ruby/object:Gem::Requirement
96
+ requirement: &70277116396780 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: *70267714607680
104
+ version_requirements: *70277116396780
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: jasmine
107
- requirement: &70267714607260 !ruby/object:Gem::Requirement
107
+ requirement: &70277116396020 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ! '>='
@@ -112,7 +112,7 @@ dependencies:
112
112
  version: '0'
113
113
  type: :development
114
114
  prerelease: false
115
- version_requirements: *70267714607260
115
+ version_requirements: *70277116396020
116
116
  description: A gem wrapper to include Joosy via the asset pipeline.
117
117
  email: boris@roundlake.ru
118
118
  executables: []
@@ -184,6 +184,7 @@ files:
184
184
  - lib/rails/generators/joosy/templates/app_railties.js.coffee.erb
185
185
  - lib/rails/generators/joosy/templates/preload.html.erb
186
186
  - lib/rails/generators/joosy/templates/preload.html.haml
187
+ - lib/rails/generators/joosy/templates/preload.html.slim
187
188
  - lib/rails/generators/joosy/widget_generator.rb
188
189
  - lib/rails/resources_with_joosy.rb
189
190
  - spec/javascripts/helpers/spec_helper.js.coffee
@@ -191,6 +192,7 @@ files:
191
192
  - spec/javascripts/joosy/core/form_spec.js.coffee
192
193
  - spec/javascripts/joosy/core/helpers/forms_spec.js.coffee
193
194
  - spec/javascripts/joosy/core/helpers/view_spec.js.coffee
195
+ - spec/javascripts/joosy/core/helpers/widgets_spec.js.coffee
194
196
  - spec/javascripts/joosy/core/joosy_spec.js.coffee
195
197
  - spec/javascripts/joosy/core/layout_spec.js.coffee
196
198
  - spec/javascripts/joosy/core/modules/container_spec.js.coffee