rules_view 0.0.1

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 (169) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.textile +129 -0
  5. data/Rakefile +47 -0
  6. data/VERSION +1 -0
  7. data/app/views/layouts/rules_view.html.erb +43 -0
  8. data/app/views/re_view/template.html.erb +196 -0
  9. data/autotest/discover.rb +2 -0
  10. data/generators/install_generator.rb +41 -0
  11. data/generators/layout_generator.rb +41 -0
  12. data/generators/manifests/application.rb +116 -0
  13. data/generators/manifests/application.yml +8 -0
  14. data/generators/manifests/layout.rb +17 -0
  15. data/generators/manifests/layout.yml +5 -0
  16. data/generators/manifests/templates/app/views/layouts/rules_view_layout.html.erb +47 -0
  17. data/generators/manifests/templates/config/initializers/rules_view.rb +1 -0
  18. data/generators/manifests/templates/doc/README.rules_view +97 -0
  19. data/generators/manifests/templates/public/javascripts/rules_view/jquery-1.4.2.min.js +154 -0
  20. data/generators/manifests/templates/public/javascripts/rules_view/jquery.autocomplete.pack.js +13 -0
  21. data/generators/manifests/templates/public/javascripts/rules_view/jquery.blockUI.js +486 -0
  22. data/generators/manifests/templates/public/javascripts/rules_view/jquery.fancybox-1.3.1.js +1077 -0
  23. data/generators/manifests/templates/public/javascripts/rules_view/re_view.js +148 -0
  24. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/ie.css +35 -0
  25. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/buttons/icons/cross.png +0 -0
  26. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/buttons/icons/key.png +0 -0
  27. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/buttons/icons/tick.png +0 -0
  28. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/buttons/readme.txt +32 -0
  29. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/buttons/screen.css +97 -0
  30. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/fancy-type/readme.txt +14 -0
  31. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/fancy-type/screen.css +71 -0
  32. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/doc.png +0 -0
  33. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/email.png +0 -0
  34. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/external.png +0 -0
  35. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/feed.png +0 -0
  36. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/im.png +0 -0
  37. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  38. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/visited.png +0 -0
  39. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/icons/xls.png +0 -0
  40. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/readme.txt +18 -0
  41. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/link-icons/screen.css +40 -0
  42. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/rtl/readme.txt +10 -0
  43. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/plugins/rtl/screen.css +110 -0
  44. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/print.css +29 -0
  45. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/screen.css +258 -0
  46. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/src/forms.css +65 -0
  47. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/src/grid.css +280 -0
  48. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/src/grid.png +0 -0
  49. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/src/ie.css +76 -0
  50. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/src/print.css +85 -0
  51. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/src/reset.css +45 -0
  52. data/generators/manifests/templates/public/stylesheets/rules_view/blueprint/src/typography.css +106 -0
  53. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/blank.gif +0 -0
  54. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_close.png +0 -0
  55. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_loading.png +0 -0
  56. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_nav_left.png +0 -0
  57. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_nav_right.png +0 -0
  58. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_e.png +0 -0
  59. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_n.png +0 -0
  60. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_ne.png +0 -0
  61. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_nw.png +0 -0
  62. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_s.png +0 -0
  63. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_se.png +0 -0
  64. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_sw.png +0 -0
  65. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_shadow_w.png +0 -0
  66. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_title_left.png +0 -0
  67. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_title_main.png +0 -0
  68. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_title_over.png +0 -0
  69. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancy_title_right.png +0 -0
  70. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancybox-x.png +0 -0
  71. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancybox-y.png +0 -0
  72. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/fancybox.png +0 -0
  73. data/generators/manifests/templates/public/stylesheets/rules_view/fancybox/jquery.fancybox-1.3.1.css +363 -0
  74. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_box/shadowbox.png +0 -0
  75. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_box/whitebox.jpg +0 -0
  76. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/checked-off.gif +0 -0
  77. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/checked-on.gif +0 -0
  78. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/icon-add.png +0 -0
  79. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/icon-delete.png +0 -0
  80. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/list-add.png +0 -0
  81. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/list-remove.png +0 -0
  82. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/list-select.png +0 -0
  83. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-blue-left.gif +0 -0
  84. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-blue-right.gif +0 -0
  85. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-gray-left.gif +0 -0
  86. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-gray-right.gif +0 -0
  87. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-green-left.gif +0 -0
  88. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-green-right.gif +0 -0
  89. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-orange-left.gif +0 -0
  90. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-orange-right.gif +0 -0
  91. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-red-left.gif +0 -0
  92. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_button/oval-red-right.gif +0 -0
  93. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_error/re-alert-close.png +0 -0
  94. data/generators/manifests/templates/public/stylesheets/rules_view/images/re_view_navigate/breadcrumb.png +0 -0
  95. data/generators/manifests/templates/public/stylesheets/rules_view/jquery.autocomplete.css +53 -0
  96. data/generators/manifests/templates/public/stylesheets/rules_view/rules_view.css +738 -0
  97. data/init.rb +1 -0
  98. data/lib/rules_view/alerts.rb +51 -0
  99. data/lib/rules_view/boxes.rb +25 -0
  100. data/lib/rules_view/buttons.rb +113 -0
  101. data/lib/rules_view/config.rb +21 -0
  102. data/lib/rules_view/defer.rb +30 -0
  103. data/lib/rules_view/engine.rb +28 -0
  104. data/lib/rules_view/form_builder.rb +62 -0
  105. data/lib/rules_view/form_fields.rb +41 -0
  106. data/lib/rules_view/form_styles.rb +112 -0
  107. data/lib/rules_view/model_loader.rb +64 -0
  108. data/lib/rules_view/navigate.rb +40 -0
  109. data/lib/rules_view.rb +20 -0
  110. data/rules_view.gemspec +239 -0
  111. data/spec/lib/rules_view/alerts_spec.rb +145 -0
  112. data/spec/lib/rules_view/boxes_spec.rb +49 -0
  113. data/spec/lib/rules_view/buttons_spec.rb +184 -0
  114. data/spec/lib/rules_view/defer_spec.rb +90 -0
  115. data/spec/lib/rules_view/form_builder_fields_spec.rb +184 -0
  116. data/spec/lib/rules_view/form_builder_spec.rb +19 -0
  117. data/spec/lib/rules_view/form_fields_spec.rb +219 -0
  118. data/spec/lib/rules_view/form_styles_spec.rb +290 -0
  119. data/spec/lib/rules_view/model_loader_spec.rb +202 -0
  120. data/spec/lib/rules_view/navigate_spec.rb +61 -0
  121. data/spec/rails_3_0_0_root/.gitignore +4 -0
  122. data/spec/rails_3_0_0_root/.rspec +1 -0
  123. data/spec/rails_3_0_0_root/Gemfile +13 -0
  124. data/spec/rails_3_0_0_root/Gemfile.lock +101 -0
  125. data/spec/rails_3_0_0_root/README +256 -0
  126. data/spec/rails_3_0_0_root/Rakefile +7 -0
  127. data/spec/rails_3_0_0_root/app/controllers/application_controller.rb +3 -0
  128. data/spec/rails_3_0_0_root/app/helpers/application_helper.rb +2 -0
  129. data/spec/rails_3_0_0_root/app/views/layouts/application.html.erb +14 -0
  130. data/spec/rails_3_0_0_root/autotest/discover.rb +2 -0
  131. data/spec/rails_3_0_0_root/config/application.rb +42 -0
  132. data/spec/rails_3_0_0_root/config/boot.rb +13 -0
  133. data/spec/rails_3_0_0_root/config/database.yml +22 -0
  134. data/spec/rails_3_0_0_root/config/environment.rb +5 -0
  135. data/spec/rails_3_0_0_root/config/environments/development.rb +26 -0
  136. data/spec/rails_3_0_0_root/config/environments/production.rb +49 -0
  137. data/spec/rails_3_0_0_root/config/environments/test.rb +35 -0
  138. data/spec/rails_3_0_0_root/config/initializers/backtrace_silencers.rb +7 -0
  139. data/spec/rails_3_0_0_root/config/initializers/inflections.rb +10 -0
  140. data/spec/rails_3_0_0_root/config/initializers/mime_types.rb +5 -0
  141. data/spec/rails_3_0_0_root/config/initializers/secret_token.rb +7 -0
  142. data/spec/rails_3_0_0_root/config/initializers/session_store.rb +8 -0
  143. data/spec/rails_3_0_0_root/config/locales/en.yml +5 -0
  144. data/spec/rails_3_0_0_root/config/routes.rb +58 -0
  145. data/spec/rails_3_0_0_root/config.ru +4 -0
  146. data/spec/rails_3_0_0_root/db/seeds.rb +7 -0
  147. data/spec/rails_3_0_0_root/doc/README_FOR_APP +2 -0
  148. data/spec/rails_3_0_0_root/lib/tasks/.gitkeep +0 -0
  149. data/spec/rails_3_0_0_root/public/404.html +26 -0
  150. data/spec/rails_3_0_0_root/public/422.html +26 -0
  151. data/spec/rails_3_0_0_root/public/500.html +26 -0
  152. data/spec/rails_3_0_0_root/public/favicon.ico +0 -0
  153. data/spec/rails_3_0_0_root/public/images/rails.png +0 -0
  154. data/spec/rails_3_0_0_root/public/index.html +239 -0
  155. data/spec/rails_3_0_0_root/public/javascripts/application.js +2 -0
  156. data/spec/rails_3_0_0_root/public/javascripts/controls.js +965 -0
  157. data/spec/rails_3_0_0_root/public/javascripts/dragdrop.js +974 -0
  158. data/spec/rails_3_0_0_root/public/javascripts/effects.js +1123 -0
  159. data/spec/rails_3_0_0_root/public/javascripts/prototype.js +6001 -0
  160. data/spec/rails_3_0_0_root/public/javascripts/rails.js +175 -0
  161. data/spec/rails_3_0_0_root/public/robots.txt +5 -0
  162. data/spec/rails_3_0_0_root/public/stylesheets/.gitkeep +0 -0
  163. data/spec/rails_3_0_0_root/script/rails +6 -0
  164. data/spec/rails_3_0_0_root/spec/spec_helper.rb +27 -0
  165. data/spec/rails_3_0_0_root/vendor/plugins/.gitkeep +0 -0
  166. data/spec/spec_helper.rb +29 -0
  167. data/spec/support/create_memory_db.rb +2 -0
  168. data/tasks/rspec.rake +46 -0
  169. metadata +278 -0
@@ -0,0 +1,290 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe "re_build_form_field" do
4
+ include RSpec::Rails::HelperExampleGroup
5
+
6
+ it "should be accessible to rails apps by default" do
7
+ ActionView::Base.new.methods.should include("re_build_form_field")
8
+ end
9
+
10
+ it "should be html safe" do
11
+ helper.re_build_form_field("default value").should be_html_safe
12
+ helper.re_build_form_field("<default value>").should =~/&lt;default value&gt;/
13
+ end
14
+
15
+ it "should set the default class to re-form-field" do
16
+ helper.re_build_form_field("default value").should have_selector("div.re-form-field", :content => "default value")
17
+ end
18
+
19
+ it "should be disabled if set" do
20
+ helper.re_build_form_field("default value", :disabled => true).should have_selector("div.re-form-field.re-form-disabled")
21
+ helper.re_build_form_field("default value", :disabled => false).should_not have_selector("div.re-form-field.re-form-disabled")
22
+ end
23
+
24
+ it "should add the class if set" do
25
+ helper.re_build_form_field("default value", :class => "test-class").should have_selector("div.re-form-field.test-class")
26
+ end
27
+
28
+ it "should set the default span to 12" do
29
+ helper.re_build_form_field("default value").should have_selector("div.re-form-field.span-12")
30
+ end
31
+
32
+ it "should use the value of the span option" do
33
+ helper.re_build_form_field("default value", :span => '22').should have_selector("div.re-form-field.span-22")
34
+ end
35
+
36
+ it "should use the clear class to ensure each field is at the start of the section" do
37
+ helper.re_build_form_field("default value").should have_selector("div.re-form-field.clear")
38
+ end
39
+
40
+ it "should set the id for the field to form_field_[id]" do
41
+ helper.re_build_form_field("default value", :id => "NEW").should have_selector("div.re-form-field#form_field_NEW")
42
+ end
43
+ end
44
+
45
+ describe "re_build_form_label" do
46
+ include RSpec::Rails::HelperExampleGroup
47
+
48
+ it "should be accessible to rails apps by default" do
49
+ ActionView::Base.new.methods.should include("re_build_form_label")
50
+ end
51
+
52
+ it "should be html safe" do
53
+ helper.re_build_form_label("default value").should be_html_safe
54
+ helper.re_build_form_label("<default value>").should =~/&lt;default value&gt;/
55
+ end
56
+
57
+ it "should set the default class to re-form-label" do
58
+ helper.re_build_form_label("default value").should have_selector("div.re-form-label", :content => "default value")
59
+ end
60
+
61
+ it "should set the default class to re-form-label-error if there is an error set" do
62
+ helper.re_build_form_label("default value", :error => "ouch").should have_selector("div.re-form-label-error")
63
+ end
64
+
65
+ it "should be disabled if set" do
66
+ helper.re_build_form_label("default value", :disabled => true).should have_selector("div.re-form-label.re-form-disabled")
67
+ helper.re_build_form_label("default value", :disabled => false).should_not have_selector("div.re-form-label.re-form-disabled")
68
+ end
69
+
70
+ it "should add the class if set" do
71
+ helper.re_build_form_label("default value", :class => "test-class").should have_selector("div.re-form-label.test-class")
72
+ end
73
+
74
+ it "should set the default span to 4" do
75
+ helper.re_build_form_label("default value").should have_selector("div.re-form-label.span-4")
76
+ end
77
+
78
+ it "should use the value of the span option" do
79
+ helper.re_build_form_label("default value", :span => '22').should have_selector("div.re-form-label.span-22")
80
+ end
81
+
82
+ it "should set the id for the field to re_form_label_[id]" do
83
+ helper.re_build_form_label("default value", :id => "NEW").should have_selector("div#re_form_label_NEW")
84
+ end
85
+
86
+ it "should include a span.re-form-required > * when required set" do
87
+ helper.re_build_form_label("default value", :required => "true").should have_selector("div") do |div|
88
+ div.should have_selector("span.re-form-required", :content => "*")
89
+ end
90
+ end
91
+
92
+ it "should include a span.re-form-required.re-form-disabled > * when required set" do
93
+ helper.re_build_form_label("default value", :required => "true", :disabled => "true").should have_selector("div") do |div|
94
+ div.should have_selector("span.re-form-required.re-form-disabled", :content => "*")
95
+ end
96
+ end
97
+ end
98
+
99
+ describe "re_build_form_data" do
100
+ include RSpec::Rails::HelperExampleGroup
101
+
102
+ it "should be accessible to rails apps by default" do
103
+ ActionView::Base.new.methods.should include("re_build_form_data")
104
+ end
105
+
106
+ it "should be html safe" do
107
+ helper.re_build_form_data("default value").should be_html_safe
108
+ helper.re_build_form_data("<default value>").should =~/&lt;default value&gt;/
109
+ end
110
+
111
+ it "should set the default class to re-form-data" do
112
+ helper.re_build_form_data("default value").should have_selector("div.re-form-data", :content => "default value")
113
+ end
114
+
115
+ it "should set the default class to re-form-data-error if there is an error set" do
116
+ helper.re_build_form_data("default value", :error => "ouch").should have_selector("div.re-form-data-error")
117
+ end
118
+
119
+ it "should be disabled if set" do
120
+ helper.re_build_form_data("default value", :disabled => true).should have_selector("div.re-form-data.re-form-disabled")
121
+ helper.re_build_form_data("default value", :disabled => false).should_not have_selector("div.re-form-data.re-form-disabled")
122
+ end
123
+
124
+ it "should add the class if set" do
125
+ helper.re_build_form_data("default value", :class => "test-class").should have_selector("div.re-form-data.test-class")
126
+ end
127
+
128
+ it "should set the default span to 8" do
129
+ helper.re_build_form_data("default value").should have_selector("div.re-form-data.span-8")
130
+ end
131
+
132
+ it "should use the value of the span option" do
133
+ helper.re_build_form_data("default value", :span => '22').should have_selector("div.re-form-data.span-22")
134
+ end
135
+
136
+ it "should use the last class to ensure it is the last field in a section" do
137
+ helper.re_build_form_data("default value").should have_selector("div.re-form-data.last")
138
+ end
139
+
140
+ it "should set the id for the field to form_value_[id]" do
141
+ helper.re_build_form_data("default value", :id => "NEW").should have_selector("div.re-form-data#form_data_NEW")
142
+ end
143
+
144
+ it "should add a form-hint span if :hint set" do
145
+ helper.re_build_form_data("default value", :error => "", :hint => "hint value").should have_selector("div.re-form-data > span.form-hint", :content => "hint value")
146
+ end
147
+
148
+ it "should not add a form-hint span if :hint set but there is an error" do
149
+ helper.re_build_form_data("default value", :error => "ouch", :hint => "hint value").should_not have_selector("span.form-hint")
150
+ end
151
+
152
+ it "should not add a form-hint span if :hint is blank" do
153
+ helper.re_build_form_data("default value", :hint => "").should_not have_selector("span.form-hint")
154
+ end
155
+
156
+ it "should add a form-txt span if :text set" do
157
+ helper.re_build_form_data("default value", :text => "text value").should have_selector("div.re-form-data > span.form-text", :content => "text value")
158
+ end
159
+
160
+ it "should not add a form-txt span if :text is blank" do
161
+ helper.re_build_form_data("default value", :text => "").should_not have_selector("div.re-form-data > span.form-text")
162
+ end
163
+
164
+ it "should not add a form-txt span if :text is blank" do
165
+ helper.re_build_form_data("default value", :text => "").should_not have_selector("span.form-text")
166
+ end
167
+
168
+ it "should add a form-error-message span if :error set" do
169
+ helper.re_build_form_data("default value", :error => "error value").should have_selector("div.re-form-data-error > span.form-error-message", :content => "error value")
170
+ end
171
+ end
172
+
173
+ describe "re_options_exclude", :type => :helper do
174
+ include RSpec::Rails::HelperExampleGroup
175
+
176
+ it "should be accessible to rails apps by default" do
177
+ ActionView::Base.new.methods.should include("re_options_exclude")
178
+ end
179
+
180
+ [:error, :hint, :label, :text, :required, :span].each do |option|
181
+ it "should remove the option #{option}" do
182
+ options = {:a =>"a", :b =>"b", :c =>"c", option => "option"}
183
+ helper.re_options_exclude(options).should == {:a =>"a", :b =>"b", :c =>"c"}
184
+ end
185
+ end
186
+ end
187
+
188
+ describe "re_label_span" do
189
+ include RSpec::Rails::HelperExampleGroup
190
+
191
+ it "should be accessible to rails apps by default" do
192
+ ActionView::Base.new.methods.should include("re_label_span")
193
+ end
194
+
195
+ it "should be set to 4 by default" do
196
+ helper.re_label_span({}).should == 4
197
+ helper.re_label_span(:span => 'X').should == 4
198
+ end
199
+
200
+ it "should use the first value of a NxN span" do
201
+ helper.re_label_span(:span => '2x10').should == 2
202
+ helper.re_label_span(:span => '20x10').should == 20
203
+ end
204
+
205
+ it "should use the value of a N span" do
206
+ helper.re_label_span(:span => '2').should == 2
207
+ helper.re_label_span(:span => '20').should == 20
208
+ end
209
+
210
+ end
211
+
212
+ describe "re_data_span" do
213
+ include RSpec::Rails::HelperExampleGroup
214
+
215
+ it "should be accessible to rails apps by default" do
216
+ ActionView::Base.new.methods.should include("re_data_span")
217
+ end
218
+
219
+ it "should be set to 8 by default" do
220
+ helper.re_data_span({}).should == 8
221
+ helper.re_data_span(:span => 'X').should == 8
222
+ end
223
+
224
+ it "should use the second value of a NxN span" do
225
+ helper.re_data_span(:span => '2x10').should == 10
226
+ helper.re_data_span(:span => '2x20').should == 20
227
+ end
228
+
229
+ it "should be 8, 16, 24 minus the value of a N span" do
230
+ helper.re_data_span(:span => '0').should == 8
231
+ helper.re_data_span(:span => '1').should == 7
232
+ helper.re_data_span(:span => '7').should == 1
233
+ helper.re_data_span(:span => '8').should == 8
234
+ helper.re_data_span(:span => '9').should == 7
235
+ helper.re_data_span(:span => '15').should == 1
236
+ helper.re_data_span(:span => '16').should == 8
237
+ helper.re_data_span(:span => '17').should == 7
238
+ end
239
+
240
+ end
241
+
242
+ describe "re_field_span" do
243
+ include RSpec::Rails::HelperExampleGroup
244
+
245
+ it "should be accessible to rails apps by default" do
246
+ ActionView::Base.new.methods.should include("re_field_span")
247
+ end
248
+
249
+ it "should be set to 12 by default" do
250
+ helper.re_field_span({}).should == 12
251
+ end
252
+
253
+ it "should use the sum of a NxN span" do
254
+ helper.re_field_span(:span => '2x7').should == 9
255
+ helper.re_field_span(:span => '2x10').should == 12
256
+ helper.re_field_span(:span => '2x20').should == 22
257
+ end
258
+
259
+ it "should be in columns of 8, 16 or 24 " do
260
+ helper.re_field_span(:span => '0').should == 8
261
+ helper.re_field_span(:span => '1').should == 8
262
+ helper.re_field_span(:span => '7').should == 8
263
+ helper.re_field_span(:span => '8').should == 16
264
+ helper.re_field_span(:span => '9').should == 16
265
+ helper.re_field_span(:span => '15').should == 16
266
+ helper.re_field_span(:span => '16').should == 24
267
+ helper.re_field_span(:span => '17').should == 24
268
+ end
269
+ end
270
+
271
+ describe "re_error_on_tag" do
272
+ include RSpec::Rails::HelperExampleGroup
273
+
274
+ it "should be accessible to rails apps by default" do
275
+ ActionView::Base.new.methods.should include("re_error_on_tag")
276
+ end
277
+
278
+ it "should be html safe" do
279
+ helper.re_error_on_tag("The Error Message to Show").should be_html_safe
280
+ helper.re_error_on_tag("<The Error Message to Show>").should have_selector('div.re-error > p') do |error_message|
281
+ error_message.inner_html.should == "&lt;The Error Message to Show&gt;"
282
+ end
283
+ end
284
+
285
+ it "should display the error" do
286
+ helper.re_error_on_tag("The Error Message to Show").should have_selector('div.re-error > p', :content => "The Error Message to Show")
287
+ end
288
+ end
289
+
290
+
@@ -0,0 +1,202 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ # ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
4
+
5
+ ActiveRecord::Schema.define(:version => 1) do
6
+ create_table :posts do |t|
7
+ end
8
+
9
+ create_table :comments do |t|
10
+ t.integer :post_id
11
+ end
12
+ end
13
+
14
+ class Post < ActiveRecord::Base
15
+ end
16
+
17
+ class Comment < ActiveRecord::Base
18
+ end
19
+
20
+ describe "model_loader" do
21
+ include RSpec::Rails::ControllerExampleGroup
22
+
23
+ controller do
24
+ before_filter do |controller|
25
+ if params[:post_id]
26
+ controller.re_load_model :post, :param_id => :post_id
27
+ if params[:validate]
28
+ controller.re_load_model :comment, :parents => [:post], :validate => params[:validate]
29
+ elsif params[:redirect_path]
30
+ controller.re_load_model :comment, :parents => [:post], :redirect_path => params[:redirect_path]
31
+ else
32
+ controller.re_load_model :comment, :parents => [:post]
33
+ end
34
+ elsif params[:find_by]
35
+ controller.re_load_model :post, :find_by => params[:find_by]
36
+ elsif params[:param_id]
37
+ controller.re_load_model :post, :param_id => params[:param_id]
38
+ elsif params[:redirect_path]
39
+ controller.re_load_model :post, :redirect_path => params[:redirect_path]
40
+ else
41
+ controller.re_load_model :post
42
+ end
43
+ end
44
+
45
+ def index
46
+ render :inline => "re_load_model"
47
+ end
48
+
49
+ def posts_path
50
+ '/posts'
51
+ end
52
+
53
+ def comments_path
54
+ "/comments"
55
+ end
56
+
57
+ def mock_redirect_path(args = [])
58
+ "/mock_redirect_path/#{args.map(&:id).join('/')}"
59
+ end
60
+ end
61
+
62
+ before(:each) do
63
+ @post = Post.create
64
+ @comment = Comment.create(:post_id => @post.id)
65
+ end
66
+
67
+ describe "loading a valid model" do
68
+ it "should find the model" do
69
+ Post.should_receive(:send).with(:find, @post.id).and_return(@post)
70
+ get :index, :id => @post.id
71
+ end
72
+
73
+ it "should set the instance variable '@model'" do
74
+ get :index, :id => @post.id
75
+ assigns(:post).should == @post
76
+ end
77
+ end
78
+
79
+ describe "loading an invalid model" do
80
+ it "should set the inastance variable '@model' to nil" do
81
+ get :index, :id => "unknown"
82
+ assigns(:post).should == nil
83
+ end
84
+
85
+ it "should set the error message" do
86
+ get :index, :id => "unknown"
87
+ flash[:error].should_not be_blank
88
+ end
89
+
90
+ it "should redirect to the index path of the model" do
91
+ get :index, :id => "unknown"
92
+ response.should redirect_to('/posts')
93
+ end
94
+
95
+ it "should set the javascript redirect to the index path of the model" do
96
+ xhr :get, :index, :id => "unknown"
97
+ response.body.should == "window.location.href = '\/posts';"
98
+ end
99
+ end
100
+
101
+ describe "the model is a child of the direct parent" do
102
+ before(:each) do
103
+ Comment.stub!(:send).with(:find, @comment.id).and_return(@comment)
104
+ end
105
+
106
+ it "should confirm that this model is a child of the direct parent" do
107
+ @comment.should_receive(:post_id).and_return(@post.id)
108
+ get :index, :id => @comment.id, :post_id => @post.id
109
+ assigns(:post).should == @post
110
+ assigns(:comment).should == @comment
111
+ end
112
+
113
+ describe "the :validate option" do
114
+ it "should be a valid child if the :validate is true" do
115
+ @comment.should_receive(:validate_method).and_return(true)
116
+ get :index, :id => @comment.id, :post_id => @post.id, :validate => "validate_method"
117
+ assigns(:post).should == @post
118
+ assigns(:comment).should == @comment
119
+ end
120
+
121
+ it "should be a invalid child if the :validate is false" do
122
+ @comment.should_receive(:validate_method).and_return(false)
123
+ get :index, :id => @comment.id, :post_id => @post.id, :validate => "validate_method"
124
+ assigns(:post).should == @post
125
+ assigns(:comment).should == nil
126
+ response.should redirect_to('/comments')
127
+ end
128
+ end
129
+ end
130
+
131
+ describe "the model is not a child of the direct parent" do
132
+ before(:each) do
133
+ Comment.stub!(:send).with(:find, @comment.id).and_return(@comment)
134
+ @comment.stub!(:post_id).and_return(-1)
135
+ end
136
+
137
+ it "should set the inastance variable '@model' to nil" do
138
+ @comment.should_receive(:post_id).and_return(-1)
139
+ get :index, :id => @comment.id, :post_id => @post.id
140
+ assigns(:post).should == @post
141
+ assigns(:comment).should == nil
142
+ end
143
+
144
+ it "should set the error message" do
145
+ get :index, :id => @comment.id, :post_id => @post.id
146
+ flash[:error].should_not be_blank
147
+ end
148
+
149
+ it "should redirect to the index path of the parent" do
150
+ get :index, :id => @comment.id, :post_id => @post.id
151
+ response.should redirect_to('/comments')
152
+ end
153
+
154
+ it "should set the javascript redirect to the path of the parent" do
155
+ xhr :get, :index, :id => @comment.id, :post_id => @post.id
156
+ response.body.should == "window.location.href = '\/comments';"
157
+ end
158
+ end
159
+
160
+ describe "finding a model" do
161
+ it "should call find when the parameter :find is not set" do
162
+ Post.should_receive(:send).with(:find, @post.id).and_return(@post)
163
+ get :index, :id => @post.id
164
+ end
165
+
166
+ it "should use the parameter :find when set" do
167
+ Post.should_receive(:send).with(:find_by_mock, @post.id).and_return(@post)
168
+ get :index, :id => @post.id, :find_by => :find_by_mock
169
+ end
170
+
171
+ it "should use the parameter :param_id when set" do
172
+ Post.should_receive(:send).with(:find, @post.id).and_return(@post)
173
+ get :index, :test_post_id => @post.id, :param_id => :test_post_id
174
+ end
175
+
176
+ it "should capture RecordNotFound exceptions and return nil" do
177
+ Post.should_receive(:send).with(:find, @post.id).and_raise(ActiveRecord::RecordNotFound)
178
+ lambda {
179
+ get :index, :id => @post.id
180
+ }.should_not raise_error
181
+
182
+ response.should redirect_to('/posts')
183
+ end
184
+ end
185
+
186
+ describe "redirecting on failure" do
187
+ it "should call the model's index path the parameter :redirect_path is not set" do
188
+ get :index, :id => 'unknown'
189
+ response.should redirect_to('/posts')
190
+ end
191
+
192
+ it "should use the :redirect_path when set" do
193
+ get :index, :id => 'unknown', :redirect_path => :mock_redirect_path
194
+ response.should redirect_to('/mock_redirect_path/')
195
+ end
196
+
197
+ it "should pass an array of parent models when the :parents set and :redirect_path set" do
198
+ get :index, :id => 'unknown', :post_id => @post.id, :redirect_path => :mock_redirect_path
199
+ response.should redirect_to("/mock_redirect_path/#{@post.id}")
200
+ end
201
+ end
202
+ end
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe "re_breadcrumbs" do
4
+ include RSpec::Rails::HelperExampleGroup
5
+
6
+ it "should be accessible to rails apps by default" do
7
+ ActionView::Base.new.methods.should include("re_breadcrumbs")
8
+ end
9
+
10
+ it "should be html safe" do
11
+ helper.re_breadcrumbs("default value").should be_html_safe
12
+ helper.re_breadcrumbs("<default value>").should =~/&lt;default value&gt;/
13
+ end
14
+
15
+ it "should set the default class to re-breadcrumbs" do
16
+ helper.re_breadcrumbs("default value").should have_selector("div.re-breadcrumbs")
17
+ end
18
+
19
+ it "should show the links seperated by a <span>" do
20
+ helper.re_breadcrumbs("<div id=one>one</div>".html_safe, "<div id=two>two</div>".html_safe, "<div id=last>last</div>".html_safe).should have_selector("div.re-breadcrumbs") do |breadcrumbs|
21
+ breadcrumbs.should have_selector("div#one", :content => "one")
22
+ breadcrumbs.should have_selector("div#one + span.re-breadcrumbs-seperator", :content => ">")
23
+ breadcrumbs.should have_selector("div#one + span + div#two + span + em > div#last")
24
+ breadcrumbs.should have_selector("div#one + span + div#two", :content => "two")
25
+ breadcrumbs.should have_selector("div#one + span + div#two + span.re-breadcrumbs-seperator", :content => ">")
26
+ breadcrumbs.should have_selector("div#one + span + div#two + span + em", :content => "last")
27
+ end
28
+ end
29
+ end
30
+
31
+ describe "re_breadcrumbs_right" do
32
+ include RSpec::Rails::HelperExampleGroup
33
+
34
+ it "should be accessible to rails apps by default" do
35
+ ActionView::Base.new.methods.should include("re_breadcrumbs_right")
36
+ end
37
+
38
+ it "should be html safe" do
39
+ helper.re_breadcrumbs_right("default value").should be_html_safe
40
+ helper.re_breadcrumbs_right("<default value>").should =~/&lt;default value&gt;/
41
+ end
42
+
43
+ it "should set the default class to re-breadcrumbs" do
44
+ helper.re_breadcrumbs_right("default value").should have_selector("div.re-breadcrumbs") do |breadcrumbs|
45
+ breadcrumbs.should have_selector("div.re-breadcrumb-right", :content => "default value")
46
+ end
47
+ end
48
+
49
+ it "should show the links seperated by a <span>" do
50
+ helper.re_breadcrumbs_right("<div id=one>one</div>".html_safe, "<div id=two>two</div>".html_safe, "<div id=last>last</div>".html_safe, "<div id=right>right</div>".html_safe).should have_selector("div.re-breadcrumbs") do |breadcrumbs|
51
+ breadcrumbs.should have_selector("div#one", :content => "one")
52
+ breadcrumbs.should have_selector("div#one + span", :content => ">")
53
+ breadcrumbs.should have_selector("div#one + span + div#two + span + em > div#last")
54
+ breadcrumbs.should have_selector("div#one + span + div#two", :content => "two")
55
+ breadcrumbs.should have_selector("div#one + span + div#two + span", :content => ">")
56
+ breadcrumbs.should have_selector("div#one + span + div#two + span + em", :content => "last")
57
+ breadcrumbs.should have_selector("div#one + span + div#two + span + em + div.re-breadcrumb-right > div#right", :content => "right")
58
+ end
59
+ end
60
+ end
61
+
@@ -0,0 +1,4 @@
1
+ .bundle
2
+ db/*.sqlite3
3
+ log/*.log
4
+ tmp/**/*
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,13 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'rails', '3.0.0'
4
+ gem 'rules_view', :path => '../../'
5
+
6
+ gem 'sqlite3-ruby', :require => 'sqlite3'
7
+
8
+ group :development, :test do
9
+ gem "rspec-rails", ">= 2.0.0"
10
+ gem "webrat"
11
+
12
+ gem 'rcov'
13
+ end
@@ -0,0 +1,101 @@
1
+ PATH
2
+ remote: /Users/chris/Workspace/chris/Gems/rules_view
3
+ specs:
4
+ rules_view (0.0.1)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ abstract (1.0.0)
10
+ actionmailer (3.0.0)
11
+ actionpack (= 3.0.0)
12
+ mail (~> 2.2.5)
13
+ actionpack (3.0.0)
14
+ activemodel (= 3.0.0)
15
+ activesupport (= 3.0.0)
16
+ builder (~> 2.1.2)
17
+ erubis (~> 2.6.6)
18
+ i18n (~> 0.4.1)
19
+ rack (~> 1.2.1)
20
+ rack-mount (~> 0.6.12)
21
+ rack-test (~> 0.5.4)
22
+ tzinfo (~> 0.3.23)
23
+ activemodel (3.0.0)
24
+ activesupport (= 3.0.0)
25
+ builder (~> 2.1.2)
26
+ i18n (~> 0.4.1)
27
+ activerecord (3.0.0)
28
+ activemodel (= 3.0.0)
29
+ activesupport (= 3.0.0)
30
+ arel (~> 1.0.0)
31
+ tzinfo (~> 0.3.23)
32
+ activeresource (3.0.0)
33
+ activemodel (= 3.0.0)
34
+ activesupport (= 3.0.0)
35
+ activesupport (3.0.0)
36
+ arel (1.0.1)
37
+ activesupport (~> 3.0.0)
38
+ builder (2.1.2)
39
+ diff-lcs (1.1.2)
40
+ erubis (2.6.6)
41
+ abstract (>= 1.0.0)
42
+ i18n (0.4.1)
43
+ mail (2.2.7)
44
+ activesupport (>= 2.3.6)
45
+ mime-types
46
+ treetop (>= 1.4.5)
47
+ mime-types (1.16)
48
+ nokogiri (1.4.3.1)
49
+ polyglot (0.3.1)
50
+ rack (1.2.1)
51
+ rack-mount (0.6.13)
52
+ rack (>= 1.0.0)
53
+ rack-test (0.5.6)
54
+ rack (>= 1.0)
55
+ rails (3.0.0)
56
+ actionmailer (= 3.0.0)
57
+ actionpack (= 3.0.0)
58
+ activerecord (= 3.0.0)
59
+ activeresource (= 3.0.0)
60
+ activesupport (= 3.0.0)
61
+ bundler (~> 1.0.0)
62
+ railties (= 3.0.0)
63
+ railties (3.0.0)
64
+ actionpack (= 3.0.0)
65
+ activesupport (= 3.0.0)
66
+ rake (>= 0.8.4)
67
+ thor (~> 0.14.0)
68
+ rake (0.8.7)
69
+ rcov (0.9.9)
70
+ rspec (2.0.0)
71
+ rspec-core (= 2.0.0)
72
+ rspec-expectations (= 2.0.0)
73
+ rspec-mocks (= 2.0.0)
74
+ rspec-core (2.0.0)
75
+ rspec-expectations (2.0.0)
76
+ diff-lcs (>= 1.1.2)
77
+ rspec-mocks (2.0.0)
78
+ rspec-core (= 2.0.0)
79
+ rspec-expectations (= 2.0.0)
80
+ rspec-rails (2.0.0)
81
+ rspec (= 2.0.0)
82
+ sqlite3-ruby (1.3.1)
83
+ thor (0.14.3)
84
+ treetop (1.4.8)
85
+ polyglot (>= 0.3.1)
86
+ tzinfo (0.3.23)
87
+ webrat (0.7.1)
88
+ nokogiri (>= 1.2.0)
89
+ rack (>= 1.0)
90
+ rack-test (>= 0.5.3)
91
+
92
+ PLATFORMS
93
+ ruby
94
+
95
+ DEPENDENCIES
96
+ rails (= 3.0.0)
97
+ rcov
98
+ rspec-rails (>= 2.0.0)
99
+ rules_view!
100
+ sqlite3-ruby
101
+ webrat