155 lines
4.4 KiB
Ruby
155 lines
4.4 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(:card_lessons) {FactoryGirl.create(:posa_card_lesson_4)}
|
|
let(:card_lessons_2) {FactoryGirl.create(:posa_card_lesson_2)}
|
|
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 simple" do
|
|
PosaCard.activate(card, retailer)
|
|
card.reload
|
|
card.claim(user)
|
|
user.reload
|
|
user.jamclass_credits.should be 0
|
|
|
|
card.errors.any?.should be false
|
|
card.claimed_at.should_not be_nil
|
|
card.user.should eql user
|
|
end
|
|
|
|
it "succeeds with jamclass type" do
|
|
PosaCard.activate(card_lessons, retailer)
|
|
card_lessons.reload
|
|
card_lessons.claim(user)
|
|
user.jamclass_credits.should be 4
|
|
|
|
card_lessons.errors.any?.should be false
|
|
card_lessons.claimed_at.should_not be_nil
|
|
card_lessons.user.should eql user
|
|
card_lessons.reload
|
|
card_lessons.lesson_package_purchase.should_not be_nil
|
|
card_lessons.lesson_package_purchase.lesson_package_type.should eql card_lessons.lesson_package_type
|
|
card_lessons.lesson_package_purchase.posa_card.should eql card_lessons
|
|
end
|
|
|
|
it "succeeds with jamclass type 2-count" do
|
|
PosaCard.activate(card_lessons_2, retailer)
|
|
card_lessons_2.reload
|
|
card_lessons_2.claim(user)
|
|
user.reload
|
|
user.jamclass_credits.should be 2
|
|
|
|
card_lessons_2.errors.any?.should be false
|
|
card_lessons_2.claimed_at.should_not be_nil
|
|
card_lessons_2.user.should eql user
|
|
card_lessons_2.reload
|
|
card_lessons_2.lesson_package_purchase.should_not be_nil
|
|
card_lessons_2.lesson_package_purchase.lesson_package_type.should eql card_lessons_2.lesson_package_type
|
|
card_lessons_2.lesson_package_purchase.posa_card.should eql card_lessons_2
|
|
end
|
|
|
|
it "associates student automatically for GC" do
|
|
gc = GuitarCenter.init
|
|
gc_owner = gc[:user]
|
|
gc_school = gc[:school]
|
|
gc_retailer = gc[:retailer]
|
|
|
|
PosaCard.activate(card_lessons, gc_retailer)
|
|
card_lessons.reload
|
|
card_lessons.claim(user)
|
|
|
|
user.reload
|
|
user.is_guitar_center_student?.should be_true
|
|
card_lessons.errors.any?.should be false
|
|
card_lessons.claimed_at.should_not be_nil
|
|
card_lessons.user.should eql user
|
|
card_lessons.reload
|
|
card_lessons.lesson_package_purchase.should_not be_nil
|
|
card_lessons.lesson_package_purchase.lesson_package_type.should eql card_lessons.lesson_package_type
|
|
card_lessons.lesson_package_purchase.posa_card.should eql card_lessons
|
|
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
|
|
|
|
PosaCard.activate(card, retailer)
|
|
card.reload
|
|
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
|
|
PosaCard.activate(card, retailer)
|
|
card.reload
|
|
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
|
|
PosaCard.activate(card_lessons, retailer)
|
|
card_lessons.reload
|
|
card_lessons.claim(user)
|
|
|
|
PosaCard.activate(card_lessons_2, retailer)
|
|
card_lessons_2.reload
|
|
card_lessons_2.claim(user)
|
|
|
|
card_lessons_2.errors.any?.should be true
|
|
card_lessons_2.errors[:claimed_at].should eql ['was within 1 year']
|
|
end
|
|
end
|
|
end |