solidus_reviews 1.0.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +35 -0
  3. data/.gem_release.yml +5 -0
  4. data/.github/stale.yml +17 -0
  5. data/.gitignore +12 -8
  6. data/.rspec +1 -1
  7. data/.rubocop.yml +2 -0
  8. data/.rubocop_todo.yml +221 -0
  9. data/CHANGELOG.md +132 -0
  10. data/Gemfile +17 -3
  11. data/{LICENSE.md → LICENSE} +2 -2
  12. data/README.md +33 -50
  13. data/Rakefile +5 -18
  14. data/app/controllers/spree/admin/feedback_reviews_controller.rb +3 -1
  15. data/app/controllers/spree/admin/review_settings_controller.rb +3 -1
  16. data/app/controllers/spree/admin/reviews_controller.rb +9 -6
  17. data/app/controllers/spree/feedback_reviews_controller.rb +19 -19
  18. data/app/controllers/spree/reviews_controller.rb +38 -7
  19. data/app/decorators/controllers/solidus_reviews/spree/products_controller_decorator.rb +15 -0
  20. data/app/decorators/helpers/solidus_reviews/spree/api/api_helpers_decorator.rb +33 -0
  21. data/app/decorators/models/solidus_reviews/spree/product_decorator.rb +31 -0
  22. data/app/decorators/models/solidus_reviews/spree/user_decorator.rb +15 -0
  23. data/app/helpers/spree/reviews_helper.rb +15 -5
  24. data/app/models/spree/feedback_review.rb +7 -6
  25. data/app/models/spree/permission_sets/review_display.rb +11 -0
  26. data/app/models/spree/permission_sets/review_management.rb +11 -0
  27. data/app/models/spree/review.rb +46 -13
  28. data/app/models/spree/reviews_ability.rb +24 -5
  29. data/app/models/spree/reviews_configuration.rb +25 -8
  30. data/app/overrides/add_reviews_after_product_properties.rb +7 -5
  31. data/app/overrides/add_reviews_tab_to_admin.rb +20 -4
  32. data/app/overrides/add_reviews_to_admin_configuration_sidebar.rb +20 -5
  33. data/app/views/spree/admin/feedback_reviews/index.html.erb +9 -9
  34. data/app/views/spree/admin/review_settings/edit.html.erb +71 -35
  35. data/app/views/spree/admin/reviews/_form.html.erb +26 -5
  36. data/app/views/spree/admin/reviews/edit.html.erb +5 -3
  37. data/app/views/spree/admin/reviews/index.html.erb +104 -88
  38. data/app/views/spree/api/reviews/_feedback_review.json.jbuilder +5 -0
  39. data/app/views/spree/api/reviews/_review.json.jbuilder +11 -0
  40. data/app/views/spree/api/reviews/index.json.jbuilder +6 -0
  41. data/app/views/spree/api/reviews/show.json.jbuilder +3 -0
  42. data/app/views/spree/feedback_reviews/_form.html.erb +5 -5
  43. data/app/views/spree/feedback_reviews/_summary.html.erb +3 -3
  44. data/app/views/spree/feedback_reviews/create.js.erb +2 -2
  45. data/app/views/spree/reviews/_form.html.erb +17 -10
  46. data/app/views/spree/reviews/edit.html.erb +3 -0
  47. data/app/views/spree/reviews/new.html.erb +2 -2
  48. data/app/views/spree/shared/_rating.html.erb +3 -3
  49. data/app/views/spree/shared/_review.html.erb +31 -19
  50. data/app/views/spree/shared/_review_summary.html.erb +3 -3
  51. data/app/views/spree/shared/_reviews.html.erb +6 -6
  52. data/app/views/spree/shared/_shortrating.html.erb +2 -2
  53. data/bin/console +17 -0
  54. data/bin/rails +13 -3
  55. data/bin/setup +8 -0
  56. data/config/initializers/constants.rb +2 -0
  57. data/config/initializers/load_preferences.rb +2 -0
  58. data/config/locales/de-CH.yml +15 -2
  59. data/config/locales/de.yml +15 -2
  60. data/config/locales/en-GB.yml +16 -3
  61. data/config/locales/en.yml +16 -2
  62. data/config/locales/es.yml +16 -3
  63. data/config/locales/fr.yml +15 -3
  64. data/config/locales/it.yml +79 -0
  65. data/config/locales/pl.yml +15 -3
  66. data/config/locales/pt-BR.yml +15 -3
  67. data/config/locales/pt.yml +15 -3
  68. data/config/locales/ro.yml +16 -4
  69. data/config/locales/ru.yml +14 -2
  70. data/config/locales/sv.yml +15 -2
  71. data/config/locales/tr.yml +15 -3
  72. data/config/locales/uk.yml +15 -2
  73. data/config/locales/zh-CN.yml +15 -2
  74. data/config/locales/zh-TW.yml +15 -2
  75. data/config/routes.rb +21 -2
  76. data/db/migrate/20081020220724_create_reviews.rb +4 -2
  77. data/db/migrate/20101222083309_create_feedback_reviews.rb +5 -3
  78. data/db/migrate/20110406083603_add_rating_to_products.rb +7 -5
  79. data/db/migrate/20110606150524_add_user_to_reviews.rb +4 -2
  80. data/db/migrate/20110806093221_add_ip_address_to_reviews.rb +3 -1
  81. data/db/migrate/20120110172331_namespace_tables.rb +3 -1
  82. data/db/migrate/20120123141326_recalculate_ratings.rb +7 -7
  83. data/db/migrate/20120712182514_add_locale_to_reviews.rb +4 -2
  84. data/db/migrate/20120712182627_add_locale_to_feedback_reviews.rb +4 -2
  85. data/db/migrate/20140703200946_add_show_identifier_to_reviews.rb +3 -1
  86. data/db/migrate/20190613165528_add_verified_purchaser_to_reviews.rb +7 -0
  87. data/lib/controllers/spree/api/feedback_reviews_controller.rb +91 -0
  88. data/lib/controllers/spree/api/reviews_controller.rb +113 -0
  89. data/lib/generators/solidus_reviews/install/install_generator.rb +5 -4
  90. data/lib/solidus_reviews.rb +7 -5
  91. data/lib/solidus_reviews/engine.rb +26 -0
  92. data/lib/solidus_reviews/factories.rb +3 -1
  93. data/lib/solidus_reviews/factories/feedback_review_factory.rb +6 -5
  94. data/lib/solidus_reviews/factories/review_factory.rb +19 -9
  95. data/lib/solidus_reviews/version.rb +5 -0
  96. data/solidus_reviews.gemspec +32 -32
  97. data/spec/controllers/{admin → spree/admin}/feedback_reviews_controller_spec.rb +10 -8
  98. data/spec/controllers/spree/admin/review_settings_controller_spec.rb +58 -0
  99. data/spec/controllers/spree/admin/reviews_controller_spec.rb +65 -0
  100. data/spec/controllers/spree/api/feedback_reviews_controller_spec.rb +136 -0
  101. data/spec/controllers/spree/api/reviews_controller_spec.rb +238 -0
  102. data/spec/controllers/spree/feedback_reviews_controller_spec.rb +75 -0
  103. data/spec/controllers/spree/reviews_controller_spec.rb +298 -0
  104. data/spec/features/admin_spec.rb +9 -6
  105. data/spec/features/reviews_spec.rb +54 -37
  106. data/spec/helpers/review_helper_spec.rb +3 -2
  107. data/spec/models/feedback_review_spec.rb +19 -17
  108. data/spec/models/product_spec.rb +49 -24
  109. data/spec/models/review_spec.rb +133 -52
  110. data/spec/models/reviews_ability_spec.rb +16 -14
  111. data/spec/models/reviews_configuration_spec.rb +46 -26
  112. data/spec/spec_helper.rb +13 -44
  113. data/spec/support/config.rb +7 -0
  114. data/spec/support/factories.rb +3 -0
  115. data/vendor/assets/javascripts/jquery.rating.js +389 -376
  116. metadata +81 -190
  117. data/.travis.yml +0 -18
  118. data/CONTRIBUTING.md +0 -28
  119. data/app/controllers/spree/products_controller_decorator.rb +0 -5
  120. data/app/models/spree/product_decorator.rb +0 -21
  121. data/lib/spree_reviews/engine.rb +0 -17
  122. data/spec/controllers/admin/review_settings_controller_spec.rb +0 -57
  123. data/spec/controllers/admin/reviews_controller_spec.rb +0 -63
  124. data/spec/controllers/feedback_reviews_controller_spec.rb +0 -71
  125. data/spec/controllers/products_controller_spec.rb +0 -9
  126. data/spec/controllers/reviews_controller_spec.rb +0 -136
@@ -0,0 +1,298 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Spree::ReviewsController, type: :controller do
6
+ let(:user) { create(:user) }
7
+ let(:product) { create(:product) }
8
+ let(:review) { create(:review, :approved, product: product, user: user) }
9
+ let(:review_params) do
10
+ { product_id: product.slug,
11
+ review: { rating: 3,
12
+ name: 'Ryan Bigg',
13
+ title: 'Great Product',
14
+ review: 'Some big review text..',
15
+ images: [
16
+ fixture_file_upload(File.new(Spree::Core::Engine.root + 'spec/fixtures/thinking-cat.jpg'))
17
+ ] } }
18
+ end
19
+
20
+ before do
21
+ allow(controller).to receive(:spree_current_user).and_return(user)
22
+ allow(controller).to receive(:spree_user_signed_in?).and_return(true)
23
+ end
24
+
25
+ describe '#index' do
26
+ context 'for a product that does not exist' do
27
+ it 'responds with a 404' do
28
+ expect {
29
+ get :index, params: { product_id: 'not_real' }
30
+ }.to raise_error(ActiveRecord::RecordNotFound)
31
+ end
32
+ end
33
+
34
+ context 'for a valid product' do
35
+ it 'list approved reviews' do
36
+ approved_reviews = [
37
+ create(:review, :approved, product: product),
38
+ create(:review, :approved, product: product)
39
+ ]
40
+ get :index, params: { product_id: product.slug }
41
+ expect(assigns[:approved_reviews]).to match_array approved_reviews
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#new' do
47
+ context 'for a product that does not exist' do
48
+ it 'responds with a 404' do
49
+ expect {
50
+ get :new, params: { product_id: 'not_real' }
51
+ }.to raise_error(ActiveRecord::RecordNotFound)
52
+ end
53
+ end
54
+
55
+ it 'fail if the user is not authorized to create a review' do
56
+ allow(controller).to receive(:authorize!).and_raise(RuntimeError)
57
+
58
+ expect {
59
+ post :new, params: { product_id: product.slug }
60
+ assert_match 'ryanbig', response.body
61
+ }.to raise_error RuntimeError
62
+ end
63
+
64
+ it 'render the new template' do
65
+ get :new, params: { product_id: product.slug }
66
+ expect(response.status).to eq(200)
67
+ expect(response).to render_template(:new)
68
+ end
69
+ end
70
+
71
+ describe '#edit' do
72
+
73
+ context 'for a product that does not exist' do
74
+ it 'responds with a 404' do
75
+ expect {
76
+ get :edit, params: { id: review.id, product_id: 'not_real' }
77
+ }.to raise_error(ActiveRecord::RecordNotFound)
78
+ end
79
+ end
80
+
81
+ it 'fail if the user is not authorized to edit a review' do
82
+ allow(controller).to receive(:authorize!).and_raise(RuntimeError)
83
+
84
+ expect {
85
+ post :edit, params: { id: review.id, product_id: product.slug }
86
+ assert_match 'ryanbig', response.body
87
+ }.to raise_error RuntimeError
88
+ end
89
+
90
+ it 'render the edit template' do
91
+ get :edit, params: { id: review.id, product_id: product.slug }
92
+ expect(response.status).to eq(200)
93
+ expect(response).to render_template(:edit)
94
+ end
95
+
96
+ it 'doesn\'t allow another user to update a users review' do
97
+ other_user = create(:user)
98
+ allow(controller).to receive(:spree_current_user).and_return(other_user)
99
+ get :edit, params: {id: review.id, product_id: product.slug }
100
+ expect(response).to_not render_template(:edit)
101
+ expect(flash[:error]).to eq "Authorization Failure"
102
+ end
103
+ end
104
+
105
+ describe '#create' do
106
+ before { allow(controller).to receive(:spree_current_user).and_return(user) }
107
+
108
+ context 'for a product that does not exist' do
109
+ it 'responds with a 404' do
110
+ expect {
111
+ post :create, params: { product_id: 'not_real' }
112
+ }.to raise_error(ActiveRecord::RecordNotFound)
113
+ end
114
+ end
115
+
116
+ it 'creates a new review' do
117
+ expect {
118
+ post :create, params: review_params
119
+ }.to change(Spree::Review, :count).by(1)
120
+ end
121
+
122
+ it 'creates a rating only review' do
123
+ review_params = {
124
+ product_id: product.slug,
125
+ review: { rating: 3 }
126
+ }
127
+
128
+ expect {
129
+ post :create, params: review_params
130
+ }.to change(Spree::Review, :count).by(1)
131
+ end
132
+
133
+ it 'sets the ip-address of the remote' do
134
+ @request.env['REMOTE_ADDR'] = '127.0.0.1'
135
+ post :create, params: review_params
136
+ expect(assigns[:review].ip_address).to eq '127.0.0.1'
137
+ end
138
+
139
+ it 'attaches the image' do
140
+ post :create, params: review_params
141
+ expect(assigns[:review].images).to be_present
142
+ end
143
+
144
+ it 'fails if the user is not authorized to create a review' do
145
+ allow(controller).to receive(:authorize!).and_raise(RuntimeError)
146
+
147
+ expect{
148
+ post :create, params: review_params
149
+ }.to raise_error RuntimeError
150
+ end
151
+
152
+ it 'flashes the notice' do
153
+ post :create, params: review_params
154
+ expect(flash[:notice]).to eq I18n.t('spree.review_successfully_submitted')
155
+ end
156
+
157
+ it 'redirects to product page' do
158
+ post :create, params: review_params
159
+ expect(response).to redirect_to spree.product_path(product)
160
+ end
161
+
162
+ it 'removes all non-numbers from ratings param' do
163
+ post :create, params: review_params
164
+ expect(controller.params[:review][:rating]).to eq '3'
165
+ end
166
+
167
+ it 'sets the current spree user as reviews user' do
168
+ post :create, params: review_params
169
+ review_params[:review][:user_id] = user.id
170
+ assigns[:review][:user_id] = user.id
171
+ expect(assigns[:review][:user_id]).to eq user.id
172
+ end
173
+
174
+ context 'with invalid params' do
175
+ it 'renders new when review.save fails' do
176
+ expect_any_instance_of(Spree::Review).to receive(:save).and_return(false)
177
+ post :create, params: review_params
178
+ expect(response).to render_template :new
179
+ end
180
+
181
+ it 'does not create a review' do
182
+ expect(Spree::Review.count).to eq 0
183
+ post :create, params: review_params.merge(review: { rating: 'not_a_number' })
184
+ expect(Spree::Review.count).to eq 0
185
+ end
186
+ end
187
+
188
+ # It always sets the locale so preference pointless
189
+ context 'when config requires locale tracking:' do
190
+ it 'sets the locale' do
191
+ stub_spree_preferences(Spree::Reviews::Config, track_locale: true)
192
+ post :create, params: review_params
193
+ expect(assigns[:review].locale).to eq I18n.locale.to_s
194
+ end
195
+ end
196
+ end
197
+
198
+ describe '#update' do
199
+ before {
200
+ allow(controller).to receive(:spree_current_user).and_return(user)
201
+ @review_params = { product_id: product.slug,
202
+ id: review.id,
203
+ review: { title: 'Amazing Product' } }
204
+ }
205
+
206
+ context 'for a product that does not exist' do
207
+ it 'responds with a 404' do
208
+ expect {
209
+ post :update, params: { id: review.id, product_id: 'not_real' }
210
+ }.to raise_error(ActiveRecord::RecordNotFound)
211
+ end
212
+ end
213
+
214
+ it 'updates a review' do
215
+ post :update, params: @review_params
216
+
217
+ expect(assigns[:review].title).to eq 'Amazing Product'
218
+ expect(assigns[:review].product).to eq product
219
+ expect(assigns[:review].user).to eq user
220
+ end
221
+
222
+ it 'updates a review to be a rating only review' do
223
+ post :update, params: {
224
+ product_id: product.slug,
225
+ id: review.id,
226
+ review: { title: '', review: '', rating: 5 }
227
+ }
228
+
229
+ expect(assigns[:review].title).to eq ''
230
+ expect(assigns[:review].review).to eq ''
231
+ expect(assigns[:review].rating).to eq 5
232
+ end
233
+
234
+ it 'updates the attached image' do
235
+ post :update, params: {
236
+ product_id: product.slug,
237
+ id: review.id,
238
+ review: {
239
+ images: [
240
+ fixture_file_upload(File.new(Spree::Core::Engine.root + 'spec/fixtures/thinking-cat.jpg')),
241
+ ] }
242
+ }
243
+ expect(assigns[:review].images.count).to eq 1
244
+ end
245
+
246
+ it 'fails if the user is not authorized to create a review' do
247
+ allow(controller).to receive(:authorize!).and_raise(RuntimeError)
248
+
249
+ expect{
250
+ post :update, params: @review_params
251
+ }.to raise_error RuntimeError
252
+ end
253
+
254
+ it 'flashes the notice' do
255
+ post :update, params: @review_params
256
+
257
+ expect(flash[:notice]).to eq I18n.t('spree.review_successfully_submitted')
258
+ end
259
+
260
+ it 'redirects to product page' do
261
+ post :update, params: @review_params
262
+ review.reload
263
+ review.valid?
264
+ expect(response).to redirect_to spree.product_path(product)
265
+ end
266
+
267
+ it 'removes all non-numbers from ratings param' do
268
+ @review_params[:review][:rating] = 5
269
+ post :update, params: @review_params
270
+ expect(controller.params[:review][:rating]).to eq '5'
271
+ end
272
+
273
+ it 'doesnt change the current spree user as reviews user' do
274
+ post :update, params: @review_params
275
+ expect(assigns[:review].user_id).to eq user.id
276
+ end
277
+
278
+ context 'with invalid params' do
279
+ it 'renders edit when review.save fails' do
280
+ expect_any_instance_of(Spree::Review).to receive(:update).and_return(false)
281
+ post :update, params: @review_params
282
+ expect(response).to render_template :edit
283
+ end
284
+
285
+ it 'does not update a review' do
286
+ original_rating = review.rating
287
+ original_title = review.title
288
+ @review_params[:review][:rating] = 'not_a_number'
289
+ @review_params[:review][:title] = true
290
+ post :update, params: @review_params
291
+
292
+ review.reload
293
+ expect(review.rating).to eq original_rating
294
+ expect(review.title).to eq original_title
295
+ end
296
+ end
297
+ end
298
+ end
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- RSpec.feature 'Review Admin' do
5
+ RSpec.describe 'Review Admin' do
4
6
  stub_authorization!
5
7
 
6
- given!(:review) { create(:review) }
8
+ let!(:review) { create(:review) }
7
9
 
8
10
  context 'index' do
9
- background do
11
+ before do
10
12
  visit spree.admin_reviews_path
11
13
  end
12
14
 
13
- scenario 'list reviews' do
15
+ it 'list reviews' do
14
16
  expect(page).to have_text review.product.name
15
17
  end
16
18
 
17
- scenario 'approve reviews' do
19
+ it 'approve reviews' do
18
20
  expect(review.approved).to be false
19
21
  within("tr#review_#{review.id}") do
20
22
  find('.approve').click
@@ -22,7 +24,7 @@ RSpec.feature 'Review Admin' do
22
24
  expect(review.reload.approved).to be true
23
25
  end
24
26
 
25
- scenario 'edit reviews' do
27
+ it 'edit reviews' do
26
28
  expect(page).to have_text review.product.name
27
29
  within("tr#review_#{review.id}") do
28
30
  find('.edit').click
@@ -30,6 +32,7 @@ RSpec.feature 'Review Admin' do
30
32
 
31
33
  expect(page).to have_text 'Editing'
32
34
  expect(page).to have_text review.title
35
+ expect(page).to have_css('a', text: review.email)
33
36
  end
34
37
  end
35
38
  end
@@ -1,78 +1,95 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- feature 'Reviews', js: true do
4
- given!(:someone) { create(:user, email: 'ryan@spree.com') }
5
- given!(:review) { create(:review, :approved, user: someone) }
5
+ describe 'Reviews', js: true do
6
+ let!(:someone) { create(:user, email: 'ryan@spree.com') }
7
+ let!(:review) { create(:review, :approved, user: someone) }
8
+ let!(:unapproved_review) { create(:review, product: review.product) }
6
9
 
7
- background do
8
- Spree::Reviews::Config.include_unapproved_reviews = false
10
+ before do
11
+ stub_spree_preferences(Spree::Reviews::Config, include_unapproved_reviews: false)
9
12
  end
10
13
 
11
14
  context 'product with no review' do
12
- given!(:product_no_reviews) { create(:product) }
13
- scenario 'informs that no reviews has been written yet' do
15
+ let!(:product_no_reviews) { create(:product) }
16
+
17
+ it 'informs that no reviews has been written yet' do
14
18
  visit spree.product_path(product_no_reviews)
15
- expect(page).to have_text Spree.t(:no_reviews_available)
19
+ expect(page).to have_text I18n.t('spree.no_reviews_available')
16
20
  end
17
21
 
18
22
  # Regression test for #103
19
23
  context "shows correct number of previews" do
20
- background do
21
- FactoryGirl.create_list :review, 3, product: product_no_reviews, approved: true
22
- Spree::Reviews::Config[:preview_size] = 2
24
+ before do
25
+ FactoryBot.create_list :review, 3, product: product_no_reviews, approved: true
26
+ stub_spree_preferences(Spree::Reviews::Config, preview_size: 2)
23
27
  end
24
28
 
25
- scenario "displayed reviews are limited by the set preview size" do
29
+ it "displayed reviews are limited by the set preview size" do
26
30
  visit spree.product_path(product_no_reviews)
27
- expect(page.all(".review").count).to eql(2)
31
+ expect(page.all(".review").count).to be(2)
28
32
  end
29
33
  end
30
34
  end
31
35
 
32
36
  context 'when anonymous user' do
33
- background do
34
- Spree::Reviews::Config.require_login = true
37
+ before do
38
+ stub_spree_preferences(Spree::Reviews::Config, require_login: true)
35
39
  end
36
40
 
37
41
  context 'visit product with review' do
38
- background do
42
+ before do
39
43
  visit spree.product_path(review.product)
40
44
  end
41
45
 
42
- scenario 'should see review title' do
46
+ it 'sees review title' do
43
47
  expect(page).to have_text review.title
44
48
  end
45
49
 
46
- scenario 'can not create review' do
47
- expect(page).not_to have_text Spree.t(:write_your_own_review)
50
+ it 'can not create review' do
51
+ expect(page).not_to have_text I18n.t('spree.write_your_own_review')
48
52
  end
49
53
  end
50
54
  end
51
55
 
52
56
  context 'when logged in user' do
53
- given!(:user) { create(:user) }
57
+ let!(:user) { create(:user) }
54
58
 
55
- background do
59
+ before do
56
60
  sign_in_as! user
57
61
  end
58
62
 
59
63
  context 'visit product with review' do
60
- background do
64
+ before do
61
65
  visit spree.product_path(review.product)
62
66
  end
63
67
 
64
- scenario 'can see review title' do
68
+ it 'can see review title' do
65
69
  expect(page).to have_text review.title
66
70
  end
67
71
 
68
- scenario 'can see create new review button' do
69
- expect(page).to have_text Spree.t(:write_your_own_review)
72
+ context 'with unapproved content allowed' do
73
+ before do
74
+ stub_spree_preferences(Spree::Reviews::Config, include_unapproved_reviews: true)
75
+ stub_spree_preferences(Spree::Reviews::Config, display_unapproved_reviews: true)
76
+ visit spree.product_path(review.product)
77
+ end
78
+
79
+ it 'can see unapproved content when allowed' do
80
+ expect(unapproved_review.approved?).to eq(false)
81
+ expect(page).to have_text unapproved_review.title
82
+ end
83
+ end
84
+
85
+ it 'can see create new review button' do
86
+ expect(page).to have_text I18n.t('spree.write_your_own_review')
70
87
  end
71
88
 
72
- scenario 'can create new review' do
73
- click_on Spree.t(:write_your_own_review)
89
+ it 'can create new review' do
90
+ click_on I18n.t('spree.write_your_own_review')
74
91
 
75
- expect(page).to have_text Spree.t(:leave_us_a_review_for, name: review.product.name)
92
+ expect(page).to have_text I18n.t('spree.leave_us_a_review_for', name: review.product.name)
76
93
  expect(page).not_to have_text 'Show Identifier'
77
94
 
78
95
  within '#new_review' do
@@ -81,28 +98,28 @@ feature 'Reviews', js: true do
81
98
  fill_in 'review_name', with: user.email
82
99
  fill_in 'review_title', with: 'Great product!'
83
100
  fill_in 'review_review', with: 'Some big review text..'
101
+ attach_file 'review_images', Spree::Core::Engine.root + 'spec/fixtures/thinking-cat.jpg'
84
102
  click_on 'Submit your review'
85
103
  end
86
-
87
- expect(page.find('.flash.notice', text: Spree.t(:review_successfully_submitted))).to be_truthy
104
+
105
+ expect(page.find('.flash.notice', text: I18n.t('spree.review_successfully_submitted'))).to be_truthy
88
106
  expect(page).not_to have_text 'Some big review text..'
89
107
  end
90
108
  end
91
109
  end
92
110
 
93
111
  context 'visit product with review where show_identifier is false' do
94
- given!(:user) { create(:user) }
95
- given!(:review) { create(:review, :approved, :hide_identifier, review: 'review text', user: user) }
96
-
97
- background do
112
+ let!(:user) { create(:user) }
113
+ let!(:review) { create(:review, :approved, :hide_identifier, review: 'review text', user: user) }
114
+
115
+ before do
98
116
  visit spree.product_path(review.product)
99
117
  end
100
118
 
101
- scenario 'show anonymous review' do
102
- expect(page).to have_text Spree.t(:anonymous)
119
+ it 'show anonymous review' do
120
+ expect(page).to have_text I18n.t('spree.anonymous')
103
121
  expect(page).to have_text 'review text'
104
122
  end
105
-
106
123
  end
107
124
 
108
125
  private