jam-cloud/ruby/spec/jam_ruby/models/download_tracker_spec.rb

163 lines
6.6 KiB
Ruby
Raw Permalink Normal View History

require 'spec_helper'
describe DownloadTracker do
let(:user1) {FactoryGirl.create(:user)}
let(:user2) {FactoryGirl.create(:user)}
let(:user3) {FactoryGirl.create(:user)}
let(:jam_track) {FactoryGirl.create(:jam_track)}
describe "check_user_sharer" do
describe "with max 1" do
it "and there is one row that is not paid for" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_user_sharer(1)
results.all.length.should eq 1
results[0]['user_id'].should eql (user1.id)
end
end
describe "with max 2" do
it "and there is one row that is not paid for" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 0
# and then add that same user at different IP, and see that something shows up
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '2.2.2.2')
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 1
end
it "and there are two rows from different IP address, different jam tracks" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '2.2.2.2')
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 1
results[0]['user_id'].should eql(user1.id)
results[0]['count'].should eql 2
# now add a second user with one of the previous IP addresses; shouldn't matter yet
tracker1 = FactoryGirl.create(:download_tracker, user: user2, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 1
results[0]['user_id'].should eql(user1.id)
results[0]['count'].should eql 2
end
it "and there are two rows from same IP adresss, same jam track" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1', jam_track: jam_track)
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1', jam_track: jam_track)
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 0
tracker1 = FactoryGirl.create(:download_tracker, user: user2, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 0
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '2.2.2.2')
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 1
results[0]['user_id'].should eql(user1.id)
results[0]['count'].should eql 3
end
it "and there are two rows from same user one paid for, one not" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: true, remote_ip: '1.1.1.1')
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '2.2.2.2')
results = DownloadTracker.check_user_sharer(2)
results.all.length.should eq 1
end
end
end
describe "check_freebie_snarfer" do
describe "with max 1" do
it "and there is one row that is not paid for" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_freebie_snarfer(1)
results.all.length.should eq 1
end
it "and there is one row that is paid for" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: true, remote_ip: '1.1.1.1')
results = DownloadTracker.check_freebie_snarfer(1)
results.all.length.should eq 0
end
end
describe "with max 2" do
it "and there is one row that is not paid for" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 0
# and then add a second user at same IP, and see that something shows up
tracker1 = FactoryGirl.create(:download_tracker, user: user2, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 1
end
it "and there are two rows from same user, different jam tracks" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 1
results[0]['remote_ip'].should eql('1.1.1.1')
results[0]['count'].should eql 2
tracker1 = FactoryGirl.create(:download_tracker, user: user2, paid: false, remote_ip: '2.2.2.2')
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 1
results[0]['remote_ip'].should eql('1.1.1.1')
results[0]['count'].should eql 2
end
it "and there are two rows from same user, same jam track" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1', jam_track: jam_track)
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1', jam_track: jam_track)
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 0
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '2.2.2.2')
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 0
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 1
results[0]['remote_ip'].should eql('1.1.1.1')
results[0]['count'].should eql 3
end
it "and there are two rows from same user one paid for, one not" do
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: true, remote_ip: '1.1.1.1')
tracker1 = FactoryGirl.create(:download_tracker, user: user1, paid: false, remote_ip: '1.1.1.1')
results = DownloadTracker.check_freebie_snarfer(2)
results.all.length.should eq 0
end
end
end
end