2013-02-05 14:16:51 -05:00
require 'spec_helper'
describe ClicksController do
context 'create' do
context 'missing params' do
it 'raises an error without the url param' do
2013-07-26 12:14:11 -04:00
lambda { xhr :get , :track , post_id : 123 } . should raise_error ( ActionController :: ParameterMissing )
2013-02-05 14:16:51 -05:00
end
it " redirects to the url even without the topic_id or post_id params " do
xhr :get , :track , url : 'http://google.com'
2013-07-26 12:14:11 -04:00
response . should_not be_redirect
2013-02-05 14:16:51 -05:00
end
end
context 'correct params' do
2013-07-26 12:14:11 -04:00
let ( :url ) { " http://discourse.org " }
2013-02-05 14:16:51 -05:00
before do
request . stubs ( :remote_ip ) . returns ( '192.168.0.1' )
end
2013-07-26 12:14:11 -04:00
context " with a made up url " do
it " doesn't redirect " do
TopicLinkClick . expects ( :create_from ) . returns ( nil )
xhr :get , :track , url : 'http://discourse.org' , post_id : 123
response . should_not be_redirect
end
2013-12-13 12:56:20 -05:00
end
2013-07-26 12:14:11 -04:00
2013-12-13 12:56:20 -05:00
context " with a query string " do
it " tries again without the query if it fails " do
TopicLinkClick . expects ( :create_from ) . with ( has_entries ( 'url' = > 'http://discourse.org/?hello=123' ) ) . returns ( nil )
TopicLinkClick . expects ( :create_from ) . with ( has_entries ( 'url' = > 'http://discourse.org/' ) ) . returns ( nil )
xhr :get , :track , url : 'http://discourse.org/?hello=123' , post_id : 123
end
2013-07-26 12:14:11 -04:00
end
2013-02-05 14:16:51 -05:00
context 'with a post_id' do
it 'calls create_from' do
2013-07-26 12:14:11 -04:00
TopicLinkClick . expects ( :create_from ) . with ( 'url' = > url , 'post_id' = > '123' , 'ip' = > '192.168.0.1' ) . returns ( url )
xhr :get , :track , url : url , post_id : 123
response . should redirect_to ( url )
2013-02-05 14:16:51 -05:00
end
it 'redirects to the url' do
2013-07-26 12:14:11 -04:00
TopicLinkClick . stubs ( :create_from ) . returns ( url )
xhr :get , :track , url : url , post_id : 123
response . should redirect_to ( url )
2013-02-05 14:16:51 -05:00
end
it 'will pass the user_id to create_from' do
2013-07-26 12:14:11 -04:00
TopicLinkClick . expects ( :create_from ) . with ( 'url' = > url , 'post_id' = > '123' , 'ip' = > '192.168.0.1' ) . returns ( url )
xhr :get , :track , url : url , post_id : 123
response . should redirect_to ( url )
2013-02-05 14:16:51 -05:00
end
it " doesn't redirect with the redirect=false param " do
2013-07-26 12:14:11 -04:00
TopicLinkClick . expects ( :create_from ) . with ( 'url' = > url , 'post_id' = > '123' , 'ip' = > '192.168.0.1' , 'redirect' = > 'false' ) . returns ( url )
xhr :get , :track , url : url , post_id : 123 , redirect : 'false'
2013-02-05 14:16:51 -05:00
response . should_not be_redirect
end
end
context 'with a topic_id' do
it 'calls create_from' do
2013-07-26 12:14:11 -04:00
TopicLinkClick . expects ( :create_from ) . with ( 'url' = > url , 'topic_id' = > '789' , 'ip' = > '192.168.0.1' ) . returns ( url )
xhr :get , :track , url : url , topic_id : 789
response . should redirect_to ( url )
2013-02-25 19:42:20 +03:00
end
2013-02-05 14:16:51 -05:00
end
end
end
2013-02-25 19:42:20 +03:00
end