-
Notifications
You must be signed in to change notification settings - Fork 1
/
request_spec.rb
72 lines (61 loc) · 1.84 KB
/
request_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
require 'spec_helper'
require 'addressable/uri'
describe GoogleAnalyticsFeeds::DataFeed do
it "builds a URI" do
request = described_class.new.
profile(123).
metrics(:foo, :bar).
dimensions(:baz).
dates(Date.new(2010, 3, 14), Date.new(2010, 3, 14)).
max_results(50).
start_index(10)
uri = Addressable::URI.parse(request.uri)
uri.scheme.should == "https"
uri.host.should == "www.googleapis.com"
uri.path.should == "/analytics/v2.4/data"
uri.query_values.should == {
"ids" => "ga:123",
"metrics" => "ga:foo,ga:bar",
"dimensions" => "ga:baz",
"start-date" => "2010-03-14",
"end-date" => "2010-03-14",
"max-results" => "50",
"start-index" => "10",
}
end
it "doesn't modify the original request" do
request = described_class.new.profile(123)
request.metrics(:foo) # result thrown away
uri = Addressable::URI.parse(request.uri)
uri.query_values.should == {"ids" => "ga:123"}
end
it "adds the appropriate header and makes the request" do
connection = mock(:connection)
headers = {}
request = mock(:request, :headers => headers).as_null_object
connection.should_receive(:get).and_yield(request)
described_class.new.retrieve("123", connection)
headers["Authorization"].should == "GoogleLogin auth=123"
end
it "can add filters" do
feed = described_class.new.
filters {
eql :baz, 4
contains :foo, "123"
}
uri = Addressable::URI.parse(feed.uri)
uri.query_values.should == {
"filters" => "ga:baz==4;ga:foo=@123"
}
end
it "can add a dynamic segment" do
feed = described_class.new.
segment {
eql :medium, "referral"
}
uri = Addressable::URI.parse(feed.uri)
uri.query_values.should == {
"segment" => "dynamic::ga:medium==referral"
}
end
end