93 lines
2.0 KiB
Ruby
93 lines
2.0 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe PosaCard do
|
|
|
|
let(:user) {FactoryGirl.create(:user)}
|
|
let(:card) {FactoryGirl.create(:posa_card)}
|
|
let(:card2) {FactoryGirl.create(:posa_card)}
|
|
let(:retailer) {FactoryGirl.create(:retailer)}
|
|
it "created by factory" do
|
|
card.touch
|
|
end
|
|
|
|
describe "activated" do
|
|
it "succeeds" do
|
|
card.activate(retailer)
|
|
|
|
card.errors.any?.should be false
|
|
card.activated_at.should_not be_nil
|
|
card.retailer.should eql retailer
|
|
end
|
|
|
|
it "cant be re-activated" do
|
|
|
|
card.activate(retailer)
|
|
|
|
Timecop.travel(Time.now + 1)
|
|
|
|
card.activate(retailer)
|
|
|
|
card.errors.any?.should be true
|
|
card.errors[:activated_at].should eql ['already activated. Please give card to customer. Thank you!']
|
|
end
|
|
|
|
it "must have retailer" do
|
|
|
|
card.activate(nil)
|
|
|
|
card.errors.any?.should be true
|
|
card.errors[:retailer].should eql ['must be specified']
|
|
end
|
|
end
|
|
|
|
describe "claim" do
|
|
it "succeeds" do
|
|
card.activate(retailer)
|
|
card.claim(user)
|
|
|
|
card.errors.any?.should be false
|
|
card.claimed_at.should_not be_nil
|
|
card.user.should eql user
|
|
end
|
|
|
|
it "must be already activated" do
|
|
|
|
card.claim(user)
|
|
|
|
card.errors.any?.should be true
|
|
card.errors[:activated_at].should eql ['must already be set']
|
|
end
|
|
|
|
it "cant be re-claimed" do
|
|
|
|
card.activate(retailer)
|
|
card.claim(user)
|
|
|
|
Timecop.travel(Time.now + 1)
|
|
|
|
card.claim(user)
|
|
|
|
card.errors.any?.should be true
|
|
card.errors[:claimed_at].should eql ['already claimed']
|
|
end
|
|
|
|
it "must have user" do
|
|
card.activate(retailer)
|
|
card.claim(nil)
|
|
|
|
card.errors.any?.should be true
|
|
card.errors[:user].should eql ['must be specified']
|
|
end
|
|
|
|
it "can't be within one year" do
|
|
card.activate(retailer)
|
|
card.claim(user)
|
|
|
|
card2.activate(retailer)
|
|
card2.claim(user)
|
|
|
|
card2.errors.any?.should be true
|
|
card2.errors[:user].should eql ['was within 1 year']
|
|
end
|
|
end
|
|
end |