cells 3.11.3 → 4.0.0.beta1

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 (204) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +15 -13
  4. data/Appraisals +23 -0
  5. data/CHANGES.md +20 -3
  6. data/Gemfile +5 -7
  7. data/README.md +317 -236
  8. data/Rakefile +1 -1
  9. data/TODO.md +3 -0
  10. data/cells.gemspec +19 -28
  11. data/gemfiles/rails3.2.gemfile +14 -0
  12. data/gemfiles/rails4.0.gemfile +14 -0
  13. data/gemfiles/rails4.1.gemfile +15 -0
  14. data/gemfiles/rails4.2.gemfile +14 -0
  15. data/lib/cell.rb +28 -21
  16. data/lib/cell/caching.rb +10 -22
  17. data/lib/cell/caching/notification.rb +15 -0
  18. data/lib/cell/concept.rb +4 -69
  19. data/lib/cell/development.rb +11 -0
  20. data/lib/{cells → cell}/engines.rb +1 -1
  21. data/lib/cell/layout.rb +20 -0
  22. data/lib/cell/partial.rb +17 -0
  23. data/lib/cell/{base/prefixes.rb → prefixes.rb} +1 -1
  24. data/lib/cell/rails.rb +58 -50
  25. data/lib/cell/railtie.rb +60 -0
  26. data/lib/cell/{base/self_contained.rb → self_contained.rb} +1 -1
  27. data/lib/cell/templates.rb +60 -0
  28. data/lib/cell/test_case.rb +4 -162
  29. data/lib/cell/testing.rb +15 -0
  30. data/lib/cell/twin.rb +11 -29
  31. data/lib/cell/version.rb +10 -0
  32. data/lib/cell/view_model.rb +196 -88
  33. data/lib/cells.rb +1 -20
  34. data/lib/rails/generators/cell/cell_generator.rb +43 -0
  35. data/lib/rails/generators/cell/templates/cell.rb.erb +8 -0
  36. data/lib/{generators/templates/concept → rails/generators/cell/templates}/view.erb +0 -0
  37. data/lib/{generators/templates/concept → rails/generators/cell/templates}/view.haml +0 -0
  38. data/lib/rails/generators/cell/templates/view.slim +2 -0
  39. data/lib/rails/generators/concept/concept_generator.rb +38 -0
  40. data/lib/{generators/templates/concept/cell.rb → rails/generators/concept/templates/concept.rb.erb} +2 -2
  41. data/lib/{generators → rails/generators/concept}/templates/view.erb +0 -0
  42. data/lib/{generators → rails/generators/concept}/templates/view.haml +0 -0
  43. data/lib/rails/generators/concept/templates/view.slim +2 -0
  44. data/lib/rails/generators/test_unit/cell/cell_generator.rb +21 -0
  45. data/lib/{generators/templates/cell_test.rb → rails/generators/test_unit/cell/templates/unit_test.rb.erb} +3 -3
  46. data/lib/rails/generators/test_unit/concept/concept_generator.rb +21 -0
  47. data/lib/rails/generators/test_unit/concept/templates/unit_test.rb.erb +11 -0
  48. data/lib/{cells → tasks}/cells.rake +0 -0
  49. data/test/builder_test.rb +58 -0
  50. data/test/caching_test.rb +298 -0
  51. data/test/cell_benchmark.rb +32 -0
  52. data/test/cell_generator_test.rb +51 -82
  53. data/test/cell_test.rb +8 -23
  54. data/test/concept_generator_test.rb +22 -13
  55. data/test/concept_test.rb +41 -75
  56. data/test/dummy/app/views/musician/hamlet.html.erb +1 -0
  57. data/test/dummy/config/application.rb +21 -8
  58. data/test/{app/cells/bassist/play.html.erb → fixtures/bassist/play.erb} +0 -0
  59. data/test/fixtures/concepts/record/views/layout.erb +1 -0
  60. data/test/{app → fixtures}/concepts/record/views/show.erb +0 -0
  61. data/test/{app → fixtures}/concepts/record/views/song.erb +0 -0
  62. data/test/fixtures/inherit_views_test/popper/tap.erb +1 -0
  63. data/test/fixtures/inherit_views_test/tapper/play.erb +1 -0
  64. data/test/fixtures/inherit_views_test/tapper/tap.erb +1 -0
  65. data/test/fixtures/partial_test/with_partial/show.erb +1 -0
  66. data/test/fixtures/partials/_show.html.erb +1 -0
  67. data/test/fixtures/partials/_show.xml.erb +1 -0
  68. data/test/fixtures/song/ivar.erb +1 -0
  69. data/test/fixtures/song/show.erb +1 -0
  70. data/test/fixtures/song/with_erb.erb +4 -0
  71. data/test/fixtures/song/with_html.erb +1 -0
  72. data/test/fixtures/song/with_locals.erb +2 -0
  73. data/test/fixtures/song_with_layout/happy.erb +1 -0
  74. data/test/fixtures/song_with_layout/merry.erb +1 -0
  75. data/test/fixtures/song_with_layout/show.erb +1 -0
  76. data/test/fixtures/song_with_layout/show_with_layout.erb +1 -0
  77. data/test/fixtures/templates_caching_test/song/show.erb +1 -0
  78. data/test/fixtures/url_helper_test/song/edit.erb +8 -0
  79. data/test/fixtures/url_helper_test/song/with_block.erb +2 -0
  80. data/test/fixtures/url_helper_test/song/with_capture.erb +4 -0
  81. data/test/fixtures/url_helper_test/song/with_content_tag.erb +6 -0
  82. data/test/fixtures/url_helper_test/song/with_form_for_block.erb +3 -0
  83. data/test/fixtures/url_helper_test/song/with_link_to.erb +3 -0
  84. data/test/layout_test.rb +57 -0
  85. data/test/partial_test.rb +27 -0
  86. data/test/prefixes_test.rb +36 -10
  87. data/test/public_test.rb +42 -0
  88. data/test/rails_extensions_test.rb +51 -0
  89. data/test/render_test.rb +103 -0
  90. data/test/templates_test.rb +45 -0
  91. data/test/test_case_test.rb +21 -122
  92. data/test/test_helper.rb +37 -33
  93. data/test/twin_test.rb +3 -7
  94. data/test/url_helper_test.rb +89 -0
  95. metadata +92 -357
  96. data/gemfiles/Gemfile.rails3-0 +0 -7
  97. data/gemfiles/Gemfile.rails3-1 +0 -7
  98. data/gemfiles/Gemfile.rails3-2 +0 -7
  99. data/gemfiles/Gemfile.rails4-0 +0 -12
  100. data/gemfiles/Gemfile.rails4-1 +0 -12
  101. data/lib/cell/base.rb +0 -82
  102. data/lib/cell/base/view.rb +0 -15
  103. data/lib/cell/builder.rb +0 -71
  104. data/lib/cell/deprecations.rb +0 -41
  105. data/lib/cell/dsl.rb +0 -7
  106. data/lib/cell/rack.rb +0 -32
  107. data/lib/cell/rails/helper_api.rb +0 -37
  108. data/lib/cell/rails/view_model.rb +0 -159
  109. data/lib/cell/rails3_0_strategy.rb +0 -82
  110. data/lib/cell/rails3_1_strategy.rb +0 -40
  111. data/lib/cell/rails4_0_strategy.rb +0 -39
  112. data/lib/cell/rails4_1_strategy.rb +0 -40
  113. data/lib/cell/rendering.rb +0 -109
  114. data/lib/cells/rails.rb +0 -86
  115. data/lib/cells/railtie.rb +0 -38
  116. data/lib/cells/version.rb +0 -3
  117. data/lib/generators/USAGE +0 -30
  118. data/lib/generators/cells/base.rb +0 -22
  119. data/lib/generators/cells/cell_generator.rb +0 -15
  120. data/lib/generators/cells/view_generator.rb +0 -18
  121. data/lib/generators/erb/cell_generator.rb +0 -15
  122. data/lib/generators/erb/concept_generator.rb +0 -17
  123. data/lib/generators/haml/cell_generator.rb +0 -17
  124. data/lib/generators/haml/concept_generator.rb +0 -17
  125. data/lib/generators/rails/cell_generator.rb +0 -16
  126. data/lib/generators/rails/concept_generator.rb +0 -16
  127. data/lib/generators/slim/cell_generator.rb +0 -17
  128. data/lib/generators/templates/cell.rb +0 -9
  129. data/lib/generators/templates/view.slim +0 -4
  130. data/lib/generators/test_unit/cell_generator.rb +0 -14
  131. data/lib/generators/trailblazer/base.rb +0 -21
  132. data/lib/generators/trailblazer/view_generator.rb +0 -18
  133. data/test/app/cells/album/views/cover.haml +0 -1
  134. data/test/app/cells/bad_guitarist/_dii.html.erb +0 -1
  135. data/test/app/cells/bad_guitarist_cell.rb +0 -2
  136. data/test/app/cells/bassist/_dii.html.erb +0 -1
  137. data/test/app/cells/bassist/ahem.html.erb +0 -1
  138. data/test/app/cells/bassist/compose.html.erb +0 -1
  139. data/test/app/cells/bassist/contact_form.html.erb +0 -1
  140. data/test/app/cells/bassist/form_for.erb +0 -3
  141. data/test/app/cells/bassist/form_for_in_haml.haml +0 -2
  142. data/test/app/cells/bassist/jam.html.erb +0 -3
  143. data/test/app/cells/bassist/play.js.erb +0 -1
  144. data/test/app/cells/bassist/pose.html.erb +0 -1
  145. data/test/app/cells/bassist/promote.html.erb +0 -1
  146. data/test/app/cells/bassist/provoke.html.erb +0 -1
  147. data/test/app/cells/bassist/shout.html.erb +0 -1
  148. data/test/app/cells/bassist/sing.html.haml +0 -1
  149. data/test/app/cells/bassist/slap.html.erb +0 -1
  150. data/test/app/cells/bassist/yell.en.html.erb +0 -1
  151. data/test/app/cells/bassist_cell.rb +0 -25
  152. data/test/app/cells/club_security.rb +0 -2
  153. data/test/app/cells/club_security/guard/help.html.erb +0 -1
  154. data/test/app/cells/club_security/guard_cell.rb +0 -6
  155. data/test/app/cells/club_security/medic/help.html.erb +0 -1
  156. data/test/app/cells/club_security/medic_cell.rb +0 -8
  157. data/test/app/cells/layouts/b.erb +0 -1
  158. data/test/app/cells/layouts/metal.html.erb +0 -1
  159. data/test/app/cells/rails_helper_api_test/bassist/edit.html.erb +0 -5
  160. data/test/app/cells/shouter/sing.html.erb +0 -1
  161. data/test/app/cells/song/dashboard.haml +0 -7
  162. data/test/app/cells/song/details.html.haml +0 -1
  163. data/test/app/cells/song/info.html.haml +0 -1
  164. data/test/app/cells/song/lyrics.html.haml +0 -6
  165. data/test/app/cells/song/plays.haml +0 -1
  166. data/test/app/cells/song/scale.haml +0 -1
  167. data/test/app/cells/song/show.html.haml +0 -3
  168. data/test/app/cells/song/title.html.haml +0 -1
  169. data/test/app/cells/trumpeter/promote.html.erb +0 -1
  170. data/test/app/cells/trumpeter_cell.rb +0 -8
  171. data/test/app/cells/view_model_test/comments/show.haml +0 -7
  172. data/test/app/concepts/record/views/layout.haml +0 -2
  173. data/test/app/views/shared/_dong.html.erb +0 -1
  174. data/test/cell_module_test.rb +0 -170
  175. data/test/cells_module_test.rb +0 -27
  176. data/test/deprecations_test.rb +0 -101
  177. data/test/dummy/app/helpers/application_helper.rb +0 -2
  178. data/test/dummy/app/views/musician/hamlet.html.haml +0 -1
  179. data/test/dummy/config/environments/development.rb +0 -16
  180. data/test/dummy/config/environments/production.rb +0 -46
  181. data/test/dummy/config/environments/test.rb +0 -33
  182. data/test/dummy/db/test.sqlite3 +0 -0
  183. data/test/dummy/label/app/cells/label/show.erb +0 -1
  184. data/test/dummy/label/app/cells/label_cell.rb +0 -5
  185. data/test/dummy/label/label.gemspec +0 -20
  186. data/test/dummy/label/lib/label.rb +0 -4
  187. data/test/dummy/label/lib/label/version.rb +0 -3
  188. data/test/dummy/public/404.html +0 -26
  189. data/test/dummy/public/422.html +0 -26
  190. data/test/dummy/public/500.html +0 -26
  191. data/test/dummy/public/favicon.ico +0 -0
  192. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  193. data/test/helper_test.rb +0 -81
  194. data/test/rack_test.rb +0 -32
  195. data/test/rails/asset_pipeline_test.rb +0 -20
  196. data/test/rails/caching_test.rb +0 -456
  197. data/test/rails/cells_test.rb +0 -119
  198. data/test/rails/forms_test.rb +0 -75
  199. data/test/rails/integration_test.rb +0 -299
  200. data/test/rails/render_test.rb +0 -189
  201. data/test/rails/view_model_test.rb +0 -226
  202. data/test/rails/view_test.rb +0 -49
  203. data/test/rails_helper_api_test.rb +0 -58
  204. data/test/self_contained_test.rb +0 -31
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+
4
+ class TemplatesTest < MiniTest::Spec
5
+ Templates = Cell::Templates
6
+
7
+ let (:base) { ['test/fixtures'] }
8
+
9
+ # existing.
10
+ it { Templates.new[base, ['bassist'], 'play', 'erb'].file.must_equal 'test/fixtures/bassist/play.erb' }
11
+
12
+ # not existing.
13
+ it { Templates.new[base, ['bassist'], 'not-here', 'erb'].must_equal nil }
14
+
15
+
16
+ # different caches for different classes
17
+
18
+ # same cache for subclasses
19
+
20
+ end
21
+
22
+
23
+ class TemplatesCachingTest < MiniTest::Spec
24
+ class SongCell < Cell::ViewModel
25
+ self.view_paths = ['test/fixtures']
26
+
27
+ def show
28
+ render
29
+ end
30
+ end
31
+
32
+ # templates are cached once and forever.
33
+ it do
34
+ cell = cell("templates_caching_test/song")
35
+
36
+ cell.call(:show).must_equal 'The Great Mind Eraser'
37
+
38
+ SongCell.templates.instance_eval do
39
+ def create; raise; end
40
+ end
41
+
42
+ # cached, NO new tilt template.
43
+ cell.call(:show).must_equal 'The Great Mind Eraser'
44
+ end
45
+ end
@@ -1,143 +1,42 @@
1
1
  require 'test_helper'
2
2
 
3
- class TestCaseTest < Cell::TestCase
4
- include ActiveSupport::Testing::Deprecation
5
-
6
- class << self # FIXME: why use Minitest::Spec syntax here. how does C::TC work with that?
7
- alias_method :before, :setup
8
- alias_method :it, :test
9
-
10
- def describe(msg, &block)
11
- instance_exec &block
12
- end
13
- end
14
-
15
- before do
16
- @test = Cell::TestCase.new(:cell_test)
17
-
18
- BassistCell.class_eval do
19
- def play; render; end
20
- end
3
+ class TestCaseTest < MiniTest::Spec
4
+ class SongCell < Cell::ViewModel
21
5
  end
22
6
 
23
- describe "#render_cell" do
24
- it "invokes the state" do
25
- assert_equal "Doo", render_cell(:bassist, :play)
26
- end
27
-
28
- it "accept state args" do
29
- assert_equal "*shouts* Listen!\n", render_cell(:bassist, :shout, :words => "Listen!")
7
+ class Song
8
+ class Cell < Cell::Concept
30
9
  end
31
10
  end
32
11
 
33
- it "respond to #assert_selector with 3 args" do
34
- assert_selector "p", "Doo", "<p>Doo</p>y"
35
- end
12
+ let (:song) { Object.new }
36
13
 
37
14
  describe "#cell" do
38
- it "create a cell" do
39
- assert_kind_of BassistCell, cell(:bassist)
40
- end
41
-
42
- it "accept a block" do
43
- assert_respond_to cell(:bassist){ def whatever; end }, :whatever
44
- end
45
- end
15
+ subject { cell("test_case_test/song", song) }
46
16
 
47
- describe "#subject_cell" do
48
- it "return the last rendered cell" do
49
- render_cell(:bassist, :play)
50
- assert_kind_of BassistCell, subject_cell
51
- end
17
+ it { subject.must_be_instance_of SongCell }
18
+ it { subject.model.must_equal song }
52
19
  end
53
20
 
54
21
 
55
- describe "#view_assigns" do
56
- it "be emtpy when nothing was set" do
57
- render_cell(:bassist, :play)
58
- if Cell.rails_version.~("3.0")
59
- assert_equal([:lookup_context], view_assigns.keys)
60
- else
61
- assert_equal({}, view_assigns)
62
- end
63
- end
22
+ describe "#concept" do
23
+ subject { concept("test_case_test/song/cell", song) }
64
24
 
65
- it "return the instance variables from the last #render_cell" do
66
- BassistCell.class_eval do
67
- def sleep
68
- @duration = "8h"
69
- end
70
- end
71
- render_cell(:bassist, :sleep)
72
- if Cell.rails_version.~("3.0")
73
- assert_equal("8h", view_assigns[:duration])
74
- else
75
- assert_equal({:duration => "8h"}, view_assigns)
76
- end
77
- end
25
+ it { subject.must_be_instance_of Song::Cell }
26
+ it { subject.model.must_equal song }
78
27
  end
79
28
 
80
- describe "in declarative tests" do
81
- it "respond to TestCase.tests" do
82
- self.class.tests BassistCell
83
- assert_equal BassistCell, self.class.controller_class
84
- end
85
-
86
- it "infer the cell name" do
87
- class SingerCell < Cell::Rails
88
- end
89
-
90
- class SingerCellTest < Cell::TestCase
91
- end
92
29
 
93
- assert_equal SingerCell, SingerCellTest.new(:cell_test).class.controller_class
30
+ # capybara support
31
+ class CapybaraCell < Cell::ViewModel
32
+ def show
33
+ "<b>Grunt</b>"
94
34
  end
35
+ end
95
36
 
96
- describe "with #invoke" do
97
- before do
98
- self.class.tests BassistCell
99
- end
100
-
101
- it "provide #invoke" do
102
- assert_equal "Doo", invoke(:play)
103
- end
104
-
105
- it "provide #last_invoke" do
106
- assert_equal nil, last_invoke
107
- assert_equal "Doo", invoke(:play)
108
- assert_equal "Doo", last_invoke
109
- end
110
-
111
- it "provide #invoke accepting options" do
112
- #assert_equal "Doo", invoke(:play)
113
- end
114
-
115
- it "provide #invoke accepting args" do
116
- assert_equal "*shouts* Listen!\n", invoke(:shout, :words => "Listen!")
117
- end
118
-
119
- it "provide assert_select" do
120
- invoke :promote
121
- assert_select "a", "vd.com"
122
- end
123
- end
124
-
125
- describe "#before_test_states_in" do
126
- it "add the :in_view state" do
127
- c = cell(:bassist)
128
- assert ! c.respond_to?(:in_view)
129
-
130
- setup_test_states_in(c)
131
- assert_equal "Cells rock.", c.render_state(:in_view, lambda{"Cells rock."})
132
- end
133
- end
37
+ describe "capybara support" do
38
+ subject { cell("test_case_test/capybara", nil) }
134
39
 
135
- describe "#in_view" do
136
- it "execute the block in a real view" do
137
- content = "Cells rule."
138
- @test.setup
139
- assert_equal("<h1>Cells rule.</h1>", @test.in_view(:bassist) do content_tag("h1", content) end)
140
- end
141
- end
40
+ it { subject.call } # add capybara tests here, @seuros.
142
41
  end
143
- end
42
+ end
@@ -1,49 +1,53 @@
1
- # encoding: utf-8
2
- require 'minitest/autorun'
1
+ begin
2
+ require 'byebug'
3
+ rescue LoadError
4
+ end
3
5
 
4
6
  ENV['RAILS_ENV'] = 'test'
5
7
 
6
- require "dummy/config/environment"
7
- require "rails/test_help" # adds stuff like @routes, etc.
8
+ require_relative 'dummy/config/environment'
9
+ require 'tilt/erubis' if Gem::Version.new(ActiveSupport::VERSION::STRING) >= Gem::Version.new('4.2.0')
8
10
 
9
- gem_dir = File.join(File.dirname(__FILE__), '..')
10
- test_app_dir = File.join(gem_dir, 'test', 'app')
11
+ require 'minitest/autorun'
12
+ require 'test_xml/mini_test'
11
13
 
12
- require 'cells'
14
+ require 'minitest/reporters'
15
+ Minitest::Reporters.use! [Minitest::Reporters::ProgressReporter.new]
16
+ require "rails/test_help" # adds stuff like @routes, etc.
13
17
 
14
- Cell::Rails.append_view_path(File.join(test_app_dir, 'cells'))
18
+ require 'cells'
15
19
 
16
- require "cell/test_case"
17
- # Extend TestCase.
18
20
  MiniTest::Spec.class_eval do
19
- def assert_not(assertion)
20
- assert !assertion
21
- end
22
-
23
- def assert_is_a(klass, object)
24
- assert object.is_a?(klass)
25
- end
21
+ include Cell::TestHelper
26
22
  end
27
23
 
28
- # Enable dynamic states so we can do Cell.class_eval { def ... } at runtime.
29
- class Cell::Rails
30
- def action_method?(*); true; end
24
+ class BassistCell < Cell::ViewModel
31
25
  end
32
26
 
33
- require File.join(test_app_dir, 'cells', 'bassist_cell')
34
- require File.join(test_app_dir, 'cells', 'trumpeter_cell')
35
- require File.join(test_app_dir, 'cells', 'bad_guitarist_cell')
27
+ class MusicianController < ActionController::Base
28
+ def view_with_concept_with_show
29
+ render :inline => %{<%= concept("view_extensions_test/cell", "Up For Breakfast", volume: 1).show %>} # TODO: concept doesn't need .call
30
+ end
36
31
 
37
- require "haml"
32
+ def view_with_concept_without_call
33
+ render :inline => %{<%= concept("view_extensions_test/cell", "A Tale That Wasn't Right") %>} # this tests ViewModel#to_s.
34
+ end
38
35
 
39
- ActiveSupport::TestCase.class_eval do # this is only needed in integration tests (AC::TestCase).
40
- def fix_relative_url_root
41
- return unless Cell.rails_version.~("3.0")
36
+ def view_with_concept_with_call
37
+ render :inline => %{<%= concept("view_extensions_test/cell", "A Tale That Wasn't Right").call %>}
38
+ end
39
+
40
+ def view_with_cell_with_call
41
+ render :inline => %{<%= cell("view_extensions_test/song", "A Tale That Wasn't Right").call %>}
42
+ end
42
43
 
43
- @controller.config.instance_eval do
44
- def relative_url_root
45
- ""
46
- end
47
- end
44
+ def action_with_concept_with_call
45
+ render text: concept("view_extensions_test/cell", "A Tale That Wasn't Right").call
46
+ end
47
+
48
+ def action_with_cell_with_call
49
+ render text: cell("view_extensions_test/song", "A Tale That Wasn't Right").call
50
+ end
48
51
  end
49
- end
52
+
53
+ Rails.backtrace_cleaner.remove_silencers! # YES, stacktraces are awesome!
@@ -1,17 +1,15 @@
1
1
  require 'test_helper'
2
2
  require 'cell/twin'
3
3
 
4
- if Cell.rails_version >= 3.1
5
-
6
4
  class TwinTest < MiniTest::Spec
7
5
  class SongCell < Cell::ViewModel
8
- class Twin < Cell::Twin
6
+ class Twin < Disposable::Twin
9
7
  property :title
10
8
  option :online?
11
9
  end
12
10
 
13
- include Cell::Twin::Properties
14
- properties Twin
11
+ include Cell::Twin
12
+ twin Twin
15
13
 
16
14
  def show
17
15
  "#{title} is #{online?}"
@@ -26,5 +24,3 @@ class TwinTest < MiniTest::Spec
26
24
 
27
25
  it { SongCell.new(nil, model, :online? => true).call.must_equal "kenny is true" }
28
26
  end
29
-
30
- end
@@ -0,0 +1,89 @@
1
+ require 'test_helper'
2
+
3
+ class MusiciansController < ApplicationController
4
+ end
5
+
6
+ class UrlHelperTest < MiniTest::Spec
7
+ let (:controller) { MusiciansController.new.tap { |ctl| ctl.send("request=", ActionDispatch::Request.new({})) } }
8
+ let (:cellule) { SongCell.new(controller) }
9
+
10
+ class SongCell < Cell::ViewModel
11
+ self.view_paths = ['test/fixtures']
12
+
13
+ include ActionView::Helpers::FormTagHelper
14
+
15
+ def edit
16
+ render
17
+ end
18
+
19
+ def with_content_tag
20
+ render
21
+ end
22
+
23
+ def with_block
24
+ render
25
+ end
26
+
27
+ def with_capture
28
+ render
29
+ end
30
+
31
+ def with_form_tag
32
+ form_tag("/songs") + content_tag(:span) + "</form>"
33
+ end
34
+
35
+ include ActionView::Helpers::AssetTagHelper
36
+ def with_link_to
37
+ render
38
+ end
39
+
40
+ include ActionView::Helpers::FormHelper
41
+ def with_form_for_block
42
+ render
43
+ end
44
+
45
+ def erb_with_form_for_block
46
+ render template_engine: :erb
47
+ end
48
+
49
+ private
50
+ def cap
51
+ "yay, #{with_output_buffer { yield } }"
52
+ end
53
+ end
54
+
55
+
56
+ # URL helpers work in cell instance.
57
+ it { cellule.songs_path.must_equal "/songs" }
58
+ # it { cellule.url_for(Song.new).must_equal "/songs" }
59
+
60
+ include TestXml::Assertions # TODO: fix in test_xml.
61
+
62
+ # content_tag with HAML.
63
+ # it { cellule.with_content_tag.must_equal "<span>Title:\n<div>Still Knee Deep\n</div>\n</span>\n" }
64
+
65
+ # form_tag with block in block work.
66
+ # it { cellule.edit.must_equal_xml_structure "<form><div><input/></div><label/><input/><ul><li/></ul></form>" }
67
+
68
+ # form_tag, no block
69
+ # it { cellule.with_form_tag.must_equal_xml_structure "<form><div><input/></div><span/></form>" }
70
+
71
+ # # form_for with block
72
+ # it { cellule.with_form_for_block.must_equal_xml_structure "<form><div><input/></div><input/></form>" }
73
+ # # form_for with block in ERB.
74
+ # it { cellule.erb_with_form_for_block.must_equal_xml_structure "<form><div><input/></div><input/></form>" }
75
+
76
+ # when using yield, haml breaks it (but doesn't escape HTML)
77
+ # it { cellule.with_block.must_equal "Nice!\nyay, <b>yeah</b>\n" }
78
+
79
+ # capture
80
+ # it { cellule.with_capture.must_equal "Nice!\n<b>Great!</b>\n" }
81
+
82
+ # there's again escaping happening where it shouldn't be in link_to and rails <= 3.2.
83
+ # if Cell.rails_version >= Gem::Version.new('4.0')
84
+ # # link_to with block and img_tag
85
+ # it { cellule.with_link_to.must_equal "<a href=\"/songs\"><img alt=\"All\" src=\"/images/all.png\" />\n</a>\n" }
86
+ # end
87
+ end
88
+
89
+ # start with content_tag and block (or capture) and find out how sinatra handles that. goal is NOT to use those hacks in haml's action_view_extensions.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cells
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.11.3
4
+ version: 4.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-30 00:00:00.000000000 Z
11
+ date: 2015-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -16,171 +16,64 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
19
+ version: '3.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
27
- - !ruby/object:Gem::Dependency
28
- name: railties
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '3.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '3.0'
26
+ version: '3.2'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: uber
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: 0.0.8
33
+ version: 0.0.9
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
38
  - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: 0.0.8
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: haml
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: slim
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: tzinfo
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: minitest
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: 4.7.5
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: 4.7.5
40
+ version: 0.0.9
125
41
  - !ruby/object:Gem::Dependency
126
- name: activemodel
42
+ name: tilt
127
43
  requirement: !ruby/object:Gem::Requirement
128
44
  requirements:
129
45
  - - ">="
130
46
  - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: capybara
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
47
+ version: '1.4'
48
+ - - "<"
144
49
  - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
50
+ version: '3'
51
+ type: :runtime
147
52
  prerelease: false
148
53
  version_requirements: !ruby/object:Gem::Requirement
149
54
  requirements:
150
55
  - - ">="
151
56
  - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: sprockets
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
57
+ version: '1.4'
58
+ - - "<"
165
59
  - !ruby/object:Gem::Version
166
- version: '0'
60
+ version: '3'
167
61
  - !ruby/object:Gem::Dependency
168
62
  name: disposable
169
63
  requirement: !ruby/object:Gem::Requirement
170
64
  requirements:
171
65
  - - "~>"
172
66
  - !ruby/object:Gem::Version
173
- version: 0.0.6
174
- type: :development
67
+ version: 0.0.8
68
+ type: :runtime
175
69
  prerelease: false
176
70
  version_requirements: !ruby/object:Gem::Requirement
177
71
  requirements:
178
72
  - - "~>"
179
73
  - !ruby/object:Gem::Version
180
- version: 0.0.6
181
- description: Cells are view components for Rails. They are lightweight controllers,
182
- can be rendered in views and thus provide an elegant and fast way for encapsulation
183
- and component-orientation.
74
+ version: 0.0.8
75
+ description: Cells replace partials and helpers with OOP view models, giving you proper
76
+ encapsulation, inheritance, testability and a cleaner view architecture.
184
77
  email:
185
78
  - apotonick@gmail.com
186
79
  executables: []
@@ -189,170 +82,114 @@ extra_rdoc_files: []
189
82
  files:
190
83
  - ".gitignore"
191
84
  - ".travis.yml"
85
+ - Appraisals
192
86
  - CHANGES.md
193
87
  - Gemfile
194
88
  - README.md
195
89
  - Rakefile
196
90
  - TODO.md
197
91
  - cells.gemspec
198
- - gemfiles/Gemfile.rails3-0
199
- - gemfiles/Gemfile.rails3-1
200
- - gemfiles/Gemfile.rails3-2
201
- - gemfiles/Gemfile.rails4-0
202
- - gemfiles/Gemfile.rails4-1
92
+ - gemfiles/rails3.2.gemfile
93
+ - gemfiles/rails4.0.gemfile
94
+ - gemfiles/rails4.1.gemfile
95
+ - gemfiles/rails4.2.gemfile
203
96
  - lib/cell.rb
204
- - lib/cell/base.rb
205
- - lib/cell/base/prefixes.rb
206
- - lib/cell/base/self_contained.rb
207
- - lib/cell/base/view.rb
208
- - lib/cell/builder.rb
209
97
  - lib/cell/caching.rb
98
+ - lib/cell/caching/notification.rb
210
99
  - lib/cell/concept.rb
211
- - lib/cell/deprecations.rb
212
- - lib/cell/dsl.rb
213
- - lib/cell/rack.rb
100
+ - lib/cell/development.rb
101
+ - lib/cell/engines.rb
102
+ - lib/cell/layout.rb
103
+ - lib/cell/partial.rb
104
+ - lib/cell/prefixes.rb
214
105
  - lib/cell/rails.rb
215
- - lib/cell/rails/helper_api.rb
216
- - lib/cell/rails/view_model.rb
217
- - lib/cell/rails3_0_strategy.rb
218
- - lib/cell/rails3_1_strategy.rb
219
- - lib/cell/rails4_0_strategy.rb
220
- - lib/cell/rails4_1_strategy.rb
221
- - lib/cell/rendering.rb
106
+ - lib/cell/railtie.rb
107
+ - lib/cell/self_contained.rb
108
+ - lib/cell/templates.rb
222
109
  - lib/cell/test_case.rb
110
+ - lib/cell/testing.rb
223
111
  - lib/cell/twin.rb
112
+ - lib/cell/version.rb
224
113
  - lib/cell/view_model.rb
225
114
  - lib/cells.rb
226
- - lib/cells/cells.rake
227
- - lib/cells/engines.rb
228
- - lib/cells/rails.rb
229
- - lib/cells/railtie.rb
230
- - lib/cells/version.rb
231
- - lib/generators/USAGE
232
- - lib/generators/cells/base.rb
233
- - lib/generators/cells/cell_generator.rb
234
- - lib/generators/cells/view_generator.rb
235
- - lib/generators/erb/cell_generator.rb
236
- - lib/generators/erb/concept_generator.rb
237
- - lib/generators/haml/cell_generator.rb
238
- - lib/generators/haml/concept_generator.rb
239
- - lib/generators/rails/cell_generator.rb
240
- - lib/generators/rails/concept_generator.rb
241
- - lib/generators/slim/cell_generator.rb
242
- - lib/generators/templates/cell.rb
243
- - lib/generators/templates/cell_test.rb
244
- - lib/generators/templates/concept/cell.rb
245
- - lib/generators/templates/concept/view.erb
246
- - lib/generators/templates/concept/view.haml
247
- - lib/generators/templates/view.erb
248
- - lib/generators/templates/view.haml
249
- - lib/generators/templates/view.slim
250
- - lib/generators/test_unit/cell_generator.rb
251
- - lib/generators/trailblazer/base.rb
252
- - lib/generators/trailblazer/view_generator.rb
253
- - test/app/cells/album/views/cover.haml
254
- - test/app/cells/bad_guitarist/_dii.html.erb
255
- - test/app/cells/bad_guitarist_cell.rb
256
- - test/app/cells/bassist/_dii.html.erb
257
- - test/app/cells/bassist/ahem.html.erb
258
- - test/app/cells/bassist/compose.html.erb
259
- - test/app/cells/bassist/contact_form.html.erb
260
- - test/app/cells/bassist/form_for.erb
261
- - test/app/cells/bassist/form_for_in_haml.haml
262
- - test/app/cells/bassist/jam.html.erb
263
- - test/app/cells/bassist/play.html.erb
264
- - test/app/cells/bassist/play.js.erb
265
- - test/app/cells/bassist/pose.html.erb
266
- - test/app/cells/bassist/promote.html.erb
267
- - test/app/cells/bassist/provoke.html.erb
268
- - test/app/cells/bassist/shout.html.erb
269
- - test/app/cells/bassist/sing.html.haml
270
- - test/app/cells/bassist/slap.html.erb
271
- - test/app/cells/bassist/yell.en.html.erb
272
- - test/app/cells/bassist_cell.rb
273
- - test/app/cells/club_security.rb
274
- - test/app/cells/club_security/guard/help.html.erb
275
- - test/app/cells/club_security/guard_cell.rb
276
- - test/app/cells/club_security/medic/help.html.erb
277
- - test/app/cells/club_security/medic_cell.rb
278
- - test/app/cells/layouts/b.erb
279
- - test/app/cells/layouts/metal.html.erb
280
- - test/app/cells/rails_helper_api_test/bassist/edit.html.erb
281
- - test/app/cells/shouter/sing.html.erb
282
- - test/app/cells/song/dashboard.haml
283
- - test/app/cells/song/details.html.haml
284
- - test/app/cells/song/info.html.haml
285
- - test/app/cells/song/lyrics.html.haml
286
- - test/app/cells/song/plays.haml
287
- - test/app/cells/song/scale.haml
288
- - test/app/cells/song/show.html.haml
289
- - test/app/cells/song/title.html.haml
290
- - test/app/cells/trumpeter/promote.html.erb
291
- - test/app/cells/trumpeter_cell.rb
292
- - test/app/cells/view_model_test/comments/show.haml
293
- - test/app/concepts/record/views/layout.haml
294
- - test/app/concepts/record/views/show.erb
295
- - test/app/concepts/record/views/song.erb
296
- - test/app/views/shared/_dong.html.erb
115
+ - lib/rails/generators/cell/cell_generator.rb
116
+ - lib/rails/generators/cell/templates/cell.rb.erb
117
+ - lib/rails/generators/cell/templates/view.erb
118
+ - lib/rails/generators/cell/templates/view.haml
119
+ - lib/rails/generators/cell/templates/view.slim
120
+ - lib/rails/generators/concept/concept_generator.rb
121
+ - lib/rails/generators/concept/templates/concept.rb.erb
122
+ - lib/rails/generators/concept/templates/view.erb
123
+ - lib/rails/generators/concept/templates/view.haml
124
+ - lib/rails/generators/concept/templates/view.slim
125
+ - lib/rails/generators/test_unit/cell/cell_generator.rb
126
+ - lib/rails/generators/test_unit/cell/templates/unit_test.rb.erb
127
+ - lib/rails/generators/test_unit/concept/concept_generator.rb
128
+ - lib/rails/generators/test_unit/concept/templates/unit_test.rb.erb
129
+ - lib/tasks/cells.rake
130
+ - test/builder_test.rb
131
+ - test/caching_test.rb
132
+ - test/cell_benchmark.rb
297
133
  - test/cell_generator_test.rb
298
- - test/cell_module_test.rb
299
134
  - test/cell_test.rb
300
- - test/cells_module_test.rb
301
135
  - test/concept_generator_test.rb
302
136
  - test/concept_test.rb
303
- - test/deprecations_test.rb
304
137
  - test/dummy/Rakefile
305
138
  - test/dummy/app/assets/javascripts/application.js
306
139
  - test/dummy/app/cells/album/assets/album.js
307
140
  - test/dummy/app/concepts/song/assets/songs.js
308
141
  - test/dummy/app/controllers/application_controller.rb
309
- - test/dummy/app/helpers/application_helper.rb
310
142
  - test/dummy/app/views/layouts/application.html.erb
311
143
  - test/dummy/app/views/musician/featured.html.erb
312
144
  - test/dummy/app/views/musician/featured_with_block.html.erb
313
- - test/dummy/app/views/musician/hamlet.html.haml
145
+ - test/dummy/app/views/musician/hamlet.html.erb
314
146
  - test/dummy/app/views/musician/title.erb
315
147
  - test/dummy/config.ru
316
148
  - test/dummy/config/application.rb
317
149
  - test/dummy/config/boot.rb
318
150
  - test/dummy/config/database.yml
319
151
  - test/dummy/config/environment.rb
320
- - test/dummy/config/environments/development.rb
321
- - test/dummy/config/environments/production.rb
322
- - test/dummy/config/environments/test.rb
323
152
  - test/dummy/config/locales/en.yml
324
153
  - test/dummy/config/routes.rb
325
- - test/dummy/db/test.sqlite3
326
- - test/dummy/label/app/cells/label/show.erb
327
- - test/dummy/label/app/cells/label_cell.rb
328
- - test/dummy/label/label.gemspec
329
- - test/dummy/label/lib/label.rb
330
- - test/dummy/label/lib/label/version.rb
331
- - test/dummy/log/production.log
332
- - test/dummy/log/server.log
333
- - test/dummy/public/404.html
334
- - test/dummy/public/422.html
335
- - test/dummy/public/500.html
336
- - test/dummy/public/favicon.ico
337
- - test/dummy/public/stylesheets/.gitkeep
338
154
  - test/dummy/script/rails
339
- - test/helper_test.rb
155
+ - test/fixtures/bassist/play.erb
156
+ - test/fixtures/concepts/record/views/layout.erb
157
+ - test/fixtures/concepts/record/views/show.erb
158
+ - test/fixtures/concepts/record/views/song.erb
159
+ - test/fixtures/inherit_views_test/popper/tap.erb
160
+ - test/fixtures/inherit_views_test/tapper/play.erb
161
+ - test/fixtures/inherit_views_test/tapper/tap.erb
162
+ - test/fixtures/partial_test/with_partial/show.erb
163
+ - test/fixtures/partials/_show.html.erb
164
+ - test/fixtures/partials/_show.xml.erb
165
+ - test/fixtures/song/ivar.erb
166
+ - test/fixtures/song/show.erb
167
+ - test/fixtures/song/with_erb.erb
168
+ - test/fixtures/song/with_html.erb
169
+ - test/fixtures/song/with_locals.erb
170
+ - test/fixtures/song_with_layout/happy.erb
171
+ - test/fixtures/song_with_layout/merry.erb
172
+ - test/fixtures/song_with_layout/show.erb
173
+ - test/fixtures/song_with_layout/show_with_layout.erb
174
+ - test/fixtures/templates_caching_test/song/show.erb
175
+ - test/fixtures/url_helper_test/song/edit.erb
176
+ - test/fixtures/url_helper_test/song/with_block.erb
177
+ - test/fixtures/url_helper_test/song/with_capture.erb
178
+ - test/fixtures/url_helper_test/song/with_content_tag.erb
179
+ - test/fixtures/url_helper_test/song/with_form_for_block.erb
180
+ - test/fixtures/url_helper_test/song/with_link_to.erb
181
+ - test/layout_test.rb
182
+ - test/partial_test.rb
340
183
  - test/prefixes_test.rb
341
- - test/rack_test.rb
342
- - test/rails/asset_pipeline_test.rb
343
- - test/rails/caching_test.rb
344
- - test/rails/cells_test.rb
345
- - test/rails/forms_test.rb
346
- - test/rails/integration_test.rb
347
- - test/rails/render_test.rb
348
- - test/rails/view_model_test.rb
349
- - test/rails/view_test.rb
350
- - test/rails_helper_api_test.rb
351
- - test/self_contained_test.rb
184
+ - test/public_test.rb
185
+ - test/rails_extensions_test.rb
186
+ - test/render_test.rb
187
+ - test/templates_test.rb
352
188
  - test/test_case_test.rb
353
189
  - test/test_helper.rb
354
190
  - test/twin_test.rb
355
- homepage: http://cells.rubyforge.org
191
+ - test/url_helper_test.rb
192
+ homepage: https://github.com/apotonick/cells
356
193
  licenses:
357
194
  - MIT
358
195
  metadata: {}
@@ -367,115 +204,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
367
204
  version: '0'
368
205
  required_rubygems_version: !ruby/object:Gem::Requirement
369
206
  requirements:
370
- - - ">="
207
+ - - ">"
371
208
  - !ruby/object:Gem::Version
372
- version: '0'
209
+ version: 1.3.1
373
210
  requirements: []
374
211
  rubyforge_project:
375
212
  rubygems_version: 2.2.2
376
213
  signing_key:
377
214
  specification_version: 4
378
- summary: View Components for Rails.
379
- test_files:
380
- - test/app/cells/album/views/cover.haml
381
- - test/app/cells/bad_guitarist/_dii.html.erb
382
- - test/app/cells/bad_guitarist_cell.rb
383
- - test/app/cells/bassist/_dii.html.erb
384
- - test/app/cells/bassist/ahem.html.erb
385
- - test/app/cells/bassist/compose.html.erb
386
- - test/app/cells/bassist/contact_form.html.erb
387
- - test/app/cells/bassist/form_for.erb
388
- - test/app/cells/bassist/form_for_in_haml.haml
389
- - test/app/cells/bassist/jam.html.erb
390
- - test/app/cells/bassist/play.html.erb
391
- - test/app/cells/bassist/play.js.erb
392
- - test/app/cells/bassist/pose.html.erb
393
- - test/app/cells/bassist/promote.html.erb
394
- - test/app/cells/bassist/provoke.html.erb
395
- - test/app/cells/bassist/shout.html.erb
396
- - test/app/cells/bassist/sing.html.haml
397
- - test/app/cells/bassist/slap.html.erb
398
- - test/app/cells/bassist/yell.en.html.erb
399
- - test/app/cells/bassist_cell.rb
400
- - test/app/cells/club_security.rb
401
- - test/app/cells/club_security/guard/help.html.erb
402
- - test/app/cells/club_security/guard_cell.rb
403
- - test/app/cells/club_security/medic/help.html.erb
404
- - test/app/cells/club_security/medic_cell.rb
405
- - test/app/cells/layouts/b.erb
406
- - test/app/cells/layouts/metal.html.erb
407
- - test/app/cells/rails_helper_api_test/bassist/edit.html.erb
408
- - test/app/cells/shouter/sing.html.erb
409
- - test/app/cells/song/dashboard.haml
410
- - test/app/cells/song/details.html.haml
411
- - test/app/cells/song/info.html.haml
412
- - test/app/cells/song/lyrics.html.haml
413
- - test/app/cells/song/plays.haml
414
- - test/app/cells/song/scale.haml
415
- - test/app/cells/song/show.html.haml
416
- - test/app/cells/song/title.html.haml
417
- - test/app/cells/trumpeter/promote.html.erb
418
- - test/app/cells/trumpeter_cell.rb
419
- - test/app/cells/view_model_test/comments/show.haml
420
- - test/app/concepts/record/views/layout.haml
421
- - test/app/concepts/record/views/show.erb
422
- - test/app/concepts/record/views/song.erb
423
- - test/app/views/shared/_dong.html.erb
424
- - test/cell_generator_test.rb
425
- - test/cell_module_test.rb
426
- - test/cell_test.rb
427
- - test/cells_module_test.rb
428
- - test/concept_generator_test.rb
429
- - test/concept_test.rb
430
- - test/deprecations_test.rb
431
- - test/dummy/Rakefile
432
- - test/dummy/app/assets/javascripts/application.js
433
- - test/dummy/app/cells/album/assets/album.js
434
- - test/dummy/app/concepts/song/assets/songs.js
435
- - test/dummy/app/controllers/application_controller.rb
436
- - test/dummy/app/helpers/application_helper.rb
437
- - test/dummy/app/views/layouts/application.html.erb
438
- - test/dummy/app/views/musician/featured.html.erb
439
- - test/dummy/app/views/musician/featured_with_block.html.erb
440
- - test/dummy/app/views/musician/hamlet.html.haml
441
- - test/dummy/app/views/musician/title.erb
442
- - test/dummy/config.ru
443
- - test/dummy/config/application.rb
444
- - test/dummy/config/boot.rb
445
- - test/dummy/config/database.yml
446
- - test/dummy/config/environment.rb
447
- - test/dummy/config/environments/development.rb
448
- - test/dummy/config/environments/production.rb
449
- - test/dummy/config/environments/test.rb
450
- - test/dummy/config/locales/en.yml
451
- - test/dummy/config/routes.rb
452
- - test/dummy/db/test.sqlite3
453
- - test/dummy/label/app/cells/label/show.erb
454
- - test/dummy/label/app/cells/label_cell.rb
455
- - test/dummy/label/label.gemspec
456
- - test/dummy/label/lib/label.rb
457
- - test/dummy/label/lib/label/version.rb
458
- - test/dummy/log/production.log
459
- - test/dummy/log/server.log
460
- - test/dummy/public/404.html
461
- - test/dummy/public/422.html
462
- - test/dummy/public/500.html
463
- - test/dummy/public/favicon.ico
464
- - test/dummy/public/stylesheets/.gitkeep
465
- - test/dummy/script/rails
466
- - test/helper_test.rb
467
- - test/prefixes_test.rb
468
- - test/rack_test.rb
469
- - test/rails/asset_pipeline_test.rb
470
- - test/rails/caching_test.rb
471
- - test/rails/cells_test.rb
472
- - test/rails/forms_test.rb
473
- - test/rails/integration_test.rb
474
- - test/rails/render_test.rb
475
- - test/rails/view_model_test.rb
476
- - test/rails/view_test.rb
477
- - test/rails_helper_api_test.rb
478
- - test/self_contained_test.rb
479
- - test/test_case_test.rb
480
- - test/test_helper.rb
481
- - test/twin_test.rb
215
+ summary: View Models for Rails.
216
+ test_files: []