diff --git a/ruby/db/migrate/20210202183522_create_init_structure.rb b/ruby/db/migrate/20210202183522_create_init_structure.rb index 65fd6d6ea..f5b54d99e 100644 --- a/ruby/db/migrate/20210202183522_create_init_structure.rb +++ b/ruby/db/migrate/20210202183522_create_init_structure.rb @@ -1,6 +1,6 @@ class CreateInitStructure < ActiveRecord::Migration def up # this can't apply in production or staging, -- and schema.rb captures this test/dev environments - #ActiveRecord::Base.connection.execute(IO.read(File.expand_path("../../init_db.sql", __FILE__))) + ActiveRecord::Base.connection.execute(IO.read(File.expand_path("../../init_db.sql", __FILE__))) end end diff --git a/ruby/lib/jam_ruby/test_support.rb b/ruby/lib/jam_ruby/test_support.rb index 727d57a3f..7fe5e8a26 100644 --- a/ruby/lib/jam_ruby/test_support.rb +++ b/ruby/lib/jam_ruby/test_support.rb @@ -4,13 +4,13 @@ module JamRuby class TestSupport #helper for resetting test database - #drop create and execute db migrations + #drop create and execute db migrations def self.recreate_database ENV['RAILS_ENV'] = 'test' Rake.application.init Rake.application.load_rakefile begin - Rake::Task['db:jam_ruby:drop'].invoke + Rake::Task['db:jam_ruby:drop'].invoke Rake::Task['db:jam_ruby:create'].invoke Rake::Task['db:jam_ruby:migrate'].invoke rescue ActiveRecord::NoDatabaseError @@ -23,7 +23,9 @@ module JamRuby def self.migrate_database ENV['RAILS_ENV'] = 'test' - Rake.application.init + # invoke init in this way; otherwise any args passed to rspec will pass through to the rake task and blow it up. + # for instance, bundle exec rspec spec/some.rb -e "specific test" will cause a weird error + Rake.application.init('rake', []) Rake.application.load_rakefile Rake::Task['db:jam_ruby:migrate'].invoke end diff --git a/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb b/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb index 7876b9bff..c5a78dbfa 100644 --- a/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb +++ b/ruby/spec/jam_ruby/models/affiliate_partner_spec.rb @@ -61,16 +61,16 @@ describe AffiliatePartner do FactoryGirl.create(:user, :created_at => Time.now - 6.days, :affiliate_referral_id => partner.id) FactoryGirl.create(:user, :created_at => Time.now - 6.days, :affiliate_referral_id => partner.id) FactoryGirl.create(:user, :created_at => Time.now - 3.days, :affiliate_referral_id => partner.id) - FactoryGirl.create(:user, :created_at => Time.now - 2.days, :affiliate_referral_id => partner.id) + recent = FactoryGirl.create(:user, :created_at => Time.now - 2.days, :affiliate_referral_id => partner.id) partner.reload expect(partner.referral_user_count).to eq(6) by_date = partner.referrals_by_date expect(by_date.count).to eq(4) keys = by_date.keys - expect(keys.first).to eq(Date.parse((Time.now - 2.days).to_s)) + expect(keys.first).to eq(Date.parse((Time.now.utc - 2.days).to_s)) expect(by_date[keys.first]).to eq(1) - expect(keys.last).to eq(Date.parse((Time.now - 7.days).to_s)) + expect(keys.last).to eq(Date.parse((Time.now.utc - 7.days).to_s)) expect(by_date[keys.last]).to eq(2) end diff --git a/web/bin/test b/web/bin/test index 025517a7b..b99e7eeb3 100755 --- a/web/bin/test +++ b/web/bin/test @@ -5,6 +5,10 @@ tests=( "spec/features/signup_spec.rb" "spec/features/signin_spec.rb" + "spec/features/affiliate_program_spec.rb" + "spec/features/affiliate_visit_tracking_spec.rb" + "spec/features/affiliate_referral_spec.rb" + "spec/controllers/api_affiliate_controller_spec.rb" ) diff --git a/web/spec/features/affiliate_program_spec.rb b/web/spec/features/affiliate_program_spec.rb index 26378cd92..ea4edeeae 100644 --- a/web/spec/features/affiliate_program_spec.rb +++ b/web/spec/features/affiliate_program_spec.rb @@ -7,7 +7,6 @@ describe "Affiliate Program", :js => true, :type => :feature, :capybara_feature let(:user) { FactoryGirl.create(:user) } before(:each) do - User.delete_all AffiliateQuarterlyPayment.delete_all AffiliateMonthlyPayment.delete_all AffiliateTrafficTotal.delete_all @@ -27,16 +26,16 @@ describe "Affiliate Program", :js => true, :type => :feature, :capybara_feature it "logged in user creates affiliate" do fast_signin user, '/affiliateProgram' - find('input#entity_individual').trigger(:click) + find('input#entity_individual').click - find('.agree-button').trigger(:click) + find('.agree-button').click find('h1', text: 'congratulations') - find('.button-orange', text: 'GO TO AFFILIATE PAGE').trigger(:click) + find('.button-orange', text: 'GO TO AFFILIATE PAGE').click find('.tab-account', text: 'So please provide this data, and be sure to keep it current!') - partner = AffiliatePartner.first + partner = AffiliatePartner.order('created_at desc').first partner.partner_user.should eq(user) partner.entity_type.should eq('Individual') end @@ -44,18 +43,18 @@ describe "Affiliate Program", :js => true, :type => :feature, :capybara_feature it "logged in user creates entity affiliate" do fast_signin user, '/affiliateProgram' - find('input#entity_entity').trigger(:click) + find('input#entity_entity').click fill_in('entity-name', with: 'Mr. Bubbles') select('Sole Proprietor', from:'entity-type') - find('.agree-button').trigger(:click) + find('.agree-button').click find('h1', text: 'congratulations') - find('.button-orange', text: 'GO TO AFFILIATE PAGE').trigger(:click) + find('.button-orange', text: 'GO TO AFFILIATE PAGE').click find('.tab-account', text: 'So please provide this data, and be sure to keep it current!') - partner = AffiliatePartner.first + partner = AffiliatePartner.order('created_at desc').first partner.partner_user.should eq(user) partner.entity_type.should eq('Sole Proprietor') end @@ -63,26 +62,25 @@ describe "Affiliate Program", :js => true, :type => :feature, :capybara_feature it "new user creates individual affiliate" do visit '/affiliateProgram' - find('input#entity_individual').trigger(:click) + find('input#entity_individual').click - find('.agree-button').trigger(:click) + find('.agree-button').click find('h1', text: 'congratulations') - find('.button-orange', text: 'GO SIGNUP').trigger(:click) + find('.button-orange', text: 'GO SIGNUP').click fill_in "jam_ruby_user[first_name]", with: "Affiliate1" fill_in "jam_ruby_user[last_name]", with: "Someone" fill_in "jam_ruby_user[email]", with: "affiliate1@jamkazam.com" fill_in "jam_ruby_user[password]", with: "jam123" fill_in "jam_ruby_user[password_confirmation]", with: "jam123" - check("jam_ruby_user[instruments][drums][selected]") check("jam_ruby_user[terms_of_service]") click_button "CREATE ACCOUNT" should have_title("JamKazam | Congratulations") - found_user = User.first - partner = AffiliatePartner.first + found_user = User.order('created_at desc').first + partner = AffiliatePartner.order('created_at desc').first partner.partner_user.should eq(found_user) partner.entity_type.should eq('Individual') end diff --git a/web/spec/features/affiliate_referral_spec.rb b/web/spec/features/affiliate_referral_spec.rb index c7d8b7854..3486acc63 100644 --- a/web/spec/features/affiliate_referral_spec.rb +++ b/web/spec/features/affiliate_referral_spec.rb @@ -39,7 +39,6 @@ describe "affiliate visit tracking", :js => true, :type => :feature, :capybara_ fill_in "jam_ruby_user[email]", with: "referral1@jamkazam.com" fill_in "jam_ruby_user[password]", with: "jam123" fill_in "jam_ruby_user[password_confirmation]", with: "jam123" - check("jam_ruby_user[instruments][drums][selected]") check("jam_ruby_user[terms_of_service]") click_button "CREATE ACCOUNT" diff --git a/web/spec/features/affiliate_visit_tracking.rb b/web/spec/features/affiliate_visit_tracking.rb deleted file mode 100644 index 0afe3e131..000000000 --- a/web/spec/features/affiliate_visit_tracking.rb +++ /dev/null @@ -1,36 +0,0 @@ -require 'spec_helper' - -describe "affiliate visit tracking" do - - subject { page } - - let(:user) { FactoryGirl.create(:user) } - let(:partner) { FactoryGirl.create(:affiliate_partner) } - let(:affiliate_params) { partner.affiliate_query_params } - - before(:each) do - AffiliateReferralVisit.delete_all - end - - it "tracks" do - visit '/?' + affiliate_params - - should_be_at_root - AffiliateReferralVisit.count.should eq(1) - visit = AffiliateReferralVisit.first - visit.visited_url.should eq('/?' + affiliate_params) - visit.affiliate_partner_id.should eq(partner.id) - visit.first_visit.should be true - - download_url = '/downloads?' + affiliate_params - visit download_url - find('h2.create-account-header') - - - AffiliateReferralVisit.count.should eq(2) - visit = AffiliateReferralVisit.find_by_visited_url(download_url) - visit.affiliate_partner_id.should eq(partner.id) - visit.first_visit.should be false - end - -end diff --git a/web/spec/support/utilities.rb b/web/spec/support/utilities.rb index 38af9186f..d9ff638d8 100644 --- a/web/spec/support/utilities.rb +++ b/web/spec/support/utilities.rb @@ -175,6 +175,7 @@ end # skip the typical login form, which redirects to /client (slow due to extra login step). # So this just sets the cookie, and puts you where you want to be def fast_signin(user, url) + visit '/' set_login_cookie(user) visit url end