jam-cloud/web/spec/features/jamtrack_shopping_spec.rb

134 lines
4.5 KiB
Ruby

require 'spec_helper'
describe "JamTrack Shopping", :js => true, :type => :feature, :capybara_feature => true do
let(:user) { FactoryGirl.create(:user) }
let(:jt_us) { FactoryGirl.create(:jam_track, sales_region: 'United States', make_track: true) }
let(:jt_ww) { FactoryGirl.create(:jam_track, sales_region: 'Worldwide', make_track: true) }
let(:jt_rock) { FactoryGirl.create(:jam_track, genre: JamRuby::Genre.find('rock'), make_track: true) }
before(:each) do
ShoppingCart.delete_all
JamTrack.delete_all
JamTrackTrack.delete_all
JamTrackLicensor.delete_all
jt_us.touch
jt_ww.touch
jt_rock.touch
stub_const("APP_CONFIG", web_config)
fast_signin user, "/client#/home"
find('.homecard.jamtrack h2', text: 'jamtracks')
end
def find_jamtrack jamtrack, options = {}
jamtrack_record = find(".jamtrack-record[jamtrack-id=\"#{jamtrack.id}\"]")
jamtrack_record.find('.detail-value', text: jamtrack.name)
jamtrack_record.find('.detail-value', text: jamtrack.recording_type)
jamtrack_record.find('.detail-value', text: jamtrack.original_artist)
jamtrack_record.find('.detail-value', text: jamtrack.genre.description)
jamtrack_record.find('.detail-value', text: [jamtrack.songwriter, jamtrack.publisher].join(', '))
jamtrack_record.find('.copyright-value', text: jamtrack.licensor.name)
jamtrack_record.find('.jamtrack-price', text: "$ #{jamtrack.price}")
if jamtrack.sales_region == 'United States'
jamtrack_record.find('a.license-us-why', text: 'why?').trigger(:click)
find('#jamtrack-availability-dialog h1', text: 'JamTrack Availability:')
find('#jamtrack-availability-dialog #dialog-close-button').trigger(:click)
end
jamtrack.jam_track_tracks.each do |track|
jamtrack_record.find('.instrument-desc', "#{track.instrument.description} ( #{track.part} }")
end
if options[:added_cart]
jamtrack_record.find('a.jamtrack-add-cart-disabled', text: 'Added to Cart')
else
jamtrack_record.find('a.jamtrack-add-cart.button-orange', text: 'Add to Cart')
end
end
def not_find_jamtrack jamtrack
should_not have_selector(".jamtrack-record[jamtrack-id=\"#{jamtrack.id}\"]")
end
describe "Shopping" do
before(:each) do
visit "/client#/jamtrack"
find('h1', text: 'jamtracks')
find('a', text: 'What is a JamTrack?')
jk_select('Any', '#jamtrack-find-form #jamtrack_availability')
end
it "shows all JamTracks" do
find_jamtrack jt_us
find_jamtrack jt_ww
find_jamtrack jt_rock
end
it "filters with availability" do
jk_select('Worldwide', '#jamtrack-find-form #jamtrack_availability')
find_jamtrack jt_ww
not_find_jamtrack jt_us
not_find_jamtrack jt_rock
end
it "filters with genre" do
jk_select('Rock', '#jamtrack-find-form #jamtrack_genre')
find_jamtrack jt_rock
not_find_jamtrack jt_us
not_find_jamtrack jt_ww
end
it "filters with instrument" do
jk_select('Electric Guitar', '#jamtrack-find-form #jamtrack_instrument')
find_jamtrack jt_us
find_jamtrack jt_ww
find_jamtrack jt_rock
end
end
describe "Shopping Carts" do
before(:each) do
visit "/client#/jamtrack"
find('h1', text: 'jamtracks')
find('a', text: 'What is a JamTrack?')
jk_select('Any', '#jamtrack-find-form #jamtrack_availability')
end
it "adds/deletes JamTrack to/from Cart" do
find("a.jamtrack-add-cart[data-jamtrack-id=\"#{jt_us.id}\"]").trigger(:click)
find('h1', text: 'shopping cart')
find('.cart-item-caption', text: "JamTrack: #{jt_us.name}")
find('.cart-item-price', text: "$ #{jt_us.price}")
find('a.button-orange', text: 'CONTINUE SHOPPING').trigger(:click)
jk_select('Any', '#jamtrack-find-form #jamtrack_availability')
find_jamtrack jt_us, {added_cart: true}
find('a.header-shopping-cart').trigger(:click)
find("a.remove-cart").trigger(:click)
find('a.button-orange', text: 'CONTINUE SHOPPING').trigger(:click)
jk_select('Any', '#jamtrack-find-form #jamtrack_availability')
find_jamtrack jt_us
find("a.jamtrack-add-cart[data-jamtrack-id=\"#{jt_us.id}\"]").trigger(:click)
find('a.button-orange', text: 'CONTINUE SHOPPING').trigger(:click)
find("a.jamtrack-add-cart[data-jamtrack-id=\"#{jt_ww.id}\"]").trigger(:click)
find('a.button-orange', text: 'CONTINUE SHOPPING').trigger(:click)
find('.shopping-sub-total', text: "Subtotal: $ #{jt_us.price + jt_ww.price}")
end
end
end