2013-02-05 14:16:51 -05:00
require 'spec_helper'
describe IncomingLink do
2013-06-25 22:15:41 +08:00
let ( :post ) { Fabricate ( :post ) }
let ( :topic ) { post . topic }
2013-02-05 14:16:51 -05:00
2013-04-24 18:05:35 +10:00
let :incoming_link do
2014-08-04 11:06:06 +10:00
IncomingLink . add ( host : " a.com " , referer : " http://twitter.com " , post_id : post . id , ip_address : '1.1.1.1' )
2013-04-24 18:05:35 +10:00
end
2013-02-05 14:16:51 -05:00
2013-04-24 18:05:35 +10:00
describe 'local topic link' do
2013-02-05 14:16:51 -05:00
2013-04-24 18:05:35 +10:00
describe 'tracking link counts' do
it " increases the incoming link counts " do
2014-08-04 11:06:06 +10:00
link = incoming_link
2013-02-05 14:16:51 -05:00
2014-08-04 11:06:06 +10:00
link . domain . should == " twitter.com "
link . post_id . should == post . id
post . reload
post . incoming_link_count . should == 1
2013-02-05 14:16:51 -05:00
2014-08-04 11:06:06 +10:00
topic . reload
topic . incoming_link_count . should == 1
end
2013-02-05 14:16:51 -05:00
end
2014-08-04 11:06:06 +10:00
2013-02-05 14:16:51 -05:00
end
2013-04-24 18:05:35 +10:00
describe 'add' do
2014-08-04 11:06:06 +10:00
def req ( opts )
{
referer : opts [ :referer ] ,
host : opts [ :host ] || 'test.com' ,
current_user : opts [ :current_user ] ,
topic_id : opts [ :topic_id ] ,
post_number : opts [ :post_number ] ,
post_id : opts [ :post_id ] ,
username : opts [ :username ] ,
ip_address : opts [ :ip_address ]
}
2013-04-26 16:18:41 +10:00
end
2014-08-04 11:06:06 +10:00
def add ( opts )
IncomingLink . add ( req ( opts ) )
2013-04-26 16:18:41 +10:00
end
2013-07-05 14:23:29 +10:00
it " does not explode with bad referer " do
2014-08-04 11:06:06 +10:00
add (
referer : 'file:///Applications/Install/75067ABC-C9D1-47B7-8ACE-76AEDE3911B2/Install/' ,
post_id : 1
)
2013-07-05 14:23:29 +10:00
end
2014-02-27 12:03:38 +11:00
it " does not explode with bad referer 2 " do
2014-08-04 11:06:06 +10:00
add (
post_id : 1 ,
referer : 'http://disqus.com/embed/comments/?disqus_version=42750f96&base=default&f=sergeiklimov&t_i=871%20http%3A%2F%2Fsergeiklimov.biz%2F%3Fp%3D871&t_u=http%3A%2F%2Fsergeiklimov.biz%2F2014%2F02%2Fweb%2F&t_e=%D0%91%D0%BB%D0%BE%D0%B3%20%2F%20%D1%84%D0%BE%D1%80%D1%83%D0%BC%20%2F%20%D1%81%D0%B0%D0%B9%D1%82%20%D0%B4%D0%BB%D1%8F%20Gremlins%2C%20Inc.%20%26%238212%3B%20%D0%B8%D1%89%D0%B5%D0%BC%20%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B0%20(UPD%3A%20%D0%9D%D0%90%D0%A8%D0%9B%D0%98!!)&t_d=%D0%91%D0%BB%D0%BE%D0%B3%20%2F%20%D1%84%D0%BE%D1%80%D1%83%D0%BC%20%2F%20%D1%81%D0%B0%D0%B9%D1%82%20%D0%B4%D0%BB%D1%8F%20Gremlins%2C%20Inc.%20%E2%80%94%20%D0%B8%D1%89%D0%B5%D0%BC%20%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B0%20(UPD%3A%20%D0%9D%D0%90%D0%A8%D0%9B%D0%98!!)&t_t=%D0%91%D0%BB%D0%BE%D0%B3%20%2F%20%D1%84%D0%BE%D1%80%D1%83%D0%BC%20%2F%20%D1%81%D0%B0%D0%B9%D1%82%20%D0%B4%D0%BB%D1%8F%20Gremlins%2C%20Inc.%20%26%238212%3B%20%D0%B8%D1%89%D0%B5%D0%BC%20%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D1%81%D1%82%D0%B0%20(UPD%3A%20%D0%9D%D0%90%D0%A8%D0%9B%D0%98!!)&s_o=default&l='
)
2014-02-27 12:03:38 +11:00
end
2013-04-24 18:05:35 +10:00
it " does nothing if referer is empty " do
2014-08-04 11:06:06 +10:00
add ( post_id : 1 )
IncomingLink . count . should == 0
2013-04-24 18:05:35 +10:00
end
2013-02-05 14:16:51 -05:00
2013-04-24 18:05:35 +10:00
it " does nothing if referer is same as host " do
2014-08-04 11:06:06 +10:00
add ( post_id : 1 , host : 'somesite.com' , referer : 'http://somesite.com' )
IncomingLink . count . should == 0
2013-02-05 14:16:51 -05:00
end
2014-08-04 11:06:06 +10:00
it " tracks not visits for invalid referers " do
add ( post_id : 1 , referer : 'bang bang bang' )
2013-12-30 14:05:44 +11:00
IncomingLink . count . should == 0
end
2013-04-24 18:05:35 +10:00
it " expects to be called with referer and user id " do
2014-08-04 11:06:06 +10:00
add ( host : " test.com " , referer : 'http://some.other.site.com' , post_id : 1 )
IncomingLink . count . should == 1
2013-04-26 16:18:41 +10:00
end
it " is able to look up user_id and log it from the GET params " do
user = Fabricate ( :user , username : " Bob " )
2014-08-04 11:06:06 +10:00
add ( host : 'test.com' , username : " bob " , post_id : 1 )
2013-04-26 16:18:41 +10:00
first = IncomingLink . first
first . user_id . should == user . id
2013-02-05 14:16:51 -05:00
end
2013-04-24 18:05:35 +10:00
end
2013-02-05 14:16:51 -05:00
end