Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 3-1-stable specs #7525

Merged
merged 4 commits into from Aug 12, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions .travis.yml
Expand Up @@ -14,6 +14,8 @@ env:
- GEM=sample DB=mysql
- GEM=sample DB=postgres
before_install:
- gem update --system 2.4.8
- gem --version
- cd $GEM; export BUNDLE_GEMFILE="`pwd`/Gemfile"
script:
- bundle exec rake test_app
Expand Down
44 changes: 24 additions & 20 deletions api/spec/controllers/spree/api/v1/orders_controller_spec.rb
Expand Up @@ -65,23 +65,25 @@ module Spree
end

it "returns orders in reverse chronological order by completed_at" do
order.update_columns completed_at: Time.current

order2 = Order.create user: order.user, completed_at: Time.current - 1.day
expect(order2.created_at).to be > order.created_at
order3 = Order.create user: order.user, completed_at: nil
expect(order3.created_at).to be > order2.created_at
order4 = Order.create user: order.user, completed_at: nil
expect(order4.created_at).to be > order3.created_at

api_get :mine
expect(response.status).to eq(200)
expect(json_response["pages"]).to eq(1)
expect(json_response["orders"].length).to eq(4)
expect(json_response["orders"][0]["number"]).to eq(order.number)
expect(json_response["orders"][1]["number"]).to eq(order2.number)
expect(json_response["orders"][2]["number"]).to eq(order4.number)
expect(json_response["orders"][3]["number"]).to eq(order3.number)
Timecop.scale(3600) do
order.update_columns completed_at: Time.current

order2 = Order.create user: order.user, completed_at: Time.current - 1.day
expect(order2.created_at).to be > order.created_at
order3 = Order.create user: order.user, completed_at: nil
expect(order3.created_at).to be > order2.created_at
order4 = Order.create user: order.user, completed_at: nil
expect(order4.created_at).to be > order3.created_at

api_get :mine
expect(response.status).to eq(200)
expect(json_response["pages"]).to eq(1)
expect(json_response["orders"].length).to eq(4)
expect(json_response["orders"][0]["number"]).to eq(order.number)
expect(json_response["orders"][1]["number"]).to eq(order2.number)
expect(json_response["orders"][2]["number"]).to eq(order4.number)
expect(json_response["orders"][3]["number"]).to eq(order3.number)
end
end
end

Expand All @@ -102,9 +104,11 @@ module Spree

context "multiple incomplete orders exist" do
it "returns the latest incomplete order" do
new_order = Spree::Order.create! user: order.user
expect(new_order.created_at).to be > order.created_at
expect(JSON.parse(subject.body)['id']).to eq new_order.id
Timecop.scale(3600) do
new_order = Spree::Order.create! user: order.user
expect(new_order.created_at).to be > order.created_at
expect(JSON.parse(subject.body)['id']).to eq new_order.id
end
end
end

Expand Down
Expand Up @@ -20,7 +20,7 @@ def model_class
Rails.application.reload_routes!
end

with_model 'Widget' do
with_model 'Widget', scope: :all do
table do |t|
t.string :name
t.integer :position
Expand Down Expand Up @@ -140,7 +140,9 @@ def model_class
end

it 'touches updated_at' do
expect { subject }.to change { widget_1.reload.updated_at }
Timecop.scale(3600) do
expect { subject }.to change { widget_1.reload.updated_at }
end
end
end
end
Expand Down Expand Up @@ -171,7 +173,7 @@ def model_class
Rails.application.reload_routes!
end

with_table 'spree_posts' do |t|
with_table 'spree_posts', scope: :all do |t|
t.string :name
t.integer :position
t.timestamps null: false
Expand Down
2 changes: 1 addition & 1 deletion core/spec/lib/spree/core/importer/order_spec.rb
Expand Up @@ -588,7 +588,7 @@ module Core
]
}
order = Importer::Order.import(user, params)
expect(order.payments.first.created_at).to be_within(0.1).of created_at
expect(order.payments.first.created_at).to be_within(1).of created_at
end

context "raises error" do
Expand Down
13 changes: 8 additions & 5 deletions core/spec/models/spree/asset_spec.rb
Expand Up @@ -3,12 +3,15 @@
describe Spree::Asset, :type => :model do
describe "#viewable" do
it "touches association" do
product = create(:custom_product)
asset = Spree::Asset.create! { |a| a.viewable = product.master }
Timecop.scale(3600) do

expect do
asset.touch
end.to change { product.reload.updated_at }
product = create(:custom_product)
asset = Spree::Asset.create! { |a| a.viewable = product.master }

expect do
asset.touch
end.to change { product.reload.updated_at }
end
end
end

Expand Down
3 changes: 3 additions & 0 deletions core/spec/models/spree/order/store_credit_spec.rb
Expand Up @@ -96,10 +96,13 @@
let(:order) { create(:order, user: primary_store_credit.user, total: order_total) }

before do
Timecop.scale(3600)
subject
order.reload
end

after { Timecop.return }

it 'uses the primary store credit type over the secondary' do
primary_payment = order.payments.first
secondary_payment = order.payments.last
Expand Down
31 changes: 15 additions & 16 deletions core/spec/models/spree/product_spec.rb
Expand Up @@ -21,6 +21,21 @@ class Extension < Spree::Base
is_expected.to have_many(:possible_promotions).
class_name('Spree::Promotion').through(:promotion_rules).source(:promotion)
end

it do
is_expected.to have_many(:variants).
class_name('Spree::Variant').
inverse_of(:product).
conditions(is_master: false).
order(:position)
end

it do
is_expected.to have_many(:variants_including_master).
class_name('Spree::Variant').
inverse_of(:product).
order(:position)
end
end

context 'product instance' do
Expand Down Expand Up @@ -182,22 +197,6 @@ class Extension < Spree::Base
end
end

describe 'Variants sorting' do
ORDER_REGEXP = /ORDER BY (\`|\")spree_variants(\`|\").(\'|\")position(\'|\") ASC/

context 'without master variant' do
it 'sorts variants by position' do
expect(product.variants.to_sql).to match(ORDER_REGEXP)
end
end

context 'with master variant' do
it 'sorts variants by position' do
expect(product.variants_including_master.to_sql).to match(ORDER_REGEXP)
end
end
end

context "has stock movements" do
let(:variant) { product.master }
let(:stock_item) { variant.stock_items.first }
Expand Down
8 changes: 4 additions & 4 deletions core/spec/models/spree/store_credit_spec.rb
Expand Up @@ -180,7 +180,7 @@
end

context 'originator is present' do
with_model 'OriginatorThing'
with_model 'OriginatorThing', scope: :all

let(:originator) { OriginatorThing.create! } # won't actually be a user. just giving it a valid model here

Expand Down Expand Up @@ -335,7 +335,7 @@
end

context 'originator is present' do
with_model 'OriginatorThing'
with_model 'OriginatorThing', scope: :all

let(:originator) { OriginatorThing.create! } # won't actually be a user. just giving it a valid model here

Expand Down Expand Up @@ -407,7 +407,7 @@
end

context 'originator is present' do
with_model 'OriginatorThing'
with_model 'OriginatorThing', scope: :all

let(:originator) { OriginatorThing.create! } # won't actually be a user. just giving it a valid model here

Expand Down Expand Up @@ -534,7 +534,7 @@
end

context 'originator is present' do
with_model 'OriginatorThing'
with_model 'OriginatorThing', scope: :all

let(:originator) { OriginatorThing.create! } # won't actually be a user. just giving it a valid model here

Expand Down
14 changes: 10 additions & 4 deletions core/spec/models/spree/user_spec.rb
Expand Up @@ -6,12 +6,18 @@
let!(:user) { create(:user) }
let!(:order) { create(:order, bill_address: create(:address), ship_address: create(:address)) }

let!(:order_1) { create(:order, created_at: 1.day.ago, user: user, created_by: user) }
let!(:order_2) { create(:order, user: user, created_by: user) }
let!(:order_3) { create(:order, user: user, created_by: create(:user)) }
let(:order_1) { create(:order, created_at: 1.day.ago, user: user, created_by: user) }
let(:order_2) { create(:order, user: user, created_by: user) }
let(:order_3) { create(:order, user: user, created_by: create(:user)) }

it 'returns correct order' do
expect(user.last_incomplete_spree_order).to eq order_3
Timecop.scale(3600) do
order_1
order_2
order_3

expect(user.last_incomplete_spree_order).to eq order_3
end
end

context 'persists order address' do
Expand Down
4 changes: 4 additions & 0 deletions frontend/spec/features/cart_spec.rb
@@ -1,6 +1,10 @@
require 'spec_helper'

describe "Cart", type: :feature, inaccessible: true do
before { Timecop.scale(100) }

after { Timecop.return }

it "shows cart icon on non-cart pages" do
visit spree.root_path
expect(page).to have_selector("li#link-to-cart a", visible: true)
Expand Down