diff --git a/.rspec b/.rspec new file mode 100644 index 0000000..cf6add7 --- /dev/null +++ b/.rspec @@ -0,0 +1 @@ +--colour \ No newline at end of file diff --git a/Gemfile b/Gemfile index caa8242..d272462 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,6 @@ source 'http://rubygems.org' group :test do - # without ffaker in test it wont init - # https://github.com/spree/spree/pull/833 gem 'ffaker' gem 'shoulda-matchers' gem 'guard-rspec' @@ -13,4 +11,6 @@ group :test do end end +gem 'spree', '~> 1.1.1' + gemspec diff --git a/spec/factories.rb b/spec/factories.rb deleted file mode 100644 index c0ae53a..0000000 --- a/spec/factories.rb +++ /dev/null @@ -1,6 +0,0 @@ -require 'factory_girl' - -Dir["#{File.dirname(__FILE__)}/factories/**"].each do |f| - fp = File.expand_path(f) - require fp -end diff --git a/spec/factories/digital_factory.rb b/spec/factories/digital_factory.rb index 1b029ca..c8e6f3c 100644 --- a/spec/factories/digital_factory.rb +++ b/spec/factories/digital_factory.rb @@ -1,3 +1,5 @@ -Factory.define :digital, :class => Spree::Digital do |f| - f.variant { |p| p.association(:variant) } +FactoryGirl.define do + factory :digital, :class => Spree::Digital do |f| + f.variant { |p| p.association(:variant) } + end end \ No newline at end of file diff --git a/spec/factories/digital_link_factory.rb b/spec/factories/digital_link_factory.rb index 140c644..0565be7 100644 --- a/spec/factories/digital_link_factory.rb +++ b/spec/factories/digital_link_factory.rb @@ -1,4 +1,6 @@ -Factory.define :digital_link, :class => Spree::DigitalLink do |f| - f.digital { |p| p.association(:digital) } - f.line_item { |p| p.association(:line_item) } +FactoryGirl.define do + factory :digital_link, :class => Spree::DigitalLink do |f| + f.digital { |p| p.association(:digital) } + f.line_item { |p| p.association(:line_item) } + end end \ No newline at end of file diff --git a/spec/models/digital_link_spec.rb b/spec/models/digital_link_spec.rb index eb75cf3..d59714b 100644 --- a/spec/models/digital_link_spec.rb +++ b/spec/models/digital_link_spec.rb @@ -10,29 +10,29 @@ describe Spree::DigitalLink do context "#create" do it "should have an appropriately long secret" do - Factory(:digital_link).secret.length.should == 30 + FactoryGirl.create(:digital_link).secret.length.should == 30 end it "should have the access counter being an Integer on zero" do - Factory(:digital_link).access_counter.should == 0 + FactoryGirl.create(:digital_link).access_counter.should == 0 end end context "#update" do it "should not change the secret when updated" do - digital_link = Factory(:digital_link) + digital_link = FactoryGirl.create(:digital_link) secret = digital_link.secret digital_link.increment(:access_counter).save digital_link.secret.should == secret end it "should enforce to have an associated digital" do - link = Factory(:digital_link) + link = FactoryGirl.create(:digital_link) lambda { link.update_attributes!(:digital => nil) }.should raise_error(ActiveRecord::RecordInvalid) end it "should not allow an empty or too short secret" do - link = Factory(:digital_link) + link = FactoryGirl.create(:digital_link) lambda { link.update_attributes!(:secret => nil) }.should raise_error(ActiveRecord::RecordInvalid) lambda { link.update_attributes!(:secret => 'x' * 25) }.should raise_error(ActiveRecord::RecordInvalid) end @@ -40,14 +40,14 @@ describe Spree::DigitalLink do context "authorization" do it "should increment the counter using #authorize!" do - link = Factory(:digital_link) + link = FactoryGirl.create(:digital_link) link.access_counter.should == 0 link.authorize! link.access_counter.should == 1 end it "should not be #authorized? when the access_counter is too high" do - link = Factory(:digital_link) + link = FactoryGirl.create(:digital_link) link.stub(:access_counter => Spree::DigitalConfiguration[:authorized_clicks] - 1) link.authorizable?.should be_true link.stub(:access_counter => Spree::DigitalConfiguration[:authorized_clicks]) @@ -55,7 +55,7 @@ describe Spree::DigitalLink do end it "should not be #authorize! when the created_at date is too far in the past" do - link = Factory(:digital_link) + link = FactoryGirl.create(:digital_link) link.authorize!.should be_true link.stub(:created_at => (Spree::DigitalConfiguration[:authorized_days] * 24 - 1).hours.ago) link.authorize!.should be_true @@ -64,7 +64,7 @@ describe Spree::DigitalLink do end it "should not be #authorized? when both access_counter and created_at are invalid" do - link = Factory(:digital_link) + link = FactoryGirl.create(:digital_link) link.authorizable?.should be_true link.stub(:access_counter => Spree::DigitalConfiguration[:authorized_clicks], :created_at => (Spree::DigitalConfiguration[:authorized_days] * 24 + 1).hours.ago) link.authorizable?.should be_false diff --git a/spec/models/digital_spec.rb b/spec/models/digital_spec.rb index 758d275..5ea6acf 100644 --- a/spec/models/digital_spec.rb +++ b/spec/models/digital_spec.rb @@ -13,8 +13,8 @@ describe Spree::Digital do context "#destroy" do #it "should destroy associated digital_links" do - # digital = Factory(:digital) - # 3.times { digital.digital_links.create! :order => Factory(:order) } + # digital = FactoryGirl.create(:digital) + # 3.times { digital.digital_links.create! :order => FactoryGirl.create(:order) } # DigitalLink.count.should == 3 # digital.destroy # DigitalLink.count.should == 0 diff --git a/spec/models/line_item_spec.rb b/spec/models/line_item_spec.rb index f6b27df..b8a64dd 100644 --- a/spec/models/line_item_spec.rb +++ b/spec/models/line_item_spec.rb @@ -4,16 +4,16 @@ describe Spree::LineItem do context "#save" do it "should create one link for a single digital Variant" do - digital_variant = Factory(:variant, :digital => Factory(:digital)) - line_item = Factory(:line_item, :variant => digital_variant) + digital_variant = FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) + line_item = FactoryGirl.create(:line_item, :variant => digital_variant) links = digital_variant.digital.digital_links links.all.size.should == 1 links.first.line_item.should == line_item end it "should create a link for each quantity of a digital Variant, even when quantity changes later" do - digital_variant = Factory(:variant, :digital => Factory(:digital)) - line_item = Factory(:line_item, :variant => digital_variant, :quantity => 5) + digital_variant = FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) + line_item = FactoryGirl.create(:line_item, :variant => digital_variant, :quantity => 5) links = digital_variant.digital.digital_links links.all.size.should == 5 links.each { |link| link.line_item.should == line_item } diff --git a/spec/models/order_spec.rb b/spec/models/order_spec.rb index 83eb072..404d055 100644 --- a/spec/models/order_spec.rb +++ b/spec/models/order_spec.rb @@ -8,18 +8,18 @@ describe Spree::Order do context "#add_variant" do it "should add digital Variants of quantity 1 to an order" do - order = Factory(:order) - order.add_variant variant1 = Factory(:variant, :digital => Factory(:digital)) - order.add_variant variant2 = Factory(:variant, :digital => Factory(:digital)) - order.add_variant variant3 = Factory(:variant, :digital => Factory(:digital)) + order = FactoryGirl.create(:order) + order.add_variant variant1 = FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) + order.add_variant variant2 = FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) + order.add_variant variant3 = FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) order.line_items.first.variant.should == variant1 order.line_items.second.variant.should == variant2 order.line_items.third.variant.should == variant3 end it "should handle quantity higher than 1 when adding one specific digital Variant" do - order = Factory(:order) - digital_variant = Factory(:variant, :digital => Factory(:digital)) + order = FactoryGirl.create(:order) + digital_variant = FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) order.add_variant digital_variant, 3 order.line_items.first.quantity.should == 3 order.add_variant digital_variant, 2 @@ -29,23 +29,23 @@ describe Spree::Order do context "line_item analysis" do it "should understand that all products are digital" do - order = Factory(:order) + order = FactoryGirl.create(:order) 3.times do - order.add_variant Factory(:variant, :digital => Factory(:digital)) + order.add_variant FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) end order.digital?.should be_true - order.add_variant Factory(:variant, :digital => Factory(:digital)), 4 + order.add_variant FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)), 4 order.digital?.should be_true end it "should understand that not all products are digital" do - order = Factory(:order) + order = FactoryGirl.create(:order) 3.times do - order.add_variant Factory(:variant, :digital => Factory(:digital)) + order.add_variant FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)) end - order.add_variant Factory(:variant) # this is the analog product + order.add_variant FactoryGirl.create(:variant) # this is the analog product order.digital?.should be_false - order.add_variant Factory(:variant, :digital => Factory(:digital)), 4 + order.add_variant FactoryGirl.create(:variant, :digital => FactoryGirl.create(:digital)), 4 order.digital?.should be_false end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 93c5af0..cfcaac1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -31,11 +31,11 @@ RSpec.configure do |config| config.use_transactional_fixtures = true end -require File.expand_path("../factories", __FILE__) +Dir[File.join(File.dirname(__FILE__), "factories/*.rb")].each {|f| require f } # not sure if this really adds anything, but this existed in the intial version of the spree_digital rspec testing RSpec::Matchers.define :have_valid_factory do |factory_name| match do |model| - Factory(factory_name).new_record?.should be_false + FactoryGirl.create(:factory_name).new_record?.should be_false end end \ No newline at end of file