weeler 0.0.4 → 1.0.0

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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rspec +1 -1
  4. data/.travis.yml +7 -2
  5. data/CHANGELOG.md +149 -1
  6. data/LICENSE.txt +2 -2
  7. data/README.md +83 -1
  8. data/app/.DS_Store +0 -0
  9. data/app/assets/javascripts/weeler/init.js.coffee +13 -2
  10. data/app/assets/javascripts/weeler/lib/notify.js +18 -0
  11. data/app/assets/javascripts/weeler/lib/sortable.js +9 -0
  12. data/app/assets/stylesheets/weeler/init.css.erb +2 -1
  13. data/app/assets/stylesheets/weeler/style.css.scss +22 -0
  14. data/app/controllers/concerns/weeler/section_seo.rb +16 -0
  15. data/app/controllers/weeler/administration_controller.rb +11 -0
  16. data/app/controllers/weeler/application_controller.rb +5 -0
  17. data/app/controllers/weeler/base_controller.rb +16 -12
  18. data/app/controllers/weeler/configuration_controller.rb +9 -0
  19. data/app/controllers/weeler/content_controller.rb +12 -0
  20. data/app/controllers/weeler/home_controller.rb +5 -2
  21. data/app/controllers/weeler/seo_items_controller.rb +24 -0
  22. data/app/controllers/weeler/settings_controller.rb +21 -0
  23. data/app/controllers/weeler/static_sections_controller.rb +19 -0
  24. data/app/controllers/weeler/translations_controller.rb +36 -18
  25. data/app/models/concerns/weeler/seoable.rb +61 -0
  26. data/app/models/concerns/weeler/sluger.rb +32 -0
  27. data/app/models/settings.rb +2 -0
  28. data/app/models/weeler/seo.rb +9 -0
  29. data/app/views/kaminari/{_first_page.html.erb → weeler/_first_page.html.erb} +1 -1
  30. data/app/views/kaminari/{_gap.html.erb → weeler/_gap.html.erb} +1 -1
  31. data/app/views/kaminari/{_last_page.html.erb → weeler/_last_page.html.erb} +1 -1
  32. data/app/views/kaminari/{_next_page.html.erb → weeler/_next_page.html.erb} +1 -1
  33. data/app/views/kaminari/{_page.html.erb → weeler/_page.html.erb} +0 -0
  34. data/app/views/kaminari/{_paginator.html.erb → weeler/_paginator.html.erb} +1 -1
  35. data/app/views/kaminari/{_prev_page.html.erb → weeler/_prev_page.html.erb} +1 -1
  36. data/app/views/layouts/weeler/base.html.haml +22 -0
  37. data/{lib/generators/weeler/templates/views/weeler/example/index.html.erb → app/views/weeler/administration/_filter.html.haml} +0 -0
  38. data/app/views/weeler/administration/_header_row.html.haml +5 -0
  39. data/app/views/weeler/administration/_row.html.haml +5 -0
  40. data/app/views/weeler/administration/_side_navbar.html.haml +8 -0
  41. data/app/views/weeler/administration/index.html.haml +17 -0
  42. data/app/views/weeler/administration/welcome.html.haml +5 -0
  43. data/app/views/weeler/base/_flash.html.haml +3 -0
  44. data/app/views/weeler/base/_footer.html.haml +2 -0
  45. data/app/views/weeler/base/_header_navbar.html.haml +19 -0
  46. data/app/views/weeler/base/_side_navbar.html.haml +2 -0
  47. data/app/views/weeler/configuration/_side_navbar.html.haml +12 -0
  48. data/app/views/weeler/configuration/index.html.haml +3 -0
  49. data/app/views/weeler/content/_error_messages.html.haml +5 -0
  50. data/app/views/weeler/content/_form.html.haml +6 -0
  51. data/app/views/weeler/content/_list.html.haml +23 -0
  52. data/app/views/weeler/content/_object_seo.html.haml +31 -0
  53. data/app/views/weeler/content/_side_navbar.html.haml +17 -0
  54. data/app/views/weeler/content/_sortable_list.html.haml +24 -0
  55. data/app/views/weeler/content/edit.html.haml +2 -0
  56. data/app/views/weeler/content/index.html.haml +10 -0
  57. data/app/views/weeler/content/new.html.haml +2 -0
  58. data/app/views/weeler/content/welcome.html.haml +3 -0
  59. data/app/views/weeler/home/_side_navbar.html.haml +8 -0
  60. data/app/views/weeler/home/about.html.haml +15 -0
  61. data/app/views/weeler/home/index.html.haml +3 -0
  62. data/app/views/weeler/seo_items/edit.html.haml +28 -0
  63. data/app/views/weeler/seo_items/index.html.haml +15 -0
  64. data/app/views/weeler/settings/index.html.haml +19 -0
  65. data/app/views/weeler/static_sections/show.html.haml +26 -0
  66. data/app/views/weeler/translations/_form.html.haml +27 -0
  67. data/app/views/weeler/translations/_translation.html.haml +11 -0
  68. data/app/views/weeler/translations/edit.html.haml +14 -0
  69. data/app/views/weeler/translations/index.html.haml +76 -0
  70. data/app/views/weeler/translations/new.html.haml +13 -0
  71. data/lib/.DS_Store +0 -0
  72. data/lib/generators/weeler/.DS_Store +0 -0
  73. data/lib/generators/weeler/install_generator.rb +30 -26
  74. data/lib/generators/weeler/templates/assets/javascripts/weeler/app/index.js +2 -0
  75. data/lib/generators/weeler/templates/assets/stylesheets/weeler/app/index.css +4 -0
  76. data/lib/generators/weeler/templates/controllers/weeler/application_controller.rb +6 -0
  77. data/lib/generators/weeler/templates/initializers/weeler.rb +30 -2
  78. data/lib/generators/weeler/templates/migrations/create_weeler_seos.rb +14 -0
  79. data/lib/generators/weeler/templates/migrations/create_weeler_settings.rb +17 -0
  80. data/lib/generators/weeler/templates/migrations/translate_weeler_seos.rb +15 -0
  81. data/lib/generators/weeler/templates/views/weeler/.keep +0 -0
  82. data/lib/i18n/backend/weeler.rb +102 -22
  83. data/lib/i18n/backend/weeler/dedupe.rb +31 -0
  84. data/lib/i18n/backend/weeler/exporter.rb +67 -5
  85. data/lib/i18n/backend/weeler/html_checker.rb +41 -0
  86. data/lib/i18n/backend/weeler/importer.rb +30 -13
  87. data/lib/i18n/backend/weeler/translation.rb +12 -7
  88. data/lib/i18n/humanize_missing_translations.rb +1 -0
  89. data/lib/i18n/weeler.rb +8 -2
  90. data/lib/tasks/weeler.rake +8 -0
  91. data/lib/weeler.rb +80 -7
  92. data/lib/weeler/.DS_Store +0 -0
  93. data/lib/weeler/action_controller/acts/restful.rb +185 -0
  94. data/lib/weeler/action_dispatch/routing/mapper.rb +87 -0
  95. data/lib/weeler/action_view/helpers/form_helper.rb +13 -0
  96. data/lib/weeler/action_view/helpers/image_form_helper.rb +84 -0
  97. data/lib/weeler/action_view/helpers/translation_helper.rb +15 -0
  98. data/lib/weeler/deprecator.rb +9 -0
  99. data/lib/weeler/engine.rb +18 -4
  100. data/lib/weeler/version.rb +7 -1
  101. data/rspec.html +426 -147
  102. data/spec/.DS_Store +0 -0
  103. data/spec/controllers/translations_controller_spec.rb +76 -5
  104. data/spec/dummy/app/controllers/weeler/posts_controller.rb +3 -7
  105. data/spec/dummy/app/models/post.rb +17 -0
  106. data/spec/dummy/app/models/translation.rb +2 -0
  107. data/spec/dummy/config/locales/en.yml +4 -1
  108. data/spec/dummy/config/routes.rb +3 -3
  109. data/spec/dummy/db/development.sqlite3 +0 -0
  110. data/spec/dummy/db/migrate/20140123083704_create_weeler_seos.rb +14 -0
  111. data/spec/dummy/db/migrate/20140123083705_create_weeler_settings.rb +17 -0
  112. data/spec/dummy/db/migrate/{20131015144900_create_weeler_translations.rb → 20140123083706_create_weeler_translations.rb} +0 -0
  113. data/spec/dummy/db/migrate/20140123083707_translate_weeler_seos.rb +15 -0
  114. data/spec/dummy/db/migrate/20140718103237_create_posts.rb +12 -0
  115. data/spec/dummy/db/migrate/20140726151210_create_translations.rb +12 -0
  116. data/spec/dummy/db/schema.rb +59 -1
  117. data/spec/dummy/db/test.sqlite3 +0 -0
  118. data/spec/dummy/log/development.log +221 -0
  119. data/spec/factories/dummy_posts.rb +6 -0
  120. data/spec/fixtures/.DS_Store +0 -0
  121. data/spec/routing/routes_spec.rb +4 -4
  122. data/spec/spec_helper.rb +14 -3
  123. data/spec/weeler/action_controller/acts/restful_spec.rb +155 -0
  124. data/spec/weeler/action_view/helpers/form_helper_spec.rb +26 -0
  125. data/spec/weeler/action_view/helpers/translation_helper_spec.rb +16 -0
  126. data/spec/weeler/i18n/backend/weeler/dedupe_spec.rb +21 -0
  127. data/spec/weeler/i18n/backend/weeler/exporter_spec.rb +2 -4
  128. data/spec/weeler/i18n/backend/weeler/importer_spec.rb +5 -2
  129. data/spec/weeler/i18n/backend/weeler_spec.rb +121 -23
  130. data/weeler.gemspec +15 -7
  131. metadata +207 -85
  132. data/.DS_Store +0 -0
  133. data/app/assets/stylesheets/weeler/vendor/bootstrap.css +0 -6086
  134. data/app/views/layouts/weeler/base.html.erb +0 -40
  135. data/app/views/weeler/home/about.html.erb +0 -16
  136. data/app/views/weeler/home/index.html.erb +0 -4
  137. data/app/views/weeler/shared/_flash.html.erb +0 -17
  138. data/app/views/weeler/shared/_footer.html.erb +0 -3
  139. data/app/views/weeler/shared/_header_navbar.html.erb +0 -18
  140. data/app/views/weeler/shared/_side_navbar.html.erb +0 -14
  141. data/app/views/weeler/translations/_form.html.erb +0 -43
  142. data/app/views/weeler/translations/_translation.html.erb +0 -11
  143. data/app/views/weeler/translations/edit.html.erb +0 -19
  144. data/app/views/weeler/translations/index.html.erb +0 -103
  145. data/app/views/weeler/translations/new.html.erb +0 -19
  146. data/lib/generators/weeler/templates/controllers/weeler/example_controller.rb.example +0 -7
  147. data/lib/i18n/backend/weeler/exporter/active_record.rb +0 -37
  148. data/lib/i18n/backend/weeler/exporter/active_record_relation.rb +0 -38
  149. data/lib/i18n/backend/weeler/store_procs.rb +0 -39
  150. data/lib/weeler/route_mapper.rb +0 -41
  151. data/spec/dummy/db/production.sqlite3 +0 -0
  152. data/spec/dummy/log/test.log +0 -88454
@@ -0,0 +1,87 @@
1
+ module Weeler
2
+ module ActionDispatch
3
+ module Routing
4
+ module Mapper
5
+
6
+ # Pass given resource to "resources" mount method and
7
+ # add extra routes for members and collections needed by weeler
8
+ #
9
+ # Options:
10
+ # * <tt>include_in_weeler_menu: true</tt> to include this resource in content section.
11
+ #
12
+ def weeler_resources(*args, &block)
13
+ add_menu_item args[0] if args[0].present? && args[1].present? && args[1][:include_in_weeler_menu] == true
14
+ resources *args do
15
+ yield if block_given?
16
+ end
17
+ end
18
+
19
+ # Mounts weeler at <tt>mount_location</tt> location.
20
+ # E.g.
21
+ # mount_weeler_at "root" do
22
+ # weeler_resources :posts, include_in_weeler_menu: true
23
+ # end
24
+ #
25
+ def mount_weeler_at mount_location, options={}, &block
26
+ Weeler.mount_location_namespace = mount_location.gsub("/", "").to_sym
27
+ scope mount_location do
28
+ namespace :weeler, :path => nil do
29
+ mount_configuration_controllers
30
+
31
+ weeler_resources :static_sections
32
+
33
+ resources :seos, :only => [:update]
34
+
35
+
36
+ root :to => "home#index"
37
+ get "/home/about"
38
+ get "/content", to: "content#index"
39
+ get "/administration", to: "administration#index"
40
+ get "/configuration", to: "configuration#index"
41
+
42
+ add_concerns
43
+
44
+ yield if block_given?
45
+ end
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ # Mount translations controller
52
+ def mount_configuration_controllers
53
+ resources :translations, :except => [:show] do
54
+ collection do
55
+ get :export
56
+ post :import
57
+ end
58
+ end
59
+ resources :seo_items
60
+ resources :settings, :only => [:index, :edit, :update]
61
+ end
62
+
63
+ # Ordable route concern for dynamic sorting and removing image
64
+ def add_concerns
65
+ concern :orderable do
66
+ collection do
67
+ post :order
68
+ end
69
+ end
70
+
71
+ concern :imageable do
72
+ member do
73
+ get "remove_image"
74
+ end
75
+ end
76
+ end
77
+
78
+ # Add route menu
79
+ def add_menu_item resource
80
+ Weeler.content_menu_items << {name: resource.to_s.capitalize, weeler_path: resource} unless Weeler.content_menu_items.select{ |item| item[:name] == resource.to_s.capitalize }.size > 0
81
+ Weeler.build_main_menu
82
+ end
83
+
84
+ end # Mapper
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,13 @@
1
+ require "weeler/action_view/helpers/image_form_helper"
2
+
3
+ module Weeler
4
+ module ActionView
5
+ module Helpers
6
+ module FormHelper
7
+ extend ActiveSupport::Concern
8
+
9
+ include ImageFormHelper
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,84 @@
1
+ module Weeler
2
+ module ActionView
3
+ module Helpers
4
+ module ImageFormHelper
5
+
6
+ # Weeler action view helper method.
7
+ # It creates file upload field with info and preview for image.
8
+ #
9
+ # e.g.
10
+ #
11
+ # <%= f.image_upload_field :image, size_info: "270x294" %>
12
+ #
13
+ # It creates:
14
+ # <div class="col-lg-10 col-md-10">
15
+ # <label class="col-lg-2 col-md-2 control-label" for="object_image">Image</label><div class="col-lg-5 col-md-5"><div class="row"><div class="col-lg-12 col-md-12"><input class="form-control" id="object_image" name="object[image]" type="file"></div></div><div class="row"><div class="col-lg-12 col-md-12">Size should be 270x294</div></div></div><div class="col-lg-5 col-md-5"><div class="row"><div class="col-lg-12 col-md-12"><img alt="Name" src="/images/name.jpg" style="height: 80px;"></div></div></div>
16
+ # </div>
17
+ #
18
+ # If you use another image handler than Paperclip, you can also pass <tt>image_url_method</tt> for image preview.
19
+ #
20
+ # Also with remove_image action in controller and route for that,
21
+ # it removes only image from object.
22
+ def image_upload_field(name, size_info: "200x80", image_url_method: nil)
23
+ self.multipart = true
24
+
25
+ image_url_method = "#{name.to_s}.url(\"original\")" unless image_url_method.present?
26
+
27
+ buffer = @template.label(@object_name, name, :class => "col-lg-2 col-md-2 control-label")
28
+
29
+ buffer += image_upload_field_file_block name, size_info
30
+ buffer += image_upload_field_preview_block name, image_url_method
31
+
32
+ buffer
33
+ end
34
+
35
+ private
36
+
37
+ def image_upload_field_file_block name, size_info
38
+ @template.content_tag :div, :class => "col-lg-5 col-md-5" do
39
+ sub_buffer = @template.content_tag :div, :class => "row" do
40
+ @template.content_tag :div, :class => "col-lg-12 col-md-12" do
41
+ @template.file_field @object_name, name, :class => 'form-control'
42
+ end
43
+ end
44
+ sub_buffer += @template.content_tag :div, :class => "row" do
45
+ @template.content_tag :div, :class => "col-lg-12 col-md-12" do
46
+ "Size should be #{size_info}"
47
+ end
48
+ end
49
+ sub_buffer
50
+ end
51
+ end
52
+
53
+ def image_upload_field_preview_block name, image_url_method
54
+ @template.content_tag :div, :class => "col-lg-5 col-md-5" do
55
+ if @object.instance_eval(name.to_s).present?
56
+ sub_buffer = @template.content_tag :div, :class => "row" do
57
+ @template.content_tag :div, :class => "col-lg-12 col-md-12" do
58
+ @template.image_tag @object.instance_eval(image_url_method), :style => "height: 80px;"
59
+ end
60
+ end
61
+
62
+ build_route = true
63
+ begin
64
+ @template.link_to("Remove", action: "remove_image")
65
+ rescue Exception => e
66
+ build_route = false
67
+ end
68
+
69
+ if build_route
70
+ sub_buffer += @template.content_tag :div, :class => "row" do
71
+ @template.content_tag :div, :class => "col-lg-12 col-md-12" do
72
+ @template.link_to("Remove", :action => "remove_image")
73
+ end
74
+ end
75
+ end
76
+ sub_buffer
77
+ end
78
+ end
79
+ end
80
+
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,15 @@
1
+ module Weeler
2
+ module ActionView
3
+ module Helpers
4
+ module TranslationHelper
5
+ extend ActiveSupport::Concern
6
+
7
+ def translate(key, options = {})
8
+ request.present? && request.params[:show_translation_keys] == "true" ? key : super(key, options)
9
+ end
10
+ alias :t :translate
11
+
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module Weeler
2
+ class Deprecator
3
+ def deprecation_warning(deprecated_method_name, version = nil, caller_backtrace = nil)
4
+ version = "#{Weeler::VERSION::MAJOR + 1}.0.0" if version.blank?
5
+ message = "DEPRECATION WARNING: #{deprecated_method_name} is deprecated and will be removed from Weeler #{version}."
6
+ Kernel.warn message
7
+ end
8
+ end
9
+ end
data/lib/weeler/engine.rb CHANGED
@@ -1,10 +1,24 @@
1
+ require "weeler/action_controller/acts/restful"
2
+ require "weeler/action_dispatch/routing/mapper"
3
+ require "weeler/action_view/helpers/form_helper"
4
+ require "weeler/action_view/helpers/translation_helper"
5
+
1
6
  module Weeler
7
+
2
8
  class Engine < ::Rails::Engine
9
+ config.railties_order = [:main_app, Weeler::Engine, :all]
3
10
  config.weeler = Weeler
4
- end
5
11
 
6
- ActiveSupport.on_load :action_controller do
7
- ActionDispatch::Routing::Mapper.send(:include, Weeler::RouteMapper)
12
+ config.i18n.available_locales = [:en] unless config.i18n.available_locales.present?
13
+
14
+ config.assets.precompile += ["weeler/init.js", "weeler/init.css"]
15
+
16
+ # Load extend Rails classes
17
+ ::ActionDispatch::Routing::Mapper.send(:include, Weeler::ActionDispatch::Routing::Mapper)
18
+ ::ActionController::Base.send(:include, Weeler::ActionController::Acts::Restful)
19
+ ::ActionView::Helpers::FormBuilder.send(:include, Weeler::ActionView::Helpers::FormHelper)
20
+
21
+ ::ActionView::Base.send(:include, Weeler::ActionView::Helpers::TranslationHelper)
8
22
  end
9
23
 
10
- end
24
+ end
@@ -1,3 +1,9 @@
1
1
  module Weeler
2
- VERSION = "0.0.4"
2
+ module VERSION
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ TINY = 0
6
+ PRE = nil
7
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
8
+ end
3
9
  end
data/rspec.html CHANGED
@@ -281,252 +281,531 @@ a {
281
281
  <div class="results">
282
282
  <div id="div_group_1" class="example_group passed">
283
283
  <dl style="margin-left: 0px;">
284
- <dt id="example_group_1" class="passed">I18n::Backend::Weeler::Importer</dt>
284
+ <dt id="example_group_1" class="passed">Weeler::ActionController::Acts::Restful</dt>
285
285
  </dl>
286
286
  </div>
287
287
  <div id="div_group_2" class="example_group passed">
288
288
  <dl style="margin-left: 15px;">
289
- <dt id="example_group_2" class="passed">import</dt>
289
+ <dt id="example_group_2" class="passed">acts_as_restful</dt>
290
290
  </dl>
291
291
  </div>
292
292
  <div id="div_group_3" class="example_group passed">
293
293
  <dl style="margin-left: 30px;">
294
- <dt id="example_group_3" class="passed">empty db</dt>
295
- <script type="text/javascript">moveProgressBar('2.1');</script>
296
- <dd class="example passed"><span class="passed_spec_name">returns nil if value is not file</span><span class='duration'>0.58697s</span></dd>
297
- <script type="text/javascript">moveProgressBar('4.3');</script>
298
- <dd class="example passed"><span class="passed_spec_name">returns value if value is in file</span><span class='duration'>0.19564s</span></dd>
299
- <script type="text/javascript">moveProgressBar('6.5');</script>
300
- <dd class="example passed"><span class="passed_spec_name">translation stores all translation in each locale</span><span class='duration'>0.16968s</span></dd>
294
+ <dt id="example_group_3" class="passed">permited title with array</dt>
301
295
  </dl>
302
296
  </div>
303
297
  <div id="div_group_4" class="example_group passed">
304
- <dl style="margin-left: 30px;">
305
- <dt id="example_group_4" class="passed">full db</dt>
306
- <script type="text/javascript">moveProgressBar('8.6');</script>
307
- <dd class="example passed"><span class="passed_spec_name">file import overrides value</span><span class='duration'>0.88694s</span></dd>
298
+ <dl style="margin-left: 45px;">
299
+ <dt id="example_group_4" class="passed">model</dt>
300
+ <script type="text/javascript">moveProgressBar('1.2');</script>
301
+ <dd class="example passed"><span class="passed_spec_name">returns current controller model</span><span class='duration'>0.04931s</span></dd>
308
302
  </dl>
309
303
  </div>
310
304
  <div id="div_group_5" class="example_group passed">
311
- <dl style="margin-left: 0px;">
312
- <dt id="example_group_5" class="passed">I18n::Backend::Weeler</dt>
305
+ <dl style="margin-left: 45px;">
306
+ <dt id="example_group_5" class="passed">actions</dt>
307
+ <script type="text/javascript">moveProgressBar('2.4');</script>
308
+ <dd class="example passed"><span class="passed_spec_name">POST #order</span><span class='duration'>0.04659s</span></dd>
313
309
  </dl>
314
310
  </div>
315
311
  <div id="div_group_6" class="example_group passed">
316
- <dl style="margin-left: 15px;">
317
- <dt id="example_group_6" class="passed">#lookup</dt>
318
- <script type="text/javascript">moveProgressBar('10.8');</script>
319
- <dd class="example passed"><span class="passed_spec_name">show warning</span><span class='duration'>0.00376s</span></dd>
312
+ <dl style="margin-left: 60px;">
313
+ <dt id="example_group_6" class="passed">POST #create</dt>
314
+ <script type="text/javascript">moveProgressBar('3.6');</script>
315
+ <dd class="example passed"><span class="passed_spec_name">redirects to edit path</span><span class='duration'>0.02378s</span></dd>
316
+ <script type="text/javascript">moveProgressBar('4.8');</script>
317
+ <dd class="example passed"><span class="passed_spec_name">sets only permited params</span><span class='duration'>0.02476s</span></dd>
320
318
  </dl>
321
319
  </div>
322
320
  <div id="div_group_7" class="example_group passed">
323
- <dl style="margin-left: 15px;">
324
- <dt id="example_group_7" class="passed">#store_translations</dt>
325
- <script type="text/javascript">moveProgressBar('13.0');</script>
326
- <dd class="example passed"><span class="passed_spec_name">can store translations with keys that are translations containing special chars</span><span class='duration'>0.01046s</span></dd>
327
- <script type="text/javascript">moveProgressBar('15.2');</script>
328
- <dd class="example passed"><span class="passed_spec_name">store_translations does not allow ambiguous keys (2)</span><span class='duration'>0.02359s</span></dd>
329
- <script type="text/javascript">moveProgressBar('17.3');</script>
330
- <dd class="example passed"><span class="passed_spec_name">store_translations does not allow ambiguous keys (1)</span><span class='duration'>0.10016s</span></dd>
321
+ <dl style="margin-left: 60px;">
322
+ <dt id="example_group_7" class="passed">GET #index</dt>
323
+ <script type="text/javascript">moveProgressBar('6.0');</script>
324
+ <dd class="example passed"><span class="passed_spec_name">returns success</span><span class='duration'>0.02457s</span></dd>
325
+ <script type="text/javascript">moveProgressBar('7.2');</script>
326
+ <dd class="example passed"><span class="passed_spec_name">assigns posts</span><span class='duration'>0.02244s</span></dd>
331
327
  </dl>
332
328
  </div>
333
329
  <div id="div_group_8" class="example_group passed">
334
- <dl style="margin-left: 15px;">
335
- <dt id="example_group_8" class="passed">groups</dt>
336
- <script type="text/javascript">moveProgressBar('19.5');</script>
337
- <dd class="example passed"><span class="passed_spec_name">returns 2 groups</span><span class='duration'>0.00429s</span></dd>
338
- <script type="text/javascript">moveProgressBar('21.7');</script>
339
- <dd class="example passed"><span class="passed_spec_name">returns ordered list</span><span class='duration'>0.00294s</span></dd>
330
+ <dl style="margin-left: 60px;">
331
+ <dt id="example_group_8" class="passed">GET #edit</dt>
332
+ <script type="text/javascript">moveProgressBar('8.4');</script>
333
+ <dd class="example passed"><span class="passed_spec_name">returns success status</span><span class='duration'>0.04046s</span></dd>
340
334
  </dl>
341
335
  </div>
342
336
  <div id="div_group_9" class="example_group passed">
343
- <dl style="margin-left: 15px;">
344
- <dt id="example_group_9" class="passed">#store_translations</dt>
345
- <script type="text/javascript">moveProgressBar('23.9');</script>
346
- <dd class="example passed"><span class="passed_spec_name">finds one locale</span><span class='duration'>0.02427s</span></dd>
347
- <script type="text/javascript">moveProgressBar('26.0');</script>
348
- <dd class="example passed"><span class="passed_spec_name">finds all existing locales if theres is translations in other locale</span><span class='duration'>0.01160s</span></dd>
337
+ <dl style="margin-left: 60px;">
338
+ <dt id="example_group_9" class="passed">DELETE #destroy</dt>
339
+ <script type="text/javascript">moveProgressBar('9.6');</script>
340
+ <dd class="example passed"><span class="passed_spec_name">destroys item</span><span class='duration'>0.03859s</span></dd>
349
341
  </dl>
350
342
  </div>
351
343
  <div id="div_group_10" class="example_group passed">
352
- <dl style="margin-left: 15px;">
353
- <dt id="example_group_10" class="passed">#interpolations</dt>
354
- <script type="text/javascript">moveProgressBar('28.2');</script>
355
- <dd class="example passed"><span class="passed_spec_name">can persist</span><span class='duration'>0.00893s</span></dd>
344
+ <dl style="margin-left: 60px;">
345
+ <dt id="example_group_10" class="passed">PUT #update</dt>
346
+ <script type="text/javascript">moveProgressBar('10.8');</script>
347
+ <dd class="example passed"><span class="passed_spec_name">sets only permited params</span><span class='duration'>0.02333s</span></dd>
356
348
  </dl>
357
349
  </div>
358
350
  <div id="div_group_11" class="example_group passed">
359
- <dl style="margin-left: 15px;">
360
- <dt id="example_group_11" class="passed">#value</dt>
361
- <script type="text/javascript">moveProgressBar('30.4');</script>
362
- <dd class="example passed"><span class="passed_spec_name">returns boolean if translation boolean</span><span class='duration'>0.01134s</span></dd>
363
- <script type="text/javascript">moveProgressBar('32.6');</script>
364
- <dd class="example passed"><span class="passed_spec_name">runs kernel if translation is_proc</span><span class='duration'>0.00962s</span></dd>
351
+ <dl style="margin-left: 60px;">
352
+ <dt id="example_group_11" class="passed">GET #new</dt>
353
+ <script type="text/javascript">moveProgressBar('12.0');</script>
354
+ <dd class="example passed"><span class="passed_spec_name">returns success status</span><span class='duration'>0.02536s</span></dd>
365
355
  </dl>
366
356
  </div>
367
357
  <div id="div_group_12" class="example_group passed">
368
- <dl style="margin-left: 15px;">
369
- <dt id="example_group_12" class="passed">#lookup</dt>
370
- <script type="text/javascript">moveProgressBar('34.7');</script>
371
- <dd class="example passed"><span class="passed_spec_name">returns translation</span><span class='duration'>0.00948s</span></dd>
358
+ <dl style="margin-left: 30px;">
359
+ <dt id="example_group_12" class="passed">permited all with block</dt>
372
360
  </dl>
373
361
  </div>
374
362
  <div id="div_group_13" class="example_group passed">
375
- <dl style="margin-left: 30px;">
376
- <dt id="example_group_13" class="passed">missing translations</dt>
377
- <script type="text/javascript">moveProgressBar('36.9');</script>
378
- <dd class="example passed"><span class="passed_spec_name">creates no stub for base key in pluralization</span><span class='duration'>0.01710s</span></dd>
379
- <script type="text/javascript">moveProgressBar('39.1');</script>
380
- <dd class="example passed"><span class="passed_spec_name">creates a stub per pluralization when a custom separator is used</span><span class='duration'>0.02004s</span></dd>
381
- <script type="text/javascript">moveProgressBar('41.3');</script>
382
- <dd class="example passed"><span class="passed_spec_name">creates a stub when a custom separator is used</span><span class='duration'>0.01689s</span></dd>
383
- <script type="text/javascript">moveProgressBar('43.4');</script>
384
- <dd class="example passed"><span class="passed_spec_name">lookup does not persist the key twice</span><span class='duration'>0.01191s</span></dd>
385
- <script type="text/javascript">moveProgressBar('45.6');</script>
386
- <dd class="example passed"><span class="passed_spec_name">persists the key</span><span class='duration'>0.01077s</span></dd>
387
- <script type="text/javascript">moveProgressBar('47.8');</script>
388
- <dd class="example passed"><span class="passed_spec_name">creates a stub when a custom separator is used and the key contains the flatten separator (a dot character)</span><span class='duration'>0.01611s</span></dd>
389
- <script type="text/javascript">moveProgressBar('50.0');</script>
390
- <dd class="example passed"><span class="passed_spec_name">lookup persists interpolation keys when looked up directly</span><span class='duration'>0.01022s</span></dd>
391
- <script type="text/javascript">moveProgressBar('52.1');</script>
392
- <dd class="example passed"><span class="passed_spec_name">creates one stub per pluralization</span><span class='duration'>0.01830s</span></dd>
363
+ <dl style="margin-left: 45px;">
364
+ <dt id="example_group_13" class="passed">actions</dt>
393
365
  </dl>
394
366
  </div>
395
367
  <div id="div_group_14" class="example_group passed">
396
- <dl style="margin-left: 0px;">
397
- <dt id="example_group_14" class="passed">I18n::HumanizeMissingTranslations</dt>
368
+ <dl style="margin-left: 60px;">
369
+ <dt id="example_group_14" class="passed">POST #create</dt>
370
+ <script type="text/javascript">moveProgressBar('13.2');</script>
371
+ <dd class="example passed"><span class="passed_spec_name">sets only permited params</span><span class='duration'>0.02868s</span></dd>
398
372
  </dl>
399
373
  </div>
400
374
  <div id="div_group_15" class="example_group passed">
401
- <dl style="margin-left: 15px;">
402
- <dt id="example_group_15" class="passed">.call</dt>
375
+ <dl style="margin-left: 30px;">
376
+ <dt id="example_group_15" class="passed">no permited params</dt>
403
377
  </dl>
404
378
  </div>
405
379
  <div id="div_group_16" class="example_group passed">
406
- <dl style="margin-left: 30px;">
407
- <dt id="example_group_16" class="passed">when exception is I18n::MissingTranslation</dt>
408
- <script type="text/javascript">moveProgressBar('54.3');</script>
409
- <dd class="example passed"><span class="passed_spec_name">humanizes missing translations</span><span class='duration'>0.00862s</span></dd>
380
+ <dl style="margin-left: 45px;">
381
+ <dt id="example_group_16" class="passed">actions</dt>
410
382
  </dl>
411
383
  </div>
412
384
  <div id="div_group_17" class="example_group passed">
413
- <dl style="margin-left: 30px;">
414
- <dt id="example_group_17" class="passed">when exception is not I18n::MissingTranslation</dt>
415
- <script type="text/javascript">moveProgressBar('56.5');</script>
416
- <dd class="example passed"><span class="passed_spec_name">does not intercept it</span><span class='duration'>0.01012s</span></dd>
385
+ <dl style="margin-left: 60px;">
386
+ <dt id="example_group_17" class="passed">POST #create</dt>
387
+ <script type="text/javascript">moveProgressBar('14.4');</script>
388
+ <dd class="example passed"><span class="passed_spec_name">sets only permited params</span><span class='duration'>0.02906s</span></dd>
389
+ <script type="text/javascript">moveProgressBar('15.6');</script>
390
+ <dd class="example passed"><span class="passed_spec_name">warns developer</span><span class='duration'>0.02857s</span></dd>
417
391
  </dl>
418
392
  </div>
419
393
  <div id="div_group_18" class="example_group passed">
420
- <dl style="margin-left: 0px;">
421
- <dt id="example_group_18" class="passed">#&lt;ActionDispatch::Routing::RouteSet:0x007f8502f4ca98&gt;</dt>
394
+ <dl style="margin-left: 30px;">
395
+ <dt id="example_group_18" class="passed">permited all with block</dt>
422
396
  </dl>
423
397
  </div>
424
398
  <div id="div_group_19" class="example_group passed">
425
- <dl style="margin-left: 15px;">
426
- <dt id="example_group_19" class="passed">#weeler_resources</dt>
427
- <script type="text/javascript">moveProgressBar('58.6');</script>
428
- <dd class="example passed"><span class="passed_spec_name">mounts resource edit route</span><span class='duration'>0.09011s</span></dd>
429
- <script type="text/javascript">moveProgressBar('60.8');</script>
430
- <dd class="example passed"><span class="passed_spec_name">mounts resource update route</span><span class='duration'>0.02388s</span></dd>
431
- <script type="text/javascript">moveProgressBar('63.0');</script>
432
- <dd class="example passed"><span class="passed_spec_name">mounts resource show route</span><span class='duration'>0.02833s</span></dd>
433
- <script type="text/javascript">moveProgressBar('65.2');</script>
434
- <dd class="example passed"><span class="passed_spec_name">mounts resource create route</span><span class='duration'>0.02147s</span></dd>
435
- <script type="text/javascript">moveProgressBar('67.3');</script>
436
- <dd class="example passed"><span class="passed_spec_name">mounts resources index route</span><span class='duration'>0.02088s</span></dd>
437
- <script type="text/javascript">moveProgressBar('69.5');</script>
438
- <dd class="example passed"><span class="passed_spec_name">mounts resource new route</span><span class='duration'>0.02322s</span></dd>
439
- <script type="text/javascript">moveProgressBar('71.7');</script>
440
- <dd class="example passed"><span class="passed_spec_name">mounts resource destroy route</span><span class='duration'>0.02233s</span></dd>
399
+ <dl style="margin-left: 45px;">
400
+ <dt id="example_group_19" class="passed">GET #index</dt>
401
+ <script type="text/javascript">moveProgressBar('16.8');</script>
402
+ <dd class="example passed"><span class="passed_spec_name">users order by for ordering</span><span class='duration'>0.02369s</span></dd>
441
403
  </dl>
442
404
  </div>
443
405
  <div id="div_group_20" class="example_group passed">
444
- <dl style="margin-left: 30px;">
445
- <dt id="example_group_20" class="passed">when destroy route is skiped within with only: option</dt>
446
- <script type="text/javascript">moveProgressBar('73.9');</script>
447
- <dd class="example passed"><span class="passed_spec_name">does not mount destroy confirm route</span><span class='duration'>0.02884s</span></dd>
406
+ <dl style="margin-left: 0px;">
407
+ <dt id="example_group_20" class="passed">Weeler::ActionView::Helpers::FormHelper</dt>
448
408
  </dl>
449
409
  </div>
450
410
  <div id="div_group_21" class="example_group passed">
451
- <dl style="margin-left: 30px;">
452
- <dt id="example_group_21" class="passed">when custom block given</dt>
453
- <script type="text/javascript">moveProgressBar('76.0');</script>
454
- <dd class="example passed"><span class="passed_spec_name">calls it within resources method</span><span class='duration'>0.03133s</span></dd>
411
+ <dl style="margin-left: 15px;">
412
+ <dt id="example_group_21" class="passed">image_upload_field</dt>
413
+ <script type="text/javascript">moveProgressBar('18.0');</script>
414
+ <dd class="example passed"><span class="passed_spec_name">create file field</span><span class='duration'>0.03198s</span></dd>
415
+ <script type="text/javascript">moveProgressBar('19.2');</script>
416
+ <dd class="example passed"><span class="passed_spec_name">creates img preview tag</span><span class='duration'>0.01210s</span></dd>
417
+ <script type="text/javascript">moveProgressBar('20.4');</script>
418
+ <dd class="example passed"><span class="passed_spec_name">creates a label</span><span class='duration'>0.01299s</span></dd>
455
419
  </dl>
456
420
  </div>
457
421
  <div id="div_group_22" class="example_group passed">
458
- <dl style="margin-left: 15px;">
459
- <dt id="example_group_22" class="passed">#add_menu_item</dt>
460
- <script type="text/javascript">moveProgressBar('78.2');</script>
461
- <dd class="example passed"><span class="passed_spec_name">adds resource to weeler menu item</span><span class='duration'>0.01680s</span></dd>
422
+ <dl style="margin-left: 0px;">
423
+ <dt id="example_group_22" class="passed">I18n::Backend::Weeler::Importer</dt>
462
424
  </dl>
463
425
  </div>
464
426
  <div id="div_group_23" class="example_group passed">
465
427
  <dl style="margin-left: 15px;">
466
- <dt id="example_group_23" class="passed">#mount Weeler::Engine</dt>
467
- <script type="text/javascript">moveProgressBar('80.4');</script>
468
- <dd class="example passed"><span class="passed_spec_name">/weeler returns home</span><span class='duration'>0.02213s</span></dd>
428
+ <dt id="example_group_23" class="passed">import</dt>
469
429
  </dl>
470
430
  </div>
471
431
  <div id="div_group_24" class="example_group passed">
472
- <dl style="margin-left: 0px;">
473
- <dt id="example_group_24" class="passed">I18n::Backend::Weeler::Exporter</dt>
432
+ <dl style="margin-left: 30px;">
433
+ <dt id="example_group_24" class="passed">empty db</dt>
434
+ <script type="text/javascript">moveProgressBar('21.6');</script>
435
+ <dd class="example passed"><span class="passed_spec_name">translation stores all translation in each locale</span><span class='duration'>0.19230s</span></dd>
436
+ <script type="text/javascript">moveProgressBar('22.8');</script>
437
+ <dd class="example passed"><span class="passed_spec_name">returns nil if value is not file</span><span class='duration'>0.12812s</span></dd>
438
+ <script type="text/javascript">moveProgressBar('24.0');</script>
439
+ <dd class="example passed"><span class="passed_spec_name">returns value if value is in file</span><span class='duration'>0.14954s</span></dd>
474
440
  </dl>
475
441
  </div>
476
442
  <div id="div_group_25" class="example_group passed">
477
- <dl style="margin-left: 15px;">
478
- <dt id="example_group_25" class="passed">as_xlsx_package</dt>
443
+ <dl style="margin-left: 30px;">
444
+ <dt id="example_group_25" class="passed">full db</dt>
445
+ <script type="text/javascript">moveProgressBar('25.3');</script>
446
+ <dd class="example passed"><span class="passed_spec_name">file import overrides value</span><span class='duration'>0.16266s</span></dd>
479
447
  </dl>
480
448
  </div>
481
449
  <div id="div_group_26" class="example_group passed">
482
- <dl style="margin-left: 30px;">
483
- <dt id="example_group_26" class="passed">all translations</dt>
484
- <script type="text/javascript">moveProgressBar('82.6');</script>
485
- <dd class="example passed"><span class="passed_spec_name">should have 3 rows</span><span class='duration'>0.00417s</span></dd>
486
- <script type="text/javascript">moveProgressBar('84.7');</script>
487
- <dd class="example passed"><span class="passed_spec_name">other row with one translation</span><span class='duration'>0.00298s</span></dd>
488
- <script type="text/javascript">moveProgressBar('86.9');</script>
489
- <dd class="example passed"><span class="passed_spec_name">first row should be title</span><span class='duration'>0.00296s</span></dd>
490
- <script type="text/javascript">moveProgressBar('89.1');</script>
491
- <dd class="example passed"><span class="passed_spec_name">other row with two translation</span><span class='duration'>0.00406s</span></dd>
450
+ <dl style="margin-left: 0px;">
451
+ <dt id="example_group_26" class="passed">Weeler::ActionView::Helpers::TranslationHelper</dt>
492
452
  </dl>
493
453
  </div>
494
454
  <div id="div_group_27" class="example_group passed">
495
- <dl style="margin-left: 30px;">
496
- <dt id="example_group_27" class="passed">selected translations</dt>
497
- <script type="text/javascript">moveProgressBar('91.3');</script>
498
- <dd class="example passed"><span class="passed_spec_name">other row with one translation</span><span class='duration'>0.00464s</span></dd>
499
- <script type="text/javascript">moveProgressBar('93.4');</script>
500
- <dd class="example passed"><span class="passed_spec_name">first row should be title</span><span class='duration'>0.00315s</span></dd>
501
- <script type="text/javascript">moveProgressBar('95.6');</script>
502
- <dd class="example passed"><span class="passed_spec_name">should have 2 rows</span><span class='duration'>0.00336s</span></dd>
455
+ <dl style="margin-left: 15px;">
456
+ <dt id="example_group_27" class="passed">translate</dt>
457
+ <script type="text/javascript">moveProgressBar('26.5');</script>
458
+ <dd class="example passed"><span class="passed_spec_name">dont renders key</span><span class='duration'>0.01503s</span></dd>
503
459
  </dl>
504
460
  </div>
505
461
  <div id="div_group_28" class="example_group passed">
506
462
  <dl style="margin-left: 0px;">
507
- <dt id="example_group_28" class="passed">Weeler::TranslationsController</dt>
463
+ <dt id="example_group_28" class="passed">#&lt;ActionDispatch::Routing::RouteSet:0x007fec696bc418&gt;</dt>
508
464
  </dl>
509
465
  </div>
510
466
  <div id="div_group_29" class="example_group passed">
511
467
  <dl style="margin-left: 15px;">
512
- <dt id="example_group_29" class="passed">#create</dt>
513
- <script type="text/javascript">moveProgressBar('97.8');</script>
514
- <dd class="example passed"><span class="passed_spec_name">creates translation in DB</span><span class='duration'>0.06616s</span></dd>
468
+ <dt id="example_group_29" class="passed">#mount Weeler::Engine</dt>
469
+ <script type="text/javascript">moveProgressBar('27.7');</script>
470
+ <dd class="example passed"><span class="passed_spec_name">/weeler returns home</span><span class='duration'>0.04650s</span></dd>
515
471
  </dl>
516
472
  </div>
517
473
  <div id="div_group_30" class="example_group passed">
518
474
  <dl style="margin-left: 15px;">
519
- <dt id="example_group_30" class="passed">GET #index</dt>
475
+ <dt id="example_group_30" class="passed">#weeler_resources</dt>
476
+ <script type="text/javascript">moveProgressBar('28.9');</script>
477
+ <dd class="example passed"><span class="passed_spec_name">mounts resource create route</span><span class='duration'>0.04815s</span></dd>
478
+ <script type="text/javascript">moveProgressBar('30.1');</script>
479
+ <dd class="example passed"><span class="passed_spec_name">mounts resource new route</span><span class='duration'>0.05438s</span></dd>
480
+ <script type="text/javascript">moveProgressBar('31.3');</script>
481
+ <dd class="example passed"><span class="passed_spec_name">mounts resources index route</span><span class='duration'>0.04228s</span></dd>
482
+ <script type="text/javascript">moveProgressBar('32.5');</script>
483
+ <dd class="example passed"><span class="passed_spec_name">mounts resource update route</span><span class='duration'>0.04301s</span></dd>
484
+ <script type="text/javascript">moveProgressBar('33.7');</script>
485
+ <dd class="example passed"><span class="passed_spec_name">mounts resource edit route</span><span class='duration'>0.04949s</span></dd>
486
+ <script type="text/javascript">moveProgressBar('34.9');</script>
487
+ <dd class="example passed"><span class="passed_spec_name">mounts resource show route</span><span class='duration'>0.04889s</span></dd>
488
+ <script type="text/javascript">moveProgressBar('36.1');</script>
489
+ <dd class="example passed"><span class="passed_spec_name">mounts resource destroy route</span><span class='duration'>0.04338s</span></dd>
490
+ </dl>
491
+ </div>
492
+ <div id="div_group_31" class="example_group passed">
493
+ <dl style="margin-left: 30px;">
494
+ <dt id="example_group_31" class="passed">when destroy route is skiped within with only: option</dt>
495
+ <script type="text/javascript">moveProgressBar('37.3');</script>
496
+ <dd class="example passed"><span class="passed_spec_name">does not mount destroy confirm route</span><span class='duration'>0.06783s</span></dd>
497
+ </dl>
498
+ </div>
499
+ <div id="div_group_32" class="example_group passed">
500
+ <dl style="margin-left: 30px;">
501
+ <dt id="example_group_32" class="passed">when custom block given</dt>
502
+ <script type="text/javascript">moveProgressBar('38.5');</script>
503
+ <dd class="example passed"><span class="passed_spec_name">calls it within resources method</span><span class='duration'>0.07164s</span></dd>
504
+ </dl>
505
+ </div>
506
+ <div id="div_group_33" class="example_group passed">
507
+ <dl style="margin-left: 15px;">
508
+ <dt id="example_group_33" class="passed">#add_menu_item</dt>
509
+ <script type="text/javascript">moveProgressBar('39.7');</script>
510
+ <dd class="example passed"><span class="passed_spec_name">adds resource to weeler menu item</span><span class='duration'>0.03331s</span></dd>
511
+ </dl>
512
+ </div>
513
+ <div id="div_group_34" class="example_group passed">
514
+ <dl style="margin-left: 0px;">
515
+ <dt id="example_group_34" class="passed">I18n::Backend::Weeler::Exporter</dt>
516
+ </dl>
517
+ </div>
518
+ <div id="div_group_35" class="example_group passed">
519
+ <dl style="margin-left: 15px;">
520
+ <dt id="example_group_35" class="passed">as_xlsx_package</dt>
521
+ </dl>
522
+ </div>
523
+ <div id="div_group_36" class="example_group passed">
524
+ <dl style="margin-left: 30px;">
525
+ <dt id="example_group_36" class="passed">all translations</dt>
526
+ <script type="text/javascript">moveProgressBar('40.9');</script>
527
+ <dd class="example passed"><span class="passed_spec_name">should have 3 rows</span><span class='duration'>0.00957s</span></dd>
528
+ <script type="text/javascript">moveProgressBar('42.1');</script>
529
+ <dd class="example passed"><span class="passed_spec_name">other row with one translation</span><span class='duration'>0.00745s</span></dd>
530
+ <script type="text/javascript">moveProgressBar('43.3');</script>
531
+ <dd class="example passed"><span class="passed_spec_name">first row should be title</span><span class='duration'>0.00688s</span></dd>
532
+ <script type="text/javascript">moveProgressBar('44.5');</script>
533
+ <dd class="example passed"><span class="passed_spec_name">other row with two translation</span><span class='duration'>0.00651s</span></dd>
534
+ </dl>
535
+ </div>
536
+ <div id="div_group_37" class="example_group passed">
537
+ <dl style="margin-left: 30px;">
538
+ <dt id="example_group_37" class="passed">selected translations</dt>
539
+ <script type="text/javascript">moveProgressBar('45.7');</script>
540
+ <dd class="example passed"><span class="passed_spec_name">should have 2 rows</span><span class='duration'>0.01150s</span></dd>
541
+ <script type="text/javascript">moveProgressBar('46.9');</script>
542
+ <dd class="example passed"><span class="passed_spec_name">other row with one translation</span><span class='duration'>0.00803s</span></dd>
543
+ <script type="text/javascript">moveProgressBar('48.1');</script>
544
+ <dd class="example passed"><span class="passed_spec_name">first row should be title</span><span class='duration'>0.00699s</span></dd>
545
+ </dl>
546
+ </div>
547
+ <div id="div_group_38" class="example_group passed">
548
+ <dl style="margin-left: 0px;">
549
+ <dt id="example_group_38" class="passed">I18n::Backend::Weeler</dt>
550
+ </dl>
551
+ </div>
552
+ <div id="div_group_39" class="example_group passed">
553
+ <dl style="margin-left: 15px;">
554
+ <dt id="example_group_39" class="passed">#available_locales</dt>
555
+ <script type="text/javascript">moveProgressBar('49.3');</script>
556
+ <dd class="example passed"><span class="passed_spec_name">finds one locale</span><span class='duration'>0.00720s</span></dd>
557
+ </dl>
558
+ </div>
559
+ <div id="div_group_40" class="example_group passed">
560
+ <dl style="margin-left: 15px;">
561
+ <dt id="example_group_40" class="passed">#reload_cache</dt>
562
+ <script type="text/javascript">moveProgressBar('50.6');</script>
563
+ <dd class="example passed"><span class="passed_spec_name">clears translations cache</span><span class='duration'>0.01688s</span></dd>
564
+ <script type="text/javascript">moveProgressBar('51.8');</script>
565
+ <dd class="example passed"><span class="passed_spec_name">loads all translated data to cache</span><span class='duration'>0.01732s</span></dd>
566
+ <script type="text/javascript">moveProgressBar('53.0');</script>
567
+ <dd class="example passed"><span class="passed_spec_name">writes last translations update timestamp to cache</span><span class='duration'>0.01409s</span></dd>
568
+ </dl>
569
+ </div>
570
+ <div id="div_group_41" class="example_group passed">
571
+ <dl style="margin-left: 15px;">
572
+ <dt id="example_group_41" class="passed">groups</dt>
573
+ <script type="text/javascript">moveProgressBar('54.2');</script>
574
+ <dd class="example passed"><span class="passed_spec_name">returns 2 groups</span><span class='duration'>0.01101s</span></dd>
575
+ <script type="text/javascript">moveProgressBar('55.4');</script>
576
+ <dd class="example passed"><span class="passed_spec_name">returns ordered list</span><span class='duration'>0.00833s</span></dd>
577
+ </dl>
578
+ </div>
579
+ <div id="div_group_42" class="example_group passed">
580
+ <dl style="margin-left: 15px;">
581
+ <dt id="example_group_42" class="passed">#value</dt>
582
+ <script type="text/javascript">moveProgressBar('56.6');</script>
583
+ <dd class="example passed"><span class="passed_spec_name">returns boolean if translation boolean</span><span class='duration'>0.01859s</span></dd>
584
+ <script type="text/javascript">moveProgressBar('57.8');</script>
585
+ <dd class="example passed"><span class="passed_spec_name">runs kernel if translation is_proc</span><span class='duration'>0.01242s</span></dd>
586
+ </dl>
587
+ </div>
588
+ <div id="div_group_43" class="example_group passed">
589
+ <dl style="margin-left: 15px;">
590
+ <dt id="example_group_43" class="passed">#interpolations</dt>
591
+ <script type="text/javascript">moveProgressBar('59.0');</script>
592
+ <dd class="example passed"><span class="passed_spec_name">can persist</span><span class='duration'>0.01358s</span></dd>
593
+ </dl>
594
+ </div>
595
+ <div id="div_group_44" class="example_group passed">
596
+ <dl style="margin-left: 15px;">
597
+ <dt id="example_group_44" class="passed">#store_translations</dt>
598
+ <script type="text/javascript">moveProgressBar('60.2');</script>
599
+ <dd class="example passed"><span class="passed_spec_name">store_translations does not allow ambiguous keys (1)</span><span class='duration'>0.02871s</span></dd>
600
+ <script type="text/javascript">moveProgressBar('61.4');</script>
601
+ <dd class="example passed"><span class="passed_spec_name">can store translations with keys that are translations containing special chars</span><span class='duration'>0.01382s</span></dd>
602
+ <script type="text/javascript">moveProgressBar('62.6');</script>
603
+ <dd class="example passed"><span class="passed_spec_name">store_translations does not allow ambiguous keys (2)</span><span class='duration'>0.03109s</span></dd>
604
+ </dl>
605
+ </div>
606
+ <div id="div_group_45" class="example_group passed">
607
+ <dl style="margin-left: 15px;">
608
+ <dt id="example_group_45" class="passed">#html?</dt>
609
+ <script type="text/javascript">moveProgressBar('63.8');</script>
610
+ <dd class="example passed"><span class="passed_spec_name">is true if key is html</span><span class='duration'>0.01106s</span></dd>
611
+ <script type="text/javascript">moveProgressBar('65.0');</script>
612
+ <dd class="example passed"><span class="passed_spec_name">is false if value not contains html</span><span class='duration'>0.01613s</span></dd>
613
+ <script type="text/javascript">moveProgressBar('66.2');</script>
614
+ <dd class="example passed"><span class="passed_spec_name">is true if value contains html</span><span class='duration'>0.00706s</span></dd>
615
+ </dl>
616
+ </div>
617
+ <div id="div_group_46" class="example_group passed">
618
+ <dl style="margin-left: 15px;">
619
+ <dt id="example_group_46" class="passed">#lookup</dt>
620
+ <script type="text/javascript">moveProgressBar('67.4');</script>
621
+ <dd class="example passed"><span class="passed_spec_name">show warning</span><span class='duration'>0.00745s</span></dd>
622
+ <script type="text/javascript">moveProgressBar('68.6');</script>
623
+ <dd class="example passed"><span class="passed_spec_name">returns translation</span><span class='duration'>0.01380s</span></dd>
624
+ </dl>
625
+ </div>
626
+ <div id="div_group_47" class="example_group passed">
627
+ <dl style="margin-left: 30px;">
628
+ <dt id="example_group_47" class="passed">cache</dt>
629
+ </dl>
630
+ </div>
631
+ <div id="div_group_48" class="example_group passed">
632
+ <dl style="margin-left: 45px;">
633
+ <dt id="example_group_48" class="passed">differs from settings timestamp</dt>
634
+ <script type="text/javascript">moveProgressBar('69.8');</script>
635
+ <dd class="example passed"><span class="passed_spec_name">reloads cache</span><span class='duration'>0.01795s</span></dd>
636
+ </dl>
637
+ </div>
638
+ <div id="div_group_49" class="example_group passed">
639
+ <dl style="margin-left: 45px;">
640
+ <dt id="example_group_49" class="passed">is same as updates timestamp</dt>
641
+ <script type="text/javascript">moveProgressBar('71.0');</script>
642
+ <dd class="example passed"><span class="passed_spec_name">does not reload cache</span><span class='duration'>0.01303s</span></dd>
643
+ </dl>
644
+ </div>
645
+ <div id="div_group_50" class="example_group passed">
646
+ <dl style="margin-left: 30px;">
647
+ <dt id="example_group_50" class="passed">missing translations</dt>
648
+ <script type="text/javascript">moveProgressBar('72.2');</script>
649
+ <dd class="example passed"><span class="passed_spec_name">creates a stub when a custom separator is used and the key contains the flatten separator (a dot character)</span><span class='duration'>0.02078s</span></dd>
650
+ <script type="text/javascript">moveProgressBar('73.4');</script>
651
+ <dd class="example passed"><span class="passed_spec_name">lookup does not persist the key twice</span><span class='duration'>0.01567s</span></dd>
652
+ <script type="text/javascript">moveProgressBar('74.6');</script>
653
+ <dd class="example passed"><span class="passed_spec_name">lookup persists interpolation keys when looked up directly</span><span class='duration'>0.01692s</span></dd>
654
+ <script type="text/javascript">moveProgressBar('75.9');</script>
655
+ <dd class="example passed"><span class="passed_spec_name">creates a stub when a custom separator is used</span><span class='duration'>0.01986s</span></dd>
656
+ <script type="text/javascript">moveProgressBar('77.1');</script>
657
+ <dd class="example passed"><span class="passed_spec_name">persists the key</span><span class='duration'>0.01581s</span></dd>
658
+ <script type="text/javascript">moveProgressBar('78.3');</script>
659
+ <dd class="example passed"><span class="passed_spec_name">creates one stub per pluralization</span><span class='duration'>0.02406s</span></dd>
660
+ <script type="text/javascript">moveProgressBar('79.5');</script>
661
+ <dd class="example passed"><span class="passed_spec_name">creates a stub per pluralization when a custom separator is used</span><span class='duration'>0.02396s</span></dd>
662
+ <script type="text/javascript">moveProgressBar('80.7');</script>
663
+ <dd class="example passed"><span class="passed_spec_name">creates no stub for base key in pluralization</span><span class='duration'>0.02071s</span></dd>
664
+ </dl>
665
+ </div>
666
+ <div id="div_group_51" class="example_group passed">
667
+ <dl style="margin-left: 45px;">
668
+ <dt id="example_group_51" class="passed">exist in yml</dt>
669
+ </dl>
670
+ </div>
671
+ <div id="div_group_52" class="example_group passed">
672
+ <dl style="margin-left: 60px;">
673
+ <dt id="example_group_52" class="passed">new translation</dt>
674
+ <script type="text/javascript">moveProgressBar('81.9');</script>
675
+ <dd class="example passed"><span class="passed_spec_name">persist it</span><span class='duration'>0.01549s</span></dd>
676
+ </dl>
677
+ </div>
678
+ <div id="div_group_53" class="example_group passed">
679
+ <dl style="margin-left: 60px;">
680
+ <dt id="example_group_53" class="passed">already stored</dt>
681
+ <script type="text/javascript">moveProgressBar('83.1');</script>
682
+ <dd class="example passed"><span class="passed_spec_name">saves the fallback backend value</span><span class='duration'>0.02167s</span></dd>
683
+ </dl>
684
+ </div>
685
+ <div id="div_group_54" class="example_group passed">
686
+ <dl style="margin-left: 0px;">
687
+ <dt id="example_group_54" class="passed">I18n::Backend::Weeler::Dedupe</dt>
688
+ </dl>
689
+ </div>
690
+ <div id="div_group_55" class="example_group passed">
691
+ <dl style="margin-left: 15px;">
692
+ <dt id="example_group_55" class="passed">#dedupe</dt>
693
+ </dl>
694
+ </div>
695
+ <div id="div_group_56" class="example_group passed">
696
+ <dl style="margin-left: 30px;">
697
+ <dt id="example_group_56" class="passed">empty db</dt>
698
+ <script type="text/javascript">moveProgressBar('84.3');</script>
699
+ <dd class="example passed"><span class="passed_spec_name">translation stores all translation in each locale</span><span class='duration'>0.08389s</span></dd>
700
+ </dl>
701
+ </div>
702
+ <div id="div_group_57" class="example_group passed">
703
+ <dl style="margin-left: 0px;">
704
+ <dt id="example_group_57" class="passed">I18n::HumanizeMissingTranslations</dt>
705
+ </dl>
706
+ </div>
707
+ <div id="div_group_58" class="example_group passed">
708
+ <dl style="margin-left: 15px;">
709
+ <dt id="example_group_58" class="passed">.call</dt>
710
+ </dl>
711
+ </div>
712
+ <div id="div_group_59" class="example_group passed">
713
+ <dl style="margin-left: 30px;">
714
+ <dt id="example_group_59" class="passed">when exception is I18n::MissingTranslation</dt>
715
+ <script type="text/javascript">moveProgressBar('85.5');</script>
716
+ <dd class="example passed"><span class="passed_spec_name">humanizes missing translations</span><span class='duration'>0.01490s</span></dd>
717
+ </dl>
718
+ </div>
719
+ <div id="div_group_60" class="example_group passed">
720
+ <dl style="margin-left: 30px;">
721
+ <dt id="example_group_60" class="passed">when exception is not I18n::MissingTranslation</dt>
722
+ <script type="text/javascript">moveProgressBar('86.7');</script>
723
+ <dd class="example passed"><span class="passed_spec_name">does not intercept it</span><span class='duration'>0.01332s</span></dd>
724
+ </dl>
725
+ </div>
726
+ <div id="div_group_61" class="example_group passed">
727
+ <dl style="margin-left: 0px;">
728
+ <dt id="example_group_61" class="passed">Weeler::TranslationsController</dt>
729
+ </dl>
730
+ </div>
731
+ <div id="div_group_62" class="example_group passed">
732
+ <dl style="margin-left: 15px;">
733
+ <dt id="example_group_62" class="passed">GET #export</dt>
734
+ <script type="text/javascript">moveProgressBar('87.9');</script>
735
+ <dd class="example passed"><span class="passed_spec_name">retursns translation file</span><span class='duration'>0.04697s</span></dd>
736
+ </dl>
737
+ </div>
738
+ <div id="div_group_63" class="example_group passed">
739
+ <dl style="margin-left: 15px;">
740
+ <dt id="example_group_63" class="passed">#create</dt>
741
+ <script type="text/javascript">moveProgressBar('89.1');</script>
742
+ <dd class="example passed"><span class="passed_spec_name">creates translation in DB</span><span class='duration'>0.05520s</span></dd>
743
+ <script type="text/javascript">moveProgressBar('90.3');</script>
744
+ <dd class="example passed"><span class="passed_spec_name">doesnt create a duplicate key</span><span class='duration'>0.09519s</span></dd>
745
+ </dl>
746
+ </div>
747
+ <div id="div_group_64" class="example_group passed">
748
+ <dl style="margin-left: 15px;">
749
+ <dt id="example_group_64" class="passed">PUT #update</dt>
750
+ <script type="text/javascript">moveProgressBar('91.5');</script>
751
+ <dd class="example passed"><span class="passed_spec_name">update translation in DB</span><span class='duration'>0.06482s</span></dd>
752
+ <script type="text/javascript">moveProgressBar('92.7');</script>
753
+ <dd class="example passed"><span class="passed_spec_name">dont updates if key is empty</span><span class='duration'>0.07503s</span></dd>
754
+ </dl>
755
+ </div>
756
+ <div id="div_group_65" class="example_group passed">
757
+ <dl style="margin-left: 15px;">
758
+ <dt id="example_group_65" class="passed">DELETE #destroy</dt>
759
+ <script type="text/javascript">moveProgressBar('93.9');</script>
760
+ <dd class="example passed"><span class="passed_spec_name">destroys translation</span><span class='duration'>0.05855s</span></dd>
761
+ </dl>
762
+ </div>
763
+ <div id="div_group_66" class="example_group passed">
764
+ <dl style="margin-left: 15px;">
765
+ <dt id="example_group_66" class="passed">GET #index</dt>
766
+ <script type="text/javascript">moveProgressBar('95.1');</script>
767
+ <dd class="example passed"><span class="passed_spec_name">list translations</span><span class='duration'>0.05090s</span></dd>
768
+ </dl>
769
+ </div>
770
+ <div id="div_group_67" class="example_group passed">
771
+ <dl style="margin-left: 15px;">
772
+ <dt id="example_group_67" class="passed">GET #new</dt>
773
+ <script type="text/javascript">moveProgressBar('96.3');</script>
774
+ <dd class="example passed"><span class="passed_spec_name">retern new translation form</span><span class='duration'>0.04325s</span></dd>
775
+ </dl>
776
+ </div>
777
+ <div id="div_group_68" class="example_group passed">
778
+ <dl style="margin-left: 15px;">
779
+ <dt id="example_group_68" class="passed">POST #import</dt>
780
+ </dl>
781
+ </div>
782
+ <div id="div_group_69" class="example_group passed">
783
+ <dl style="margin-left: 30px;">
784
+ <dt id="example_group_69" class="passed">submiting a file</dt>
785
+ <script type="text/javascript">moveProgressBar('97.5');</script>
786
+ <dd class="example passed"><span class="passed_spec_name">adds translation from files</span><span class='duration'>0.19162s</span></dd>
787
+ </dl>
788
+ </div>
789
+ <div id="div_group_70" class="example_group passed">
790
+ <dl style="margin-left: 30px;">
791
+ <dt id="example_group_70" class="passed">no file</dt>
792
+ <script type="text/javascript">moveProgressBar('98.7');</script>
793
+ <dd class="example passed"><span class="passed_spec_name">redirects back</span><span class='duration'>0.03284s</span></dd>
794
+ </dl>
795
+ </div>
796
+ <div id="div_group_71" class="example_group passed">
797
+ <dl style="margin-left: 15px;">
798
+ <dt id="example_group_71" class="passed">GET #edit</dt>
520
799
  <script type="text/javascript">moveProgressBar('100.0');</script>
521
- <dd class="example passed"><span class="passed_spec_name">list translations</span><span class='duration'>0.08256s</span></dd>
800
+ <dd class="example passed"><span class="passed_spec_name">retern edit translation form</span><span class='duration'>0.05506s</span></dd>
522
801
  </dl>
523
802
  </div>
524
- <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>2.78218 seconds</strong>";</script>
525
- <script type="text/javascript">document.getElementById('totals').innerHTML = "46 examples, 0 failures";</script>
803
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>3.20648 seconds</strong>";</script>
804
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "83 examples, 0 failures";</script>
526
805
  </div>
527
806
  </div>
528
807
  </body>
529
808
  </html>
530
809
 
531
- Randomized with seed 18495
810
+ Randomized with seed 46918
532
811