79 lines
2.5 KiB
Ruby
79 lines
2.5 KiB
Ruby
|
|
require 'spec_helper'
|
||
|
|
|
||
|
|
describe UsersController, :type => :request do
|
||
|
|
render_views
|
||
|
|
|
||
|
|
let(:user) { FactoryGirl.create(:user) }
|
||
|
|
let(:utm_valid_url) { '/?utm_source=abcya&utm_medium=browsers&utm_campaign=dog' }
|
||
|
|
let(:utm_valid_cookie) { {"utm_source" => "abcya", "utm_medium" => "browser", "utm_campaign" => "dog", "referrer" => nil} }
|
||
|
|
|
||
|
|
before(:each) {
|
||
|
|
controller.current_user = nil
|
||
|
|
}
|
||
|
|
describe "track_origin" do
|
||
|
|
describe "logged out" do
|
||
|
|
|
||
|
|
it "should not distrib origin if already set and no utm_source" do
|
||
|
|
|
||
|
|
weird_origin = {"something" => "nothing"}
|
||
|
|
cookie_jar[:origin] = weird_origin.to_json
|
||
|
|
request.cookies[:origin] = weird_origin.to_json
|
||
|
|
|
||
|
|
get :home
|
||
|
|
response.cookies["origin"].should be_nil
|
||
|
|
end
|
||
|
|
|
||
|
|
it "should overwrite origin if already set and URL has utm_source" do
|
||
|
|
weird_origin = {"utm_source" => "nothing"}
|
||
|
|
request.cookies[:origin] = weird_origin
|
||
|
|
get :home, utm_valid_cookie
|
||
|
|
JSON.parse(response.cookies["origin"]).should eql utm_valid_cookie
|
||
|
|
end
|
||
|
|
|
||
|
|
it "should set origin to organic if referrer set" do
|
||
|
|
controller.request.stub referer: 'http://somewhere.com/ha'
|
||
|
|
get :home
|
||
|
|
JSON.parse(response.cookies["origin"]).should eql ({"utm_source" => "organic", "utm_medium" => "organic", "utm_campaign" => "somewhere.com", "referrer" => 'http://somewhere.com/ha'})
|
||
|
|
end
|
||
|
|
|
||
|
|
it "should ignore referrer if origin already set" do
|
||
|
|
weird_origin = {"utm_source" => "nothing"}
|
||
|
|
request.cookies[:origin] = weird_origin
|
||
|
|
get :home, utm_valid_cookie
|
||
|
|
JSON.parse(response.cookies["origin"]).should eql utm_valid_cookie
|
||
|
|
|
||
|
|
controller.request.stub referer: 'http://somewhere.com/ha'
|
||
|
|
get :home
|
||
|
|
response.cookies["origin"].should be_nil
|
||
|
|
end
|
||
|
|
|
||
|
|
it "should not set origin with no referrer info" do
|
||
|
|
get :home
|
||
|
|
|
||
|
|
response.cookies["origin"].should be_nil
|
||
|
|
end
|
||
|
|
|
||
|
|
it "should set origin with referrer info" do
|
||
|
|
get :home, utm_valid_cookie
|
||
|
|
JSON.parse(response.cookies["origin"]).should eql utm_valid_cookie
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
describe "logged in" do
|
||
|
|
|
||
|
|
it "should not set origin with no referrer info" do
|
||
|
|
controller.current_user = user
|
||
|
|
get :home
|
||
|
|
response.cookies["origin"].should be_nil
|
||
|
|
end
|
||
|
|
|
||
|
|
it "should not set origin with referrer info" do
|
||
|
|
controller.current_user = user
|
||
|
|
get :home, utm_valid_cookie
|
||
|
|
response.cookies["origin"].should be_nil
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|