157 lines
5.4 KiB
Ruby
157 lines
5.4 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, :name=>'jt_us', sales_region: 'United States', make_track: true, original_artist: "foobar") }
|
|
let(:jt_ww) { FactoryGirl.create(:jam_track, :name=>'jt_ww', sales_region: 'Worldwide', make_track: true, original_artist: "barfoo") }
|
|
let(:jt_rock) { FactoryGirl.create(:jam_track, :name=>'jt_rock', genre: JamRuby::Genre.find('rock'), make_track: true, original_artist: "badfood") }
|
|
let(:jt_blues) { FactoryGirl.create(:jam_track, :name=>'jt_blues', genre: JamRuby::Genre.find('blues'), make_track: true, original_artist: "foodbart") }
|
|
|
|
before(:all) do
|
|
Capybara.javascript_driver = :poltergeist
|
|
Capybara.current_driver = Capybara.javascript_driver
|
|
Capybara.default_wait_time = 30 # these tests are SLOOOOOW
|
|
end
|
|
|
|
|
|
before(:each) do
|
|
ShoppingCart.delete_all
|
|
JamTrackRight.delete_all
|
|
JamTrack.delete_all
|
|
JamTrackTrack.delete_all
|
|
JamTrackLicensor.delete_all
|
|
|
|
jt_us.touch
|
|
jt_ww.touch
|
|
jt_rock.touch
|
|
jt_blues.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
|
|
|
|
if options[:added_cart]
|
|
jamtrack_record.find('a.jamtrack-add-cart-disabled', text: 'Already In Cart')
|
|
else
|
|
jamtrack_record.find('a.jamtrack-add-cart.button-orange', text: 'Add to Cart')
|
|
end
|
|
jamtrack_record
|
|
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#/jamtrackBrowse"
|
|
find('h1', text: 'jamtracks')
|
|
|
|
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 artist" do
|
|
jk_select("foobar", '#jamtrack-find-form #jamtrack_artist')
|
|
find_jamtrack jt_us
|
|
not_find_jamtrack jt_blues
|
|
not_find_jamtrack jt_rock
|
|
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
|
|
|
|
it "sets artist filter" do
|
|
pending "The item is clearly present, so not currently sure why capybar can't find it"
|
|
visit "/client?artist=foobar#/jamtrackBrowse"
|
|
art = find('#jamtrack_artist')
|
|
puts "art: #{art}"
|
|
end
|
|
|
|
describe "Shopping Carts" do
|
|
|
|
before(:each) do
|
|
visit "/client#/jamtrackBrowse"
|
|
find('h1', text: 'jamtracks')
|
|
|
|
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
|
|
|
|
it "can expand" do
|
|
jamtrack = find_jamtrack(jt_us)
|
|
jamtrack.find('.jamtrack-detail-btn').trigger(:click)
|
|
|
|
jt_us.jam_track_tracks.each do |track|
|
|
jamtrack.find('.instrument-name', track.instrument.description)
|
|
jamtrack.find('.part', "(#{track.part}}")
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|