spec/integration/smoke_test.rb in hashrocket-mousetrap-0.2.1 vs spec/integration/smoke_test.rb in hashrocket-mousetrap-0.3.0

- old
+ new

@@ -1,16 +1,149 @@ -require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') -require File.dirname(__FILE__) + '/../../lib/mousetrap' +require File.expand_path('../../../lib/mousetrap', __FILE__) + +require 'spec' +require 'spec/autorun' +require 'factory_girl' +require 'active_support' require 'yaml' -require 'activesupport' Dir["#{File.dirname(__FILE__)}/../support/**/*.rb"].each {|f| require f} settings = YAML.load_file(File.dirname(__FILE__) + '/settings.yml') Mousetrap.authenticate(settings['user'], settings['password']) Mousetrap.product_code = settings['product_code'] +Spec::Runner.configure do |config| + config.before :suite do + begin + Mousetrap::Customer.destroy_all + rescue + end + end +end + +shared_examples_for "a Customer record from CheddarGetter" do + describe "And I get the customer" do + before :all do + @api_customer = Mousetrap::Customer[@customer.code] + end + + it "Then I should see first name" do + @api_customer.first_name.should == @customer.first_name + end + + it "And I should see last name" do + @api_customer.last_name.should == @customer.last_name + end + + it "And I should see the code" do + @api_customer.code.should == @customer.code + end + + it "And I should see the ID" do + @api_customer.id.should == @customer.id + end + end +end + describe "The Wrapper Gem" do - it "works" do - true.should be_true + describe Mousetrap::Customer do + describe ".all" do + describe "Given a few customers on CheddarGetter" do + before :all do + 3.times { Factory(:new_customer).save } + violated "Couldn't save customers" unless Mousetrap::Customer.all.size == 3 + end + + describe "When I call .all" do + before :all do + @all_customers = Mousetrap::Customer.all + end + + it "Then I should get all the customers" do + @all_customers.size.should == 3 + end + end + end + end + + describe ".create" do + describe "When I create a customer" do + before :all do + attributes = Factory.attributes_for :new_customer + @customer = Mousetrap::Customer.create attributes + end + + it_should_behave_like "a Customer record from CheddarGetter" + end + end + + describe ".destroy_all" do + describe "Given a few customers on CheddarGetter" do + before :all do + Mousetrap::Customer.destroy_all + 3.times { Factory(:new_customer).save } + violated "Couldn't save customers" unless Mousetrap::Customer.all.size == 3 + end + + describe "When I call .destroy_all" do + before :all do + Mousetrap::Customer.destroy_all + end + + it "Then there should be no customers" do + Mousetrap::Customer.all.size.should == 0 + end + end + end + end + + describe "#cancel" do + describe "Given a customer" do + before :all do + @customer = Factory :new_customer + @customer.save + @api_customer = Mousetrap::Customer[@customer.code] + end + + describe "When I cancel" do + before :all do + @api_customer.cancel + end + + describe "And I get the customer" do + before :all do + @api_customer = Mousetrap::Customer[@customer.code] + end + + it "Then I should see a cancelation date on subscription" do + @api_customer.subscription.canceled_at.should be + end + end + end + end + end + + describe "#save" do + describe "When I save a customer" do + before :all do + @customer = Factory :new_customer + @customer.save + end + + it_should_behave_like "a Customer record from CheddarGetter" + + describe "And I save it again, with different attributes" do + before :all do + attributes = Factory.attributes_for :new_customer + @customer.first_name = attributes[:first_name] + @customer.last_name = attributes[:last_name] + @customer.email = attributes[:email] + @customer.save + end + + it_should_behave_like "a Customer record from CheddarGetter" + end + end + end end end