solidus_auction 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 0a1fe7d8d9c14f1e8093fbc79879d54fd33ea200c296d1b7ed64c47b9e7c8bbd
4
- data.tar.gz: ae5dcbd06f934270edf570bbd06ea9fdde0c0fad6e754d948aa1b9d6049d87c5
2
+ SHA1:
3
+ metadata.gz: df131228829603b7884ec7fabf7419dc7f9d7b0b
4
+ data.tar.gz: d0c6aaef46255a495f88a9ab0f01dd1666e9d5b4
5
5
  SHA512:
6
- metadata.gz: 0173a8826375d4789d9e879351655b70020c7916063590bbabfd725b40c5443872541fd4f6b222f54664c656f8efd66a0eeb23449c6778ab3379555db4e919cc
7
- data.tar.gz: fb0972dc6c488928bf6bc673d9bf3c2e52dc4bd3eced004f31701b7038af5856db6b030aed2ce1b39468a3289594f98736deee893ed0f016bc08a37b84cda1e8
6
+ metadata.gz: 13a52317f888f1774d9062e91173cf6237c921a9f1a429efd0dd343b018ff7353ef3932563767eadab23a148e0db1cf4817c7ef245d8addd075b751470b1b8b3
7
+ data.tar.gz: acc34fc044f7fa75b3baea05744f7dc40a1557b861c1d076a73d91e232e77066c9b16c46077ffe3c563c3701dff66d22ebf87137b1d8bafc6d958c5ccea55a50
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ *.gem
2
+ \#*
3
+ *~
4
+ .#*
5
+ .DS_Store
6
+ .idea
7
+ .project
8
+ .sass-cache
9
+ coverage
10
+ Gemfile.lock
11
+ tmp
12
+ nbproject
13
+ pkg
14
+ *.swp
15
+ spec/dummy
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,246 @@
1
+ # Relaxed.Ruby.Style
2
+
3
+ AllCops:
4
+ Exclude:
5
+ - 'solidus_auction.gemspec'
6
+ - 'spec/dummy/**/*'
7
+ - 'vendor/bundle/**/*'
8
+ - 'app/controllers/spree/helpers/local_time_helper.rb'
9
+ - 'db/migrate/20180410025053_acts_as_votable_migration.rb'
10
+ TargetRubyVersion: 2.1
11
+
12
+ # Sometimes I believe this reads better
13
+ # This also causes spacing issues on multi-line fixes
14
+ Style/BracesAroundHashParameters:
15
+ Enabled: false
16
+
17
+ # We use class vars and will have to continue doing so for compatability
18
+ Style/ClassVars:
19
+ Enabled: false
20
+
21
+ # We need these names for backwards compatability
22
+ Naming/PredicateName:
23
+ Enabled: false
24
+
25
+ Naming/AccessorMethodName:
26
+ Enabled: false
27
+
28
+ # This has been used for customization
29
+ Style/MutableConstant:
30
+ Enabled: false
31
+
32
+ Style/ClassAndModuleChildren:
33
+ Enabled: false
34
+
35
+ Style/GuardClause:
36
+ Enabled: false
37
+
38
+ Style/WordArray:
39
+ Enabled: false
40
+
41
+ Style/ConditionalAssignment:
42
+ Enabled: false
43
+
44
+ Performance/Count:
45
+ Enabled: false
46
+
47
+ Style/RaiseArgs:
48
+ Enabled: false
49
+
50
+ Style/DateTime:
51
+ Enabled: false
52
+
53
+ Naming/BinaryOperatorParameterName:
54
+ Enabled: false
55
+
56
+ # We can use good judgement here
57
+ Style/RegexpLiteral:
58
+ Enabled: false
59
+
60
+ # Unicode comments are useful
61
+ Style/AsciiComments:
62
+ Enabled: false
63
+
64
+ Layout/EndAlignment:
65
+ Enabled: false
66
+
67
+ Layout/ElseAlignment:
68
+ Enabled: false
69
+
70
+ Layout/IndentationWidth:
71
+ Enabled: false
72
+
73
+ Layout/AlignParameters:
74
+ Enabled: false
75
+
76
+ Layout/ClosingParenthesisIndentation:
77
+ Enabled: false
78
+
79
+ Layout/MultilineMethodCallIndentation:
80
+ Enabled: false
81
+
82
+ Layout/IndentArray:
83
+ Enabled: false
84
+
85
+ Layout/IndentHash:
86
+ Enabled: false
87
+
88
+ Layout/AlignHash:
89
+ Enabled: false
90
+
91
+ # From http://relaxed.ruby.style/
92
+
93
+ Style/Alias:
94
+ Enabled: false
95
+ StyleGuide: http://relaxed.ruby.style/#stylealias
96
+
97
+ Style/BeginBlock:
98
+ Enabled: false
99
+ StyleGuide: http://relaxed.ruby.style/#stylebeginblock
100
+
101
+ Style/BlockDelimiters:
102
+ Enabled: false
103
+ StyleGuide: http://relaxed.ruby.style/#styleblockdelimiters
104
+
105
+ Style/Documentation:
106
+ Enabled: false
107
+ StyleGuide: http://relaxed.ruby.style/#styledocumentation
108
+
109
+ Layout/DotPosition:
110
+ Enabled: false
111
+ StyleGuide: http://relaxed.ruby.style/#styledotposition
112
+
113
+ Style/DoubleNegation:
114
+ Enabled: false
115
+ StyleGuide: http://relaxed.ruby.style/#styledoublenegation
116
+
117
+ Style/EndBlock:
118
+ Enabled: false
119
+ StyleGuide: http://relaxed.ruby.style/#styleendblock
120
+
121
+ Style/FormatString:
122
+ Enabled: false
123
+ StyleGuide: http://relaxed.ruby.style/#styleformatstring
124
+
125
+ Style/IfUnlessModifier:
126
+ Enabled: false
127
+ StyleGuide: http://relaxed.ruby.style/#styleifunlessmodifier
128
+
129
+ Style/Lambda:
130
+ Enabled: false
131
+ StyleGuide: http://relaxed.ruby.style/#stylelambda
132
+
133
+ Style/ModuleFunction:
134
+ Enabled: false
135
+ StyleGuide: http://relaxed.ruby.style/#stylemodulefunction
136
+
137
+ Style/MultilineBlockChain:
138
+ Enabled: false
139
+ StyleGuide: http://relaxed.ruby.style/#stylemultilineblockchain
140
+
141
+ Style/NegatedIf:
142
+ Enabled: false
143
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedif
144
+
145
+ Style/NegatedWhile:
146
+ Enabled: false
147
+ StyleGuide: http://relaxed.ruby.style/#stylenegatedwhile
148
+
149
+ Style/ParallelAssignment:
150
+ Enabled: false
151
+ StyleGuide: http://relaxed.ruby.style/#styleparallelassignment
152
+
153
+ Style/PercentLiteralDelimiters:
154
+ Enabled: false
155
+ StyleGuide: http://relaxed.ruby.style/#stylepercentliteraldelimiters
156
+
157
+ Style/PerlBackrefs:
158
+ Enabled: false
159
+ StyleGuide: http://relaxed.ruby.style/#styleperlbackrefs
160
+
161
+ Style/Semicolon:
162
+ Enabled: false
163
+ StyleGuide: http://relaxed.ruby.style/#stylesemicolon
164
+
165
+ Style/SignalException:
166
+ Enabled: false
167
+ StyleGuide: http://relaxed.ruby.style/#stylesignalexception
168
+
169
+ Style/SingleLineBlockParams:
170
+ Enabled: false
171
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelineblockparams
172
+
173
+ Style/SingleLineMethods:
174
+ Enabled: false
175
+ StyleGuide: http://relaxed.ruby.style/#stylesinglelinemethods
176
+
177
+ Layout/SpaceBeforeBlockBraces:
178
+ Enabled: false
179
+ StyleGuide: http://relaxed.ruby.style/#stylespacebeforeblockbraces
180
+
181
+ Layout/SpaceInsideParens:
182
+ Enabled: false
183
+ StyleGuide: http://relaxed.ruby.style/#stylespaceinsideparens
184
+
185
+ Style/SpecialGlobalVars:
186
+ Enabled: false
187
+ StyleGuide: http://relaxed.ruby.style/#stylespecialglobalvars
188
+
189
+ Style/StringLiterals:
190
+ Enabled: false
191
+ StyleGuide: http://relaxed.ruby.style/#stylestringliterals
192
+
193
+ Style/SymbolProc:
194
+ Enabled: false
195
+
196
+ Style/WhileUntilModifier:
197
+ Enabled: false
198
+ StyleGuide: http://relaxed.ruby.style/#stylewhileuntilmodifier
199
+
200
+ Lint/AmbiguousRegexpLiteral:
201
+ Enabled: false
202
+ StyleGuide: http://relaxed.ruby.style/#lintambiguousregexpliteral
203
+
204
+ Lint/AssignmentInCondition:
205
+ Enabled: false
206
+ StyleGuide: http://relaxed.ruby.style/#lintassignmentincondition
207
+
208
+ Lint/HandleExceptions:
209
+ Exclude:
210
+ - 'Rakefile'
211
+
212
+ Metrics/AbcSize:
213
+ Enabled: false
214
+
215
+ Metrics/BlockNesting:
216
+ Enabled: false
217
+
218
+ Metrics/BlockLength:
219
+ Enabled: false
220
+
221
+ Metrics/ClassLength:
222
+ Enabled: false
223
+
224
+ Metrics/ModuleLength:
225
+ Enabled: false
226
+
227
+ Metrics/CyclomaticComplexity:
228
+ Enabled: false
229
+
230
+ Metrics/LineLength:
231
+ Enabled: false
232
+
233
+ Metrics/MethodLength:
234
+ Enabled: false
235
+
236
+ Metrics/ParameterLists:
237
+ Enabled: false
238
+
239
+ Metrics/PerceivedComplexity:
240
+ Enabled: false
241
+
242
+ Style/ExpandPathArguments:
243
+ Enabled: false
244
+
245
+ Style/TrailingUnderscoreVariable:
246
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ before_script:
2
+ - "bundle exec rake test_app"
3
+ script: "bundle exec rake"
4
+ rvm:
5
+ - 2.4.2
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'solidus_auth_devise', '~> 1.0'
4
+
5
+ gemspec
data/auction_edit.png ADDED
Binary file
Binary file
data/auction_show.png ADDED
Binary file
Binary file
Binary file
data/bin/rails ADDED
@@ -0,0 +1,7 @@
1
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+
3
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
+ ENGINE_PATH = File.expand_path('../../lib/solidus_auction/engine', __FILE__)
5
+
6
+ require 'rails/all'
7
+ require 'rails/engine/commands'
@@ -1,3 +1,3 @@
1
1
  module SolidusAuction
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -0,0 +1,37 @@
1
+ # encoding: UTF-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'solidus_auction/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'solidus_auction'
7
+ s.version = "0.0.5"
8
+ s.summary = 'Adds auction functionality to a Solidus store'
9
+ s.description = 'Add auctions and bidding to a Solidus store - adds consumer frontend and admin pages'
10
+ s.license = 'BSD-3-Clause'
11
+ s.required_ruby_version = ">= 2.1"
12
+
13
+ s.author = "Jeffrey Gu"
14
+ s.homepage = "https://github.com/jgujgu/solidus_auction"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- spec/*`.split("\n")
18
+
19
+ s.add_dependency 'solidus'
20
+ s.add_dependency 'deface'
21
+ s.add_dependency 'acts_as_votable'
22
+
23
+ s.add_development_dependency 'awesome_print'
24
+ s.add_development_dependency 'capybara'
25
+ s.add_development_dependency 'coffee-rails'
26
+ s.add_development_dependency 'database_cleaner'
27
+ s.add_development_dependency 'factory_bot_rails'
28
+ s.add_development_dependency 'ffaker'
29
+ s.add_development_dependency 'poltergeist'
30
+ s.add_development_dependency 'rails-controller-testing'
31
+ s.add_development_dependency 'rspec-rails'
32
+ s.add_development_dependency 'rubocop'
33
+ s.add_development_dependency 'rubocop-rspec'
34
+ s.add_development_dependency 'sass-rails'
35
+ s.add_development_dependency 'simplecov'
36
+ s.add_development_dependency 'sqlite3'
37
+ end
@@ -0,0 +1,146 @@
1
+ require 'spec_helper'
2
+
3
+ describe Spree::Admin::AuctionsController do
4
+ stub_authorization!
5
+
6
+ let(:auction) { create(:auction) }
7
+ let(:product) { create(:product) }
8
+ let(:admin_user) { create(:admin_user) }
9
+ let(:user) { create(:user) }
10
+ let(:auction_params) {
11
+ { auction: {
12
+ title: FFaker::Book.title,
13
+ description: FFaker::Book.description,
14
+ starting_datetime: Time.now,
15
+ planned_end_datetime: Time.now + 1.day,
16
+ starting_price: Random.rand(4000),
17
+ product_id: product.id
18
+ } }
19
+ }
20
+
21
+ before do
22
+ controller.stub spree_current_user: admin_user
23
+ controller.stub spree_user_signed_in?: true
24
+ end
25
+
26
+ context '#index' do
27
+ it 'lists auctions' do
28
+ auctions = [
29
+ create(:auction),
30
+ create(:auction),
31
+ create(:auction)
32
+ ]
33
+ get :index
34
+ expect(assigns[:auctions]).to match_array auctions
35
+ end
36
+
37
+ it 'renders the index template' do
38
+ get :index
39
+ expect(response.status).to eq 200
40
+ expect(response).to render_template :index
41
+ end
42
+ end
43
+
44
+ context '#show' do
45
+ it 'redirects to #edit' do
46
+ get :show, params: { id: auction.id }
47
+ expect(response.status).to eq 302
48
+ end
49
+ end
50
+
51
+ context '#new' do
52
+ it 'assigns an auction instance variable' do
53
+ get :new
54
+ expect(assigns[:object]).to be_a_kind_of Spree::Auction
55
+ end
56
+
57
+ it 'assigns an auction instance variable' do
58
+ get :new
59
+ expect(assigns[:auction]).to be_a_kind_of Spree::Auction
60
+ end
61
+
62
+ it 'renders the new template' do
63
+ get :new
64
+ expect(response.status).to eq 200
65
+ expect(response).to render_template :new
66
+ end
67
+ end
68
+
69
+ context '#create' do
70
+ it 'creates an auction' do
71
+ expect {
72
+ post :create, params: auction_params
73
+ }.to change(Spree::Auction, :count).by(1)
74
+ end
75
+
76
+ it 'fails if the user is not authorized to create a review' do
77
+ controller.stub spree_current_user: user
78
+ controller.stub spree_user_signed_in?: true
79
+ controller.stub(:authorize!) { raise }
80
+ expect{
81
+ post :create, params: auction_params
82
+ }.to raise_error RuntimeError
83
+ end
84
+
85
+ it 'creates an auction connected to the signed in admin user' do
86
+ post :create, params: auction_params
87
+ expect(Spree::Auction.first.creator).to eq admin_user
88
+ end
89
+
90
+ it 'flashes a success' do
91
+ post :create, params: auction_params
92
+ expect(flash[:success]).to eq "Auction has been successfully created!"
93
+ end
94
+
95
+ it 'redirects to #show then #edit' do
96
+ post :create, params: auction_params
97
+ expect(response.status).to eq 302
98
+ end
99
+ end
100
+
101
+ context '#edit' do
102
+ it 'assigns an auction instance variable' do
103
+ get :edit, params: { id: auction.id }
104
+ expect(assigns[:auction]).to be_a_kind_of Spree::Auction
105
+ end
106
+
107
+ it 'renders the edit template' do
108
+ get :edit, params: { id: auction.id }
109
+ expect(response.status).to eq 200
110
+ expect(response).to render_template :edit
111
+ end
112
+ end
113
+
114
+ context '#update' do
115
+ let(:auction) { create(:auction, creator: admin_user) }
116
+ let(:update_auction_params) {
117
+ { id: auction.id, auction: {
118
+ title: FFaker::Book.title,
119
+ description: FFaker::Book.description,
120
+ starting_price: Random.rand(4000),
121
+ time_increment: Random.rand(60),
122
+ bid_increment: Random.rand(100),
123
+ countdown: 600
124
+ } }
125
+ }
126
+
127
+ it 'updates the auction' do
128
+ put :update, params: update_auction_params
129
+ auction.reload
130
+ update_auction_params[:auction].each do |k, v|
131
+ expect(auction[k]).to eq v
132
+ end
133
+ end
134
+
135
+ it 'flashes a successfully updated notice' do
136
+ put :update, params: update_auction_params
137
+ expect(flash[:success]).to eq("Auction has been successfully updated!")
138
+ end
139
+
140
+ it 'flashes an unsuccessfully updated notice for a nonexisting id number' do
141
+ update_auction_params[:id] = auction.id + 10
142
+ put :update, params: update_auction_params
143
+ expect(flash[:error]).to eq("Auction is not found")
144
+ end
145
+ end
146
+ end