solidus_auction 0.0.4 → 0.0.5

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.
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Spree::Bid, type: :model do
4
+ context 'initializes' do
5
+ let(:bidder) { create(:user) }
6
+ let(:bid) { create(:bid, { bidder: bidder }) }
7
+
8
+ it 'has an amount' do
9
+ expect(bid.amount).to eq 26.00
10
+ end
11
+
12
+ it 'has a bidder' do
13
+ expect(bid.bidder).to be bidder
14
+ end
15
+
16
+ it 'has no visibility or acceptance by default' do
17
+ expect(bid.visible).to be false
18
+ expect(bid.accepted).to be false
19
+ end
20
+ end
21
+
22
+ context 'changes state during auction reception' do
23
+ let(:creator) { create(:user) }
24
+ let(:product) { create(:product) }
25
+ let!(:auction) {
26
+ create(:auction, {
27
+ product: product,
28
+ creator: creator,
29
+ starting_price: 25.00,
30
+ bid_increment: 1.00
31
+ })}
32
+ let(:bidder) { create(:user) }
33
+ let(:bidder1) { create(:user) }
34
+ let(:bidder2) { create(:user) }
35
+
36
+ it 'is visible and accepted as the highest bid within increment' do
37
+ bid = create(:bid, amount: 26.00, auction: auction, bidder: bidder)
38
+
39
+ auction.receive_bid(bid)
40
+ expect(auction.current_price).to eq 26.00
41
+ bid.reload
42
+ expect(bid.visible).to be true
43
+ expect(bid.accepted).to be true
44
+ end
45
+
46
+ it 'is invisible and unaccepted if it is below current price' do
47
+ bid = create(:bid, amount: 15.00, auction: auction, bidder: bidder)
48
+
49
+ auction.receive_bid(bid)
50
+ expect(auction.current_price).to eq 25.00
51
+ bid.reload
52
+ expect(bid.visible).to be false
53
+ expect(bid.accepted).to be false
54
+ end
55
+
56
+ it 'is invisible and accepted as the highest bid exceeding increment' do
57
+ bid = create(:bid, amount: 50.00, auction: auction, bidder: bidder)
58
+
59
+ auction.receive_bid(bid)
60
+ expect(auction.current_price).to eq 26.00
61
+ bid.reload
62
+ expect(bid.visible).to be false
63
+ expect(bid.accepted).to be true
64
+ end
65
+
66
+ it 'is visible and accepted even when out-autobid' do
67
+ bid1 = create(:bid, amount: 50.00, auction: auction, bidder: bidder1)
68
+
69
+ auction.receive_bid(bid1)
70
+ expect(auction.current_price).to eq 26.00
71
+
72
+ bid2 = create(:bid, amount: 30.00, auction: auction, bidder: bidder2)
73
+ auction.receive_bid(bid2)
74
+ expect(auction.current_price).to eq 31.00
75
+
76
+ bid2.reload
77
+ expect(bid2.visible).to be true
78
+ expect(bid2.accepted).to be true
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,97 @@
1
+ # Run Coverage report
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter 'spec/dummy'
5
+ add_group 'Controllers', 'app/controllers'
6
+ add_group 'Helpers', 'app/helpers'
7
+ add_group 'Mailers', 'app/mailers'
8
+ add_group 'Models', 'app/models'
9
+ add_group 'Views', 'app/views'
10
+ add_group 'Libraries', 'lib'
11
+ end
12
+
13
+ # Configure Rails Environment
14
+ ENV['RAILS_ENV'] = 'test'
15
+
16
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
17
+
18
+ require 'rspec/rails'
19
+ require 'database_cleaner'
20
+ require 'ffaker'
21
+ require 'awesome_print'
22
+ require 'rails-controller-testing'
23
+
24
+ # Requires supporting ruby files with custom matchers and macros, etc,
25
+ # in spec/support/ and its subdirectories.
26
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
27
+
28
+ # Requires factories and other useful helpers defined in spree_core.
29
+ require 'spree/testing_support/authorization_helpers'
30
+ require 'spree/testing_support/capybara_ext'
31
+ require 'spree/testing_support/controller_requests'
32
+ require 'spree/testing_support/factories'
33
+ require 'spree/testing_support/url_helpers'
34
+
35
+ # Requires factories defined in lib/solidus_auction/factories.rb
36
+ require 'solidus_auction/factories'
37
+
38
+ RSpec.configure do |config|
39
+ config.include FactoryBot::Syntax::Methods
40
+ require 'solidus_auction/factories'
41
+
42
+ # Infer an example group's spec type from the file location.
43
+ config.infer_spec_type_from_file_location!
44
+
45
+ # == URL Helpers
46
+ #
47
+ # Allows access to Spree's routes in specs:
48
+ #
49
+ # visit spree.admin_path
50
+ # current_path.should eql(spree.products_path)
51
+ config.include Spree::TestingSupport::UrlHelpers
52
+ config.include Spree::TestingSupport::ControllerRequests, type: :controller
53
+
54
+ # == Mock Framework
55
+ #
56
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
57
+ #
58
+ # config.mock_with :mocha
59
+ # config.mock_with :flexmock
60
+ # config.mock_with :rr
61
+ config.mock_with :rspec
62
+ config.color = true
63
+
64
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
65
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
66
+
67
+ # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
68
+ # to cleanup after each test instead. Without transactional fixtures set to false the records created
69
+ # to setup a test will be unavailable to the browser, which runs under a separate server instance.
70
+ config.use_transactional_fixtures = false
71
+
72
+ # Ensure Suite is set to use transactions for speed.
73
+ config.before :suite do
74
+ DatabaseCleaner.strategy = :transaction
75
+ DatabaseCleaner.clean_with :truncation
76
+ end
77
+
78
+ # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
79
+ config.before :each do
80
+ DatabaseCleaner.strategy = RSpec.current_example.metadata[:js] ? :truncation : :transaction
81
+ DatabaseCleaner.start
82
+ end
83
+
84
+ # After each spec clean the database.
85
+ config.after :each do
86
+ DatabaseCleaner.clean
87
+ end
88
+
89
+ config.fail_fast = ENV['FAIL_FAST'] || false
90
+ config.order = 'random'
91
+
92
+ %i{controller view request}.each do |type|
93
+ config.include ::Rails::Controller::Testing::TestProcess, type: type
94
+ config.include ::Rails::Controller::Testing::TemplateAssertions, type: type
95
+ config.include ::Rails::Controller::Testing::Integration, type: type
96
+ end
97
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_auction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeffrey Gu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-19 00:00:00.000000000 Z
11
+ date: 2018-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus
@@ -255,6 +255,11 @@ executables: []
255
255
  extensions: []
256
256
  extra_rdoc_files: []
257
257
  files:
258
+ - ".gitignore"
259
+ - ".rspec"
260
+ - ".rubocop.yml"
261
+ - ".travis.yml"
262
+ - Gemfile
258
263
  - LICENSE
259
264
  - README.md
260
265
  - Rakefile
@@ -346,6 +351,12 @@ files:
346
351
  - app/views/spree/shared/_variant_stock_item_disable.html.erb
347
352
  - app/views/spree/shared/_votes.html.erb
348
353
  - app/views/spree/votes/index.html.erb
354
+ - auction_edit.png
355
+ - auction_in_cart.png
356
+ - auction_show.png
357
+ - auctions_admin_index.png
358
+ - auctions_index.png
359
+ - bin/rails
349
360
  - config/locales/en.yml
350
361
  - config/routes.rb
351
362
  - db/migrate/20180225234309_create_auctions.rb
@@ -379,6 +390,15 @@ files:
379
390
  - lib/solidus_auction/engine.rb
380
391
  - lib/solidus_auction/factories.rb
381
392
  - lib/solidus_auction/version.rb
393
+ - solidus_auction.gemspec
394
+ - spec/controllers/admin/auctions_controller_spec.rb
395
+ - spec/controllers/auctions_controller_spec.rb
396
+ - spec/controllers/bids_controller_spec.rb
397
+ - spec/features/auctions_spec.rb
398
+ - spec/models/auction_ability_spec.rb
399
+ - spec/models/auction_spec.rb
400
+ - spec/models/bid_spec.rb
401
+ - spec/spec_helper.rb
382
402
  homepage: https://github.com/jgujgu/solidus_auction
383
403
  licenses:
384
404
  - BSD-3-Clause
@@ -399,8 +419,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
399
419
  version: '0'
400
420
  requirements: []
401
421
  rubyforge_project:
402
- rubygems_version: 2.7.3
422
+ rubygems_version: 2.6.14
403
423
  signing_key:
404
424
  specification_version: 4
405
425
  summary: Adds auction functionality to a Solidus store
406
- test_files: []
426
+ test_files:
427
+ - spec/controllers/admin/auctions_controller_spec.rb
428
+ - spec/controllers/auctions_controller_spec.rb
429
+ - spec/controllers/bids_controller_spec.rb
430
+ - spec/features/auctions_spec.rb
431
+ - spec/models/auction_ability_spec.rb
432
+ - spec/models/auction_spec.rb
433
+ - spec/models/bid_spec.rb
434
+ - spec/spec_helper.rb