ecm_sliders2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +35 -0
  4. data/Rakefile +27 -0
  5. data/app/helpers/ecm/sliders_helper.rb +10 -0
  6. data/app/helpers/markup_helper.rb +7 -0
  7. data/app/models/ecm/sliders/item.rb +36 -0
  8. data/app/models/ecm/sliders/slider.rb +40 -0
  9. data/app/views/ecm/sliders/sliders/_slider.haml +3 -0
  10. data/config/locales/de.yml +52 -0
  11. data/config/locales/en.yml +52 -0
  12. data/config/routes.rb +6 -0
  13. data/db/migrate/001_create_ecm_sliders_sliders.rb +14 -0
  14. data/db/migrate/002_create_ecm_sliders_items.rb +14 -0
  15. data/lib/ecm/sliders/configuration.rb +23 -0
  16. data/lib/ecm/sliders/engine.rb +7 -0
  17. data/lib/ecm/sliders/routing.rb +14 -0
  18. data/lib/ecm/sliders/version.rb +6 -0
  19. data/lib/ecm_sliders2.rb +17 -0
  20. data/lib/generators/ecm/sliders/install/install_generator.rb +21 -0
  21. data/lib/generators/ecm/sliders/install/templates/initializer.rb +39 -0
  22. data/lib/generators/ecm/sliders/install/templates/routes.source +5 -0
  23. data/lib/tasks/ecm_sliders_tasks.rake +67 -0
  24. data/spec/controllers/ecm/sliders/sliders_controller_spec.rb +23 -0
  25. data/spec/dummy/README.rdoc +261 -0
  26. data/spec/dummy/Rakefile +7 -0
  27. data/spec/dummy/app/admin/admin_users.rb +20 -0
  28. data/spec/dummy/app/admin/dashboards.rb +33 -0
  29. data/spec/dummy/app/assets/javascripts/active_admin.js +1 -0
  30. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  31. data/spec/dummy/app/assets/javascripts/bootstrap.min.js +6 -0
  32. data/spec/dummy/app/assets/stylesheets/active_admin.css.scss +29 -0
  33. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  34. data/spec/dummy/app/assets/stylesheets/bootstrap.min.css +727 -0
  35. data/spec/dummy/app/assets/stylesheets/ecm.sliders.css +9 -0
  36. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  37. data/spec/dummy/app/helpers/application_helper.rb +7 -0
  38. data/spec/dummy/app/models/admin_user.rb +11 -0
  39. data/spec/dummy/app/views/layouts/application.html.erb +37 -0
  40. data/spec/dummy/config.ru +4 -0
  41. data/spec/dummy/config/application.rb +69 -0
  42. data/spec/dummy/config/boot.rb +10 -0
  43. data/spec/dummy/config/database.yml +25 -0
  44. data/spec/dummy/config/environment.rb +5 -0
  45. data/spec/dummy/config/environments/development.rb +37 -0
  46. data/spec/dummy/config/environments/production.rb +67 -0
  47. data/spec/dummy/config/environments/test.rb +37 -0
  48. data/spec/dummy/config/initializers/active_admin.rb +154 -0
  49. data/spec/dummy/config/initializers/active_admin_footer_patch.rb +12 -0
  50. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  51. data/spec/dummy/config/initializers/devise.rb +232 -0
  52. data/spec/dummy/config/initializers/ecm_sliders.rb +39 -0
  53. data/spec/dummy/config/initializers/inflections.rb +15 -0
  54. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  55. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  56. data/spec/dummy/config/initializers/session_store.rb +8 -0
  57. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  58. data/spec/dummy/config/locales/de.yml +163 -0
  59. data/spec/dummy/config/locales/devise.en.yml +58 -0
  60. data/spec/dummy/config/locales/en.yml +5 -0
  61. data/spec/dummy/config/routes.rb +65 -0
  62. data/spec/dummy/db/migrate/20120922100801_create_ecm_sliders_sliders.ecm_sliders_engine.rb +20 -0
  63. data/spec/dummy/db/migrate/20120922100802_create_ecm_sliders_items.ecm_sliders_engine.rb +25 -0
  64. data/spec/dummy/db/migrate/20120922105221_devise_create_admin_users.rb +52 -0
  65. data/spec/dummy/db/migrate/20120922105247_create_admin_notes.rb +17 -0
  66. data/spec/dummy/db/migrate/20120922105248_move_admin_notes_to_comments.rb +25 -0
  67. data/spec/dummy/db/schema.rb +75 -0
  68. data/spec/dummy/lib/locale_generator.rb +194 -0
  69. data/spec/dummy/lib/tasks/stub_locales.rake +32 -0
  70. data/spec/dummy/public/404.html +26 -0
  71. data/spec/dummy/public/422.html +26 -0
  72. data/spec/dummy/public/500.html +25 -0
  73. data/spec/dummy/public/favicon.ico +0 -0
  74. data/spec/dummy/script/rails +6 -0
  75. data/spec/factories/ecm/sliders/items.rb +14 -0
  76. data/spec/factories/ecm/sliders/sliders.rb +10 -0
  77. data/spec/features/ecm/sliders/slider_items_admin_spec.rb +172 -0
  78. data/spec/features/ecm/sliders/sliders_admin_spec.rb +170 -0
  79. data/spec/files/ecm/sliders/items/example.png +0 -0
  80. data/spec/helpers/ecm/sliders_helper_spec.rb +36 -0
  81. data/spec/models/ecm/sliders/item_spec.rb +49 -0
  82. data/spec/models/ecm/sliders/slider_spec.rb +97 -0
  83. data/spec/models/generic_spec.rb +34 -0
  84. data/spec/requests/ecm/sliders/sliders_spec.rb +28 -0
  85. data/spec/routing/ecm/sliders/routes_spec.rb +11 -0
  86. data/spec/spec_helper.rb +38 -0
  87. data/spec/support/active_admin/sign_in_helper.rb +18 -0
  88. data/spec/support/capybara.rb +1 -0
  89. data/spec/support/factory_girl.rb +6 -0
  90. data/spec/support/ffaker.rb +1 -0
  91. data/spec/support/shoulda.rb +1 -0
  92. data/spec/views/ecm/sliders/sliders/index_spec.rb +20 -0
  93. metadata +344 -0
@@ -0,0 +1,32 @@
1
+ require 'pp'
2
+ require 'locale_generator'
3
+
4
+ namespace :locales do
5
+ desc "Stubs out locale files for all active record descendants."
6
+ task :stub, [] => [:environment] do |t, args|
7
+ Rails.application.eager_load!
8
+
9
+ # Loop over all AR models
10
+ ActiveRecord::Base.descendants.each do |model|
11
+ # Loop over available locales
12
+ I18n.available_locales.each do |locale|
13
+ p "Generating locale files for #{locale}"
14
+ g = LocaleGenerator.new(model, locale)
15
+ if g.load_file
16
+ p " -> Loaded locale file for #{model}:#{locale.to_s}"
17
+ if g.has_new_attribute_keys
18
+ p " -> Adding keys: #{g.new_keys.join(", ")}"
19
+ end
20
+ else
21
+ p " -> Creating new locale file for #{model}:#{locale.to_s}"
22
+ end
23
+ if g.save_file
24
+ p " -> Saved #{g.filename}"
25
+ else
26
+ p " -> Error saving #{g.filename}"
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,25 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ </div>
24
+ </body>
25
+ </html>
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,14 @@
1
+ FactoryGirl.define do
2
+ factory :ecm_sliders_item, class: Ecm::Sliders::Item do
3
+ association :slider, factory: :ecm_sliders_slider
4
+ markup_language 'textile'
5
+ after(:build) { |f|
6
+ f.image.attach(
7
+ io: File.open(File.join(Ecm::Sliders::Engine.root.join(*%w( spec files ecm sliders items example.png)))),
8
+ filename: 'example.png',
9
+ content_type: 'image/png'
10
+ )
11
+ }
12
+ end
13
+ end
14
+
@@ -0,0 +1,10 @@
1
+ FactoryGirl.define do
2
+ factory :ecm_sliders_slider, :class => Ecm::Sliders::Slider do
3
+ sequence(:name) { |i| "Slider ##{i}" }
4
+
5
+ factory :ecm_sliders_slider_with_items do |slider|
6
+ slider.after_create { |s| FactoryGirl.create_list(:ecm_sliders_item, 5, ecm_sliders_slider: s) }
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,172 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Ecm::Sliders::Item admin' do
4
+ include ActiveAdmin::SignInHelper
5
+
6
+ def set_locale
7
+ I18n.locale = :de
8
+ end
9
+
10
+ def set_admin_area_path
11
+ @admin_area_path = "/admin"
12
+ end
13
+
14
+ def set_resource_path
15
+ @resource_path = "ecm_sliders_items"
16
+ end
17
+
18
+ def set_resource_class
19
+ @resource_class = Ecm::Sliders::Item
20
+ end
21
+
22
+ def set_resource_factory_name
23
+ @resource_factory_name = @resource_class.to_s.underscore.gsub('/', '_').to_sym
24
+ end
25
+
26
+ def set_index_check_column
27
+ @index_check_column = :body
28
+ end
29
+
30
+ def prepare_for_new
31
+ @slider = FactoryGirl.create(:ecm_sliders_slider)
32
+ end
33
+
34
+ def fill_new_form
35
+ select @slider.name, :from => 'ecm_sliders_item[ecm_sliders_slider_id]'
36
+ select 'textile', :from => 'ecm_sliders_item[markup_language]'
37
+ end
38
+
39
+ def fill_edit_form
40
+ fill_in "ecm_sliders_item[body]", :with => "An updated slider"
41
+ end
42
+
43
+ background do
44
+ admin_user = FactoryGirl.create(:admin_user)
45
+ sign_in_with(admin_user.email, admin_user.password)
46
+
47
+ set_locale
48
+ set_admin_area_path
49
+ set_resource_class
50
+ set_resource_path
51
+ set_resource_factory_name
52
+ end
53
+
54
+ describe 'new' do
55
+ background do
56
+ @resource_count = @resource_class.count
57
+ prepare_for_new
58
+ visit "#{@admin_area_path}/#{@resource_path}/new"
59
+ end
60
+
61
+ scenario 'should be visitable' do
62
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}/new")
63
+ end # scenario
64
+
65
+ scenario 'should have the status code 200' do
66
+ page.status_code.should eq(200)
67
+ end # scenario
68
+
69
+ describe 'when filling the form correctly' do
70
+ background do
71
+ fill_new_form
72
+ find(:xpath, '//input[@type="submit"]').click
73
+ end
74
+
75
+ scenario 'should have created a record' do
76
+ @resource_class.count.should eq(@resource_count + 1)
77
+ end # scenario
78
+
79
+ scenario 'should have the status code 200' do
80
+ page.status_code.should eq(200)
81
+ end # scenario
82
+ end # describe 'when filling the form correctly'
83
+ end # describe 'new'
84
+
85
+ describe 'show' do
86
+ background do
87
+ @resource = FactoryGirl.create(@resource_factory_name)
88
+ visit "#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}"
89
+ end
90
+
91
+ scenario 'should have the status code 200' do
92
+ page.status_code.should eq(200)
93
+ end # scenario
94
+ end # describe 'show'
95
+
96
+ describe 'edit' do
97
+ background do
98
+ @resource = FactoryGirl.create(@resource_factory_name)
99
+ visit "#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}/edit"
100
+ end
101
+
102
+ scenario 'should be visitable' do
103
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}/edit")
104
+ end # scenario
105
+
106
+ scenario 'should have the status code 200' do
107
+ page.status_code.should eq(200)
108
+ end # scenario
109
+
110
+ describe 'when filling the form correctly' do
111
+ background do
112
+ @resource_count = @resource_class.count
113
+ fill_edit_form
114
+ find(:xpath, '//input[@type="submit"]').click
115
+ @resource.reload
116
+ end
117
+
118
+ scenario 'should not have created a record' do
119
+ @resource_class.count.should eq(@resource_count)
120
+ end # scenario
121
+
122
+ scenario 'should have the status code 200' do
123
+ page.status_code.should eq(200)
124
+ end # scenario
125
+
126
+ scenario 'should redirect to the resource show page' do
127
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}")
128
+ end # scenario
129
+ end # describe 'when filling the form correctly'
130
+
131
+ end # describe 'edit'
132
+
133
+ describe 'delete' do
134
+ background do
135
+ @resource = FactoryGirl.create(@resource_factory_name)
136
+ @resource_count = @resource_class.count
137
+ visit "#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}"
138
+ find(:xpath, "//a[@href='#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}' and @data-method='delete']").click
139
+ end
140
+
141
+ scenario 'should delete the resource' do
142
+ @resource_class.count.should eq(@resource_count - 1)
143
+ end # scenario
144
+
145
+ scenario 'should redirect to the resource index page' do
146
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}")
147
+ end # scenario
148
+ end # describe 'delete'
149
+
150
+ describe 'index' do
151
+ background do
152
+ set_index_check_column
153
+ @resources = FactoryGirl.create_list(@resource_factory_name, 3)
154
+ visit "#{@admin_area_path}/#{@resource_path}"
155
+ end
156
+
157
+ scenario 'should be visitable' do
158
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}")
159
+ end # scenario
160
+
161
+ scenario 'should have the status code 200' do
162
+ page.status_code.should eq(200)
163
+ end # scenario
164
+
165
+ scenario "should show the resources" do
166
+ @resources.each do |resource|
167
+ page.body.should include(resource.send(@index_check_column.to_sym))
168
+ end
169
+ end # scenario
170
+ end # describe 'index'
171
+ end # feature
172
+
@@ -0,0 +1,170 @@
1
+ require 'spec_helper'
2
+
3
+ feature 'Ecm::Sliders::Slider admin' do
4
+ include ActiveAdmin::SignInHelper
5
+
6
+ def set_locale
7
+ I18n.locale = :de
8
+ end
9
+
10
+ def set_admin_area_path
11
+ @admin_area_path = "/admin"
12
+ end
13
+
14
+ def set_resource_path
15
+ @resource_path = "ecm_sliders_sliders"
16
+ end
17
+
18
+ def set_resource_class
19
+ @resource_class = Ecm::Sliders::Slider
20
+ end
21
+
22
+ def set_resource_factory_name
23
+ @resource_factory_name = @resource_class.to_s.underscore.gsub('/', '_').to_sym
24
+ end
25
+
26
+ def set_index_check_column
27
+ @index_check_column = :name
28
+ end
29
+
30
+ def prepare_for_new
31
+ end
32
+
33
+ def fill_new_form
34
+ fill_in "ecm_sliders_slider[name]", :with => "Example slider"
35
+ end
36
+
37
+ def fill_edit_form
38
+ fill_in "ecm_sliders_slider[name]", :with => "An updated slider"
39
+ end
40
+
41
+ background do
42
+ admin_user = FactoryGirl.create(:admin_user)
43
+ sign_in_with(admin_user.email, admin_user.password)
44
+
45
+ set_locale
46
+ set_admin_area_path
47
+ set_resource_class
48
+ set_resource_path
49
+ set_resource_factory_name
50
+ end
51
+
52
+ describe 'new' do
53
+ background do
54
+ @resource_count = @resource_class.count
55
+ prepare_for_new
56
+ visit "#{@admin_area_path}/#{@resource_path}/new"
57
+ end
58
+
59
+ scenario 'should be visitable' do
60
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}/new")
61
+ end # scenario
62
+
63
+ scenario 'should have the status code 200' do
64
+ page.status_code.should eq(200)
65
+ end # scenario
66
+
67
+ describe 'when filling the form correctly' do
68
+ background do
69
+ fill_new_form
70
+ find(:xpath, '//input[@type="submit"]').click
71
+ end
72
+
73
+ scenario 'should have created a record' do
74
+ @resource_class.count.should eq(@resource_count + 1)
75
+ end # scenario
76
+
77
+ scenario 'should have the status code 200' do
78
+ page.status_code.should eq(200)
79
+ end # scenario
80
+ end # describe 'when filling the form correctly'
81
+ end # describe 'new'
82
+
83
+ describe 'show' do
84
+ background do
85
+ @resource = FactoryGirl.create(@resource_factory_name)
86
+ visit "#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}"
87
+ end
88
+
89
+ scenario 'should have the status code 200' do
90
+ page.status_code.should eq(200)
91
+ end # scenario
92
+ end # describe 'show'
93
+
94
+ describe 'edit' do
95
+ background do
96
+ @resource = FactoryGirl.create(@resource_factory_name)
97
+ visit "#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}/edit"
98
+ end
99
+
100
+ scenario 'should be visitable' do
101
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}/edit")
102
+ end # scenario
103
+
104
+ scenario 'should have the status code 200' do
105
+ page.status_code.should eq(200)
106
+ end # scenario
107
+
108
+ describe 'when filling the form correctly' do
109
+ background do
110
+ @resource_count = @resource_class.count
111
+ fill_edit_form
112
+ find(:xpath, '//input[@type="submit"]').click
113
+ @resource.reload
114
+ end
115
+
116
+ scenario 'should not have created a record' do
117
+ @resource_class.count.should eq(@resource_count)
118
+ end # scenario
119
+
120
+ scenario 'should have the status code 200' do
121
+ page.status_code.should eq(200)
122
+ end # scenario
123
+
124
+ scenario 'should redirect to the resource show page' do
125
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}")
126
+ end # scenario
127
+ end # describe 'when filling the form correctly'
128
+
129
+ end # describe 'edit'
130
+
131
+ describe 'delete' do
132
+ background do
133
+ @resource = FactoryGirl.create(@resource_factory_name)
134
+ @resource_count = @resource_class.count
135
+ visit "#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}"
136
+ find(:xpath, "//a[@href='#{@admin_area_path}/#{@resource_path}/#{@resource.to_param}' and @data-method='delete']").click
137
+ end
138
+
139
+ scenario 'should delete the resource' do
140
+ @resource_class.count.should eq(@resource_count - 1)
141
+ end # scenario
142
+
143
+ scenario 'should redirect to the resource index page' do
144
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}")
145
+ end # scenario
146
+ end # describe 'delete'
147
+
148
+ describe 'index' do
149
+ background do
150
+ set_index_check_column
151
+ @resources = FactoryGirl.create_list(@resource_factory_name, 3)
152
+ visit "#{@admin_area_path}/#{@resource_path}"
153
+ end
154
+
155
+ scenario 'should be visitable' do
156
+ page.current_path.should eq("#{@admin_area_path}/#{@resource_path}")
157
+ end # scenario
158
+
159
+ scenario 'should have the status code 200' do
160
+ page.status_code.should eq(200)
161
+ end # scenario
162
+
163
+ scenario "should show the resources" do
164
+ @resources.each do |resource|
165
+ page.body.should include(resource.send(@index_check_column.to_sym))
166
+ end
167
+ end # scenario
168
+ end # describe 'index'
169
+ end # feature
170
+