adminpanel 1.2.12 → 2.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 (127) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +3 -4
  3. data/Gemfile +22 -20
  4. data/README.md +12 -9
  5. data/adminpanel.gemspec +29 -28
  6. data/app/assets/fonts/.keep +0 -0
  7. data/app/assets/javascripts/adminpanel/images_form.js +5 -2
  8. data/app/assets/javascripts/adminpanel/imagesloaded.js +5 -2
  9. data/app/assets/javascripts/adminpanel/tables.js +6 -3
  10. data/app/assets/javascripts/application-admin.js +2 -1
  11. data/app/assets/stylesheets/adminpanel/{_clearfix.css.scss → _clearfix.css} +0 -0
  12. data/app/assets/stylesheets/adminpanel/bootstrap.css +2 -2
  13. data/app/assets/stylesheets/adminpanel/medium-editor.css.scss +1 -1
  14. data/app/assets/stylesheets/application-admin.css +2 -1
  15. data/app/controllers/adminpanel/application_controller.rb +28 -21
  16. data/app/controllers/adminpanel/categories_controller.rb +16 -5
  17. data/app/controllers/adminpanel/galleries_controller.rb +11 -5
  18. data/app/controllers/adminpanel/sections_controller.rb +14 -0
  19. data/app/controllers/adminpanel/users_controller.rb +10 -80
  20. data/app/controllers/concerns/adminpanel/galleryzable_actions.rb +33 -0
  21. data/app/controllers/concerns/adminpanel/rest_actions.rb +109 -0
  22. data/app/helpers/adminpanel/application_helper.rb +0 -1
  23. data/app/helpers/adminpanel/custom_form_builder.rb +12 -13
  24. data/app/helpers/adminpanel/router_helper.rb +11 -2
  25. data/app/helpers/adminpanel/shared_pages_helper.rb +0 -1
  26. data/app/models/adminpanel/analytic.rb +3 -2
  27. data/app/models/adminpanel/gallery.rb +8 -4
  28. data/app/models/adminpanel/group.rb +1 -1
  29. data/app/models/adminpanel/image.rb +1 -2
  30. data/app/models/adminpanel/section.rb +19 -10
  31. data/app/models/adminpanel/user.rb +11 -3
  32. data/app/models/concerns/adminpanel/base.rb +149 -0
  33. data/app/models/concerns/adminpanel/galleryzation.rb +66 -0
  34. data/app/models/contact.rb +16 -9
  35. data/app/views/adminpanel/analytics/index.html.erb +2 -1
  36. data/app/views/adminpanel/categories/_categories_table.html.erb +6 -7
  37. data/app/views/adminpanel/categories/_category_form.html.erb +2 -2
  38. data/app/views/adminpanel/categories/create.js.erb +2 -2
  39. data/app/views/adminpanel/categories/index.html.erb +1 -1
  40. data/app/views/adminpanel/galleries/_galleries_table.html.erb +7 -7
  41. data/app/views/adminpanel/galleries/index.html.erb +6 -5
  42. data/app/views/adminpanel/sections/_sections_table.html.erb +2 -2
  43. data/app/views/adminpanel/sections/edit.html.erb +5 -3
  44. data/app/views/adminpanel/sections/show.html.erb +3 -3
  45. data/app/views/adminpanel/sessions/new.html.erb +1 -1
  46. data/app/views/layouts/_side_menu.html.erb +2 -2
  47. data/app/views/layouts/_top_bar.html.erb +3 -3
  48. data/app/views/layouts/admin-login.html.erb +0 -1
  49. data/app/views/layouts/admin.html.erb +3 -3
  50. data/app/views/shared/_delete_icon_button.html.erb +16 -0
  51. data/app/views/shared/_edit_icon_button.html.erb +14 -0
  52. data/app/views/shared/_error_messages.html.erb +1 -1
  53. data/app/views/shared/_form_fields.html.erb +15 -13
  54. data/app/views/shared/_gallery_entries.html.erb +2 -2
  55. data/app/views/shared/_init_editor.html.erb +5 -2
  56. data/app/views/shared/_new_resource_button.html.erb +18 -0
  57. data/app/views/shared/_remote_form_fields.html.erb +1 -1
  58. data/app/views/shared/_show_icon_button.html.erb +14 -0
  59. data/app/views/shared/edit.html.erb +3 -3
  60. data/app/views/shared/index.html.erb +13 -48
  61. data/app/views/shared/new.html.erb +3 -3
  62. data/app/views/shared/show.html.erb +5 -5
  63. data/config/initializers/pluralization_es.rb +16 -0
  64. data/config/locales/en.yml +89 -0
  65. data/config/locales/es.yml +4 -4
  66. data/config/routes.rb +15 -16
  67. data/lib/adminpanel.rb +8 -8
  68. data/lib/adminpanel/version.rb +1 -1
  69. data/lib/generators/adminpanel/gallery/gallery_generator.rb +12 -8
  70. data/lib/generators/adminpanel/gallery/templates/gallery_template.rb +2 -3
  71. data/lib/generators/adminpanel/initialize/templates/category_template.rb +2 -3
  72. data/lib/generators/adminpanel/resource/resource_generator.rb +24 -18
  73. data/lib/generators/adminpanel/resource/templates/controller.rb +5 -0
  74. data/lib/generators/adminpanel/resource/templates/resource.rb +3 -3
  75. data/lib/tasks/adminpanel/adminpanel.rake +43 -90
  76. data/spec/dummy/app/controllers/adminpanel/mugs_controller.rb +9 -0
  77. data/spec/dummy/app/controllers/adminpanel/products_controller.rb +12 -0
  78. data/spec/dummy/app/models/ability.rb +1 -1
  79. data/spec/dummy/app/models/adminpanel/categorization.rb +1 -2
  80. data/spec/dummy/app/models/adminpanel/category.rb +18 -19
  81. data/spec/dummy/app/models/adminpanel/mug.rb +37 -0
  82. data/spec/dummy/app/models/adminpanel/photo.rb +3 -3
  83. data/spec/dummy/app/models/adminpanel/product.rb +2 -2
  84. data/spec/dummy/config/application.rb +2 -11
  85. data/spec/dummy/config/database.yml +0 -6
  86. data/spec/dummy/config/environments/development.rb +11 -23
  87. data/spec/dummy/config/environments/production.rb +40 -32
  88. data/spec/dummy/config/environments/test.rb +13 -18
  89. data/spec/dummy/config/initializers/adminpanel_setup.rb +2 -1
  90. data/spec/dummy/config/locales/.keep +0 -0
  91. data/spec/dummy/db/schema.rb +68 -2
  92. data/spec/features/authentication_pages_spec.rb +15 -15
  93. data/spec/features/galleries_pages_spec.rb +30 -22
  94. data/spec/features/section_pages_spec.rb +15 -18
  95. data/spec/features/shared_pages_spec.rb +97 -127
  96. data/spec/generators/gallery_generator_spec.rb +2 -3
  97. data/spec/generators/resource_generator_spec.rb +20 -3
  98. data/spec/models/gallery_spec.rb +2 -2
  99. data/spec/models/section_spec.rb +8 -15
  100. data/spec/models/user_spec.rb +23 -39
  101. data/spec/spec_helper.rb +9 -1
  102. data/spec/support/factories.rb +52 -0
  103. data/spec/support/helper_methods.rb +25 -5
  104. data/spec/tasks/adminpanel_rake_spec.rb +11 -10
  105. metadata +361 -353
  106. data/app/assets/fonts/FontAwesome.otf +0 -0
  107. data/app/assets/fonts/fontawesome-webfont.eot +0 -0
  108. data/app/assets/fonts/fontawesome-webfont.svg +0 -255
  109. data/app/assets/fonts/fontawesome-webfont.ttf +0 -0
  110. data/app/assets/fonts/fontawesome-webfont.woff +0 -0
  111. data/app/assets/stylesheets/adminpanel/colorpicker.css +0 -7
  112. data/app/assets/stylesheets/adminpanel/elfinder.min.css +0 -59
  113. data/app/assets/stylesheets/adminpanel/font-awesome.min.css +0 -34
  114. data/app/helpers/adminpanel/pluralizations_helper.rb +0 -25
  115. data/app/helpers/adminpanel/rest_actions_helper.rb +0 -128
  116. data/app/views/adminpanel/galleries/delete.html.erb +0 -2
  117. data/app/views/adminpanel/galleries/edit.html.erb +0 -19
  118. data/app/views/adminpanel/galleries/new.html.erb +0 -18
  119. data/app/views/adminpanel/galleries/show.html.erb +0 -18
  120. data/app/views/adminpanel/galleries/update.html.erb +0 -2
  121. data/lib/adminpanel/active_record/adminpanel_extension.rb +0 -187
  122. data/spec/dummy/config/locales/en.yml +0 -5
  123. data/spec/support/define_factory_models.rb +0 -45
  124. data/spec/support/submit_forms_without_button.rb +0 -17
  125. data/spec/support/test_database.rb +0 -76
  126. data/spec/uploaders/gallery_uploader_spec.rb +0 -37
  127. data/spec/uploaders/image_uploader_spec.rb +0 -31
@@ -1,11 +1,10 @@
1
1
  require 'spec_helper'
2
- require 'support/test_database'
3
2
 
4
3
  describe "Authentication" do
5
4
 
6
- subject { page }
5
+ subject { page }
7
6
 
8
- describe "sign in page" do
7
+ describe 'sign in page' do
9
8
  before { visit adminpanel.signin_path }
10
9
 
11
10
  it { should have_content(I18n.t("authentication.welcome")) }
@@ -13,28 +12,29 @@ describe "Authentication" do
13
12
  it { expect(page).to have_title(I18n.t("Panel title")) }
14
13
  end
15
14
 
16
- describe "signin" do
15
+ describe 'signin' do
17
16
  before { visit adminpanel.signin_path }
18
17
 
19
- describe "with invalid information" do
20
- before { click_button "signin-button" }
18
+ describe 'with invalid information' do
19
+ before do
20
+ click_button 'signin-button'
21
+ end
21
22
 
22
23
  it { expect(page).to have_title(I18n.t("Panel title")) }
23
-
24
- it { should have_selector('div.alert.alert-error', :text => I18n.t("authentication.signin_error")) }
24
+ it { should have_selector('div.alert.alert-error', :text => I18n.t('authentication.signin_error')) }
25
25
  end
26
26
 
27
- describe "with valid information" do
28
- let(:user) { Factory(:user) }
27
+ describe 'with valid information' do
28
+ let(:user) { FactoryGirl.build(:user) }
29
29
  before do
30
- valid_signin(user)
30
+ valid_signin_as_admin(user)
31
31
  end
32
32
 
33
- it { should have_selector('div.alert.alert-success', :text => I18n.t("authentication.signin_success")) }
34
- it { should have_selector('i.icon-off') }
33
+ it { should have_selector('div.alert.alert-success', :text => I18n.t('authentication.signin_success')) }
34
+ it { should have_selector('i.fa-power-off') }
35
35
 
36
- describe "signing out" do
37
- before { click_link "signout-button"}
36
+ describe 'signing out' do
37
+ before { click_link 'signout-button'}
38
38
 
39
39
  it { current_path.should == adminpanel.signin_path }
40
40
  it { expect(page).to have_title(I18n.t("Panel title")) }
@@ -1,41 +1,50 @@
1
1
  require 'spec_helper'
2
- require 'support/test_database'
3
2
 
3
+ describe 'Gallery pages' do
4
+ let(:gallery) { FactoryGirl.build(:gallery) }
5
+ let(:user) { FactoryGirl.build(:user) }
4
6
 
5
- describe "Gallery pages" do
6
- subject {page}
7
+ subject { page }
7
8
 
8
- let(:user) { Factory(:user) }
9
9
  before do
10
+ gallery.save
10
11
  visit adminpanel.signin_path
11
- valid_signin(user)
12
+ valid_signin_as_admin(user)
12
13
  clean_uploads_folder
13
14
  end
14
15
 
15
- describe "galleries" do
16
- let(:gallery) { Factory(:gallery) }
16
+ describe 'galleries' do
17
17
  before do
18
18
  visit adminpanel.galleries_path
19
19
  end
20
20
 
21
- it { should have_link(I18n.t("gallery.new"), adminpanel.new_gallery_path)}
22
- it { should have_link("i", adminpanel.gallery_path(gallery)) }
23
- it { should have_link("i", adminpanel.edit_gallery_path(gallery)) }
24
- it { should have_link("i", adminpanel.move_to_better_gallery_path(gallery)) }
25
- it { should have_link("i", adminpanel.move_to_worst_gallery_path(gallery)) }
21
+ it { should have_link(I18n.t('gallery.new'), adminpanel.new_gallery_path)}
22
+ it { should have_link('i', adminpanel.gallery_path(gallery)) }
23
+ it { should have_link('i', adminpanel.edit_gallery_path(gallery)) }
24
+ it { should have_link('i', adminpanel.move_to_better_gallery_path(gallery)) }
25
+ it { should have_link('i', adminpanel.move_to_worst_gallery_path(gallery)) }
26
26
  end
27
27
 
28
- describe "when creating" do
29
- describe "a single image" do
30
- let(:gallery) { Factory(:gallery)}
31
- it { gallery.position.should eq 1 }
28
+ context 'when creating' do
29
+ let(:gallery_1) { FactoryGirl.build(:gallery) }
30
+ let(:gallery_2) { FactoryGirl.build(:gallery) }
31
+ let(:gallery_3) { FactoryGirl.build(:gallery) }
32
+
33
+ before do
34
+ Adminpanel::Gallery.delete_all
35
+ gallery_1.save
32
36
  end
33
37
 
34
- describe "3 images" do
35
- let!(:gallery_1) { Factory(:gallery) }
36
- let!(:gallery_2) { Factory(:gallery) }
37
- let!(:gallery_3) { Factory(:gallery) }
38
+ describe 'a single image' do
39
+ it { gallery_1.position.should eq 1 }
40
+ end
38
41
 
42
+ describe '3 images' do
43
+
44
+ before do
45
+ gallery_2.save
46
+ gallery_3.save
47
+ end
39
48
  it { gallery_2.position.should eq 2 }
40
49
  it { gallery_3.position.should eq 3 }
41
50
  describe "when moving down the image in position 1" do
@@ -92,11 +101,10 @@ describe "Gallery pages" do
92
101
  end
93
102
 
94
103
  describe "show" do
95
- let(:gallery) { Factory(:gallery) }
96
104
  before do
97
105
  visit adminpanel.gallery_path(gallery)
98
106
  end
99
107
 
100
- it { page.should have_selector("img", :src => gallery.file_url) }
108
+ it { page.should have_selector("img[src='#{gallery.file_url(:thumb)}']") }
101
109
  end
102
110
  end
@@ -1,39 +1,36 @@
1
1
  require 'spec_helper'
2
- require 'support/test_database'
3
2
 
4
- describe "Section pages" do
5
- subject {page}
6
3
 
7
- let(:user) { Factory(:user) }
4
+ describe 'Section pages' do
5
+ subject { page }
6
+
7
+ let(:user) { get_user }
8
8
  before do
9
+ Adminpanel::Section.delete_all
9
10
  visit adminpanel.signin_path
10
- valid_signin(user)
11
+ valid_signin_as_admin(user)
11
12
  end
12
13
 
13
- describe "index" do
14
- let(:section) { Factory(:section_with_gallery) }
14
+ describe 'index' do
15
+ let!(:section) { FactoryGirl.create(:section_with_gallery) }
15
16
  before do
16
17
  visit adminpanel.sections_path
17
18
  end
18
19
 
19
- it { should have_link("i", adminpanel.section_path(section)) }
20
- it { should have_link("i", adminpanel.edit_section_path(section)) }
20
+ it { should have_link('i', adminpanel.section_path(section)) }
21
+ it { should have_link('i', adminpanel.edit_section_path(section)) }
21
22
  end
22
23
 
23
- describe "show" do
24
- describe "with gallery" do
25
- let(:section) { Factory(:section_with_gallery) }
26
- let(:image) { Factory(:image_section, :section_id => section.id) }
27
- # let(:image2) { Factory(:image_section, :foreign_key => section.id) }
28
- # let(:image3) { Factory(:image_section, :foreign_key => section.id) }
24
+ describe 'show' do
25
+ describe 'with gallery' do
26
+ let(:section) { FactoryGirl.create(:section_with_gallery) }
29
27
 
30
28
  before do
31
29
  visit adminpanel.section_path(section)
32
30
  end
33
31
 
34
- it { should have_title(section.name.humanize) }
35
- it { should have_content(section.description) }
36
- it { should have_link("i", adminpanel.edit_section_path(section)) }
32
+ it { should have_content(section.description) }
33
+ it { should have_link('i', adminpanel.edit_section_path(section)) }
37
34
  end
38
35
  end
39
36
  end
@@ -1,158 +1,128 @@
1
1
  require 'spec_helper'
2
- require 'support/test_database'
3
2
 
4
- describe 'shared pages' do
3
+ describe 'Shared pages' do
5
4
  subject { page }
6
5
 
7
- let(:user) { Factory(:user) }
6
+
7
+ let(:user) { get_user }
8
+ let!(:product) { FactoryGirl.create(:product) }
9
+ let!(:category){ FactoryGirl.create(:category) }
10
+ let!(:photo) { FactoryGirl.create(:photo) }
11
+ let!(:mug) { FactoryGirl.create(:mug) }
12
+
8
13
  before do
14
+ Adminpanel::User.delete_all
9
15
  visit adminpanel.signin_path
10
- valid_signin(user)
16
+ valid_signin_as_admin(user)
11
17
  end
12
18
 
13
- context 'when visiting' do
14
- describe 'index' do
15
- let(:product) { Factory(:product) }
16
- before do
17
- visit adminpanel.products_path
18
- end
19
+ after do
20
+ Adminpanel::User.delete_all
21
+ end
19
22
 
20
- it { should have_link(Adminpanel::Product.display_name, adminpanel.new_product_path)}
21
- it { should have_link('i', adminpanel.product_path(product)) }
22
- it { should have_link('i', adminpanel.edit_product_path(product)) }
23
+ describe 'mugs#index excluding every rest action but index' do
24
+ before do
25
+ visit adminpanel.mugs_path
23
26
  end
24
27
 
25
- context 'product' do
26
-
27
- describe 'new' do
28
- let(:category){ Factory(:category) }
29
- before do
30
- category.id = 1 #to force instantiation and id.
31
- visit adminpanel.new_product_path
32
- end
33
-
34
- it { should have_title(I18n.t("action.create") + " " + Adminpanel::Product.display_name) }
35
-
36
- it 'should have add remote category button' do
37
- should have_selector(
38
- 'a.btn-info',
39
- :text => I18n.t(
40
- 'other.add',
41
- :model => Adminpanel::Category.display_name
42
- )
43
- )
44
- end
45
-
46
- describe 'submtting with invalid information' do
47
- before do
48
- find("form#new_resource").submit_form!
49
- end
50
-
51
- it { should have_title(I18n.t("action.create") + " " + Adminpanel::Product.display_name) }
52
- it { should have_selector("div#alerts") }
53
- end
54
-
55
- # describe 'opening the remote form modal' do
56
- # before do
57
- # page.find("a##{Adminpanel::Category.name.demodulize.downcase}-modal-link").click
58
- # end
59
- #
60
- # it 'should have modal with correct #modal-title' do
61
- # page.should have_selector(
62
- # :css,
63
- # 'h3#modal-title',
64
- # :content => I18n.t('other.add', :model => Adminpanel::Category.display_name)
65
- # )
66
- # end
67
- #
68
- # it 'should have the modal with the correct fields' do
69
- # should have_selector("input#category_name")
70
- # end
71
-
72
- # describe 'sending the resource remotely with invalid information' do
73
- # before do
74
- # find('#new-Category-button').click
75
- # end
76
- # it 'should display error message' do
77
- # page.should have_selector("div#alerts")
78
- # end
79
- # end
80
-
81
- # end
82
-
83
- describe 'submitting with valid information' do
84
- before do
85
- fill_in "product_name", :with => "product name"
86
- fill_in "product_price", :with => "855.5"
87
- find(:css, "#product_category_ids_[value='1']").set(true)
88
- find(:xpath, "//input[@id='description-field']").set "<p>a little longer text</p>"
89
- find("form#new_resource").submit_form!
90
- end
91
-
92
- it { should have_content(I18n.t("action.save_success"))}
93
- it { Adminpanel::Categorization.count.should equal(1)}
94
- end
95
- end
28
+ it 'should not have create mug button' do
29
+ should_not have_link('a', href:'/adminpanel/tazas/new')
30
+ end
31
+ it 'should not have show or destroy button' do
32
+ should_not have_link('a', href:'/adminpanel/tazas/1')
33
+ end
34
+ it 'should not have edit button' do
35
+ should_not have_link('a', href:'/adminpanel/tazas/1/edit')
96
36
  end
37
+ end
97
38
 
98
- describe "edit" do
99
- let(:category){ Factory(:category) }
100
- let(:product){ Factory(:product) }
101
39
 
102
- before do
103
- category.id = 1 #to force instantiation and id.
104
- product.category_ids = ["1"]
105
- visit adminpanel.edit_product_path(product)
106
- end
40
+ describe 'index' do
41
+ before do
42
+ visit adminpanel.products_path
43
+ end
107
44
 
108
- it { should have_title(I18n.t("action.update") + " " + Adminpanel::Product.display_name) }
45
+ it { should have_link(Adminpanel::Product.display_name, adminpanel.new_product_path)}
46
+ it { should have_link('i', adminpanel.product_path(product)) }
47
+ it { should have_link('i', adminpanel.edit_product_path(product)) }
48
+ end
109
49
 
110
- describe "with invalid information" do
111
- before do
112
- fill_in "product_name", :with => ""
113
- fill_in "product_price", :with => ""
114
- find("form#edit_resource").submit_form!
115
- end
50
+ describe 'new' do
51
+ before do
52
+ visit adminpanel.new_product_path
53
+ end
116
54
 
117
- it { should have_title(I18n.t("action.update") + " " + Adminpanel::Product.display_name) }
118
- it { should have_selector("div#alerts") }
119
- end
55
+ it 'should have add remote category button' do
56
+ should have_selector(
57
+ 'a.btn-info',
58
+ :text => I18n.t(
59
+ 'other.add',
60
+ :model => Adminpanel::Category.display_name
61
+ )
62
+ )
63
+ end
120
64
 
121
- describe "with same information" do
122
- before do
123
- find("form#edit_resource").submit_form!
124
- end
125
65
 
126
- it { should have_content(I18n.t("action.save_success"))}
66
+ describe 'submtting with invalid information' do
67
+ before do
68
+ find("#new-Product-button").click
127
69
  end
128
70
 
129
- describe "with valid information" do
130
- before do
131
- find(:css, "#product_category_ids_[value='1']").set(true)
132
- fill_in "product_name", :with => "product name"
133
- fill_in "product_price", :with => "855.5"
134
- find(:xpath, "//input[@id='description-field']").set "<p>a little longer text</p>"
135
- find("form#edit_resource").submit_form!
136
- end
137
-
138
- it { should have_content(I18n.t("action.save_success"))}
71
+ it { should have_title(I18n.t("action.create") + " " + Adminpanel::Product.display_name) }
72
+ it 'should stay in products#new' do
73
+ current_url.should eq adminpanel.new_product_url
139
74
  end
140
75
  end
141
76
 
142
- describe "show" do
143
- let(:product) { Factory(:product) }
144
- let(:photo) { Factory(:photo) }
77
+ # describe 'submitting with valid information' do
78
+ # before do
79
+ # fill_in "product_name", :with => "product name"
80
+ # fill_in "product_price", :with => "855.5"
81
+ # find(:css, "#product_category_ids_[value='1']").set(true)
82
+ # find(:xpath, "//input[@id='description-field']").set "<p>a little longer text</p>"
83
+ # find("#new-Product-button").click
84
+ # end
85
+ #
86
+ # # it { should have_content(I18n.t("action.save_success"))}
87
+ # # it { expect(Adminpanel::Categorization.count).to eq(1)}
88
+ # end
89
+ end
90
+
91
+ describe "edit" do
92
+
93
+ before do
94
+ product.category_ids = [category.id]
95
+ visit adminpanel.edit_product_path(product)
96
+ end
97
+
98
+ it { should have_title(I18n.t("action.update") + " " + Adminpanel::Product.display_name) }
145
99
 
100
+ describe "with invalid information" do
146
101
  before do
147
- photo.product_id = product.id
148
- visit adminpanel.product_path(product)
102
+ fill_in "product_name", :with => ""
103
+ fill_in "product_price", :with => ""
104
+ find("#new-resource-button").click
149
105
  end
150
106
 
151
- it { page.should have_selector("div", :text => product.name) }
152
- it { page.should have_selector("div", :text => product.price) }
153
- it { page.should have_selector("div", :text => product.description) }
154
- it { should have_content("#{I18n.t("Gallery")}: #{Adminpanel::Product.display_name}")}
155
- it { should have_link("i", adminpanel.edit_product_path(product)) }
107
+ it 'should stay to products#edit' do
108
+ current_url.should eq adminpanel.edit_product_url(product)
109
+ end
110
+ it { should have_title(I18n.t("action.update") + " " + Adminpanel::Product.display_name) }
111
+ end
112
+
113
+ end
114
+
115
+ describe 'show' do
116
+
117
+ before do
118
+ photo.product_id = product.id
119
+ visit adminpanel.product_path(product)
156
120
  end
121
+
122
+ it { page.should have_selector('div', :text => product.name) }
123
+ it { page.should have_selector('div', :text => product.price) }
124
+ it { page.should have_selector('div', :text => product.description) }
125
+ it { should have_content("#{I18n.t("Gallery")}: #{Adminpanel::Product.display_name}")}
126
+ it { should have_link('i', adminpanel.edit_product_path(product)) }
157
127
  end
158
128
  end