2015-10-11 10:41:23 +01:00
require 'rails_helper'
2013-02-05 14:16:51 -05:00
describe ClicksController do
context 'create' do
context 'missing params' do
2015-05-06 12:01:47 +10:00
it 'raises a 404 without the url param' do
xhr :get , :track , post_id : 123
expect ( response ) . to be_not_found
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'
2015-01-09 14:04:02 -03:00
expect ( response ) . not_to 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
2015-02-22 20:47:18 +01:00
before { request . stubs ( :remote_ip ) . returns ( '192.168.0.1' ) }
2013-02-05 14:16:51 -05:00
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
2015-01-09 14:04:02 -03:00
expect ( response ) . not_to be_redirect
2013-07-26 12:14:11 -04:00
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
2015-02-22 20:47:18 +01:00
it " redirects " do
TopicLinkClick . expects ( :create_from ) . with ( has_entries ( 'url' = > 'http://discourse.org/?hello=123' ) ) . returns ( url )
2013-12-13 12:56:20 -05:00
xhr :get , :track , url : 'http://discourse.org/?hello=123' , post_id : 123
2015-02-22 20:47:18 +01:00
expect ( response ) . to redirect_to ( url )
2013-12-13 12:56:20 -05:00
end
2013-07-26 12:14:11 -04:00
end
2013-02-05 14:16:51 -05:00
context 'with a post_id' do
2015-02-22 20:47:18 +01:00
it 'redirects' 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
2015-01-09 14:04:02 -03:00
expect ( response ) . to 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'
2015-01-09 14:04:02 -03:00
expect ( response ) . not_to be_redirect
2013-02-05 14:16:51 -05:00
end
end
context 'with a topic_id' do
2015-02-22 20:47:18 +01:00
it 'redirects' 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
2015-01-09 14:04:02 -03:00
expect ( response ) . to 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