/
api_request_spec.rb
83 lines (66 loc) · 2.28 KB
/
api_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
73
74
75
76
77
78
79
80
81
82
83
# frozen_string_literal: true
RSpec.describe TwitterJekyll::ApiRequest do
subject(:api_request) { described_class.new(url, params) }
let(:url) { "https://twitter.com/twitter_user/status/12345" }
let(:params) { {} }
describe "#to_uri" do
subject(:uri) { api_request.to_uri }
it "uses correct api" do
expect(uri.scheme).to eq "https"
expect(uri.host).to eq "publish.twitter.com"
expect(uri.path).to eq "/oembed"
end
context "with no params" do
it "has url encoded query param" do
expect(URI.decode_www_form(uri.query)).to match_array [["url", url]]
end
end
context "with params" do
let(:params) { { align: "right" } }
it "has encoded query params" do
expect(URI.decode_www_form(uri.query)).to match_array [["url", url], %w[align right]]
end
end
context "with an incorrectly passed url param" do
let(:params) { { url: "why" } }
it "has uses the correct url" do
expect(URI.decode_www_form(uri.query)).to match_array [["url", url]]
end
end
end
describe "#cache_key" do
let(:url) { ["https://twitter.com/twitter_user/status/12345"] }
context "with no params" do
it "matches on status url" do
request_one = described_class.new(url, {})
request_two = described_class.new(url, {})
expect(
request_one.cache_key == request_two.cache_key
).to be true
end
it "fails if different" do
request_one = described_class.new(url, {})
request_two = described_class.new("https://twitter.com/other_user/status/12345", {})
expect(
request_one.cache_key == request_two.cache_key
).to be false
end
end
context "with params" do
it "matches on keys and values" do
request_one = described_class.new(url, align: "left")
request_two = described_class.new(url, align: "left")
expect(
request_one.cache_key == request_two.cache_key
).to be true
end
it "fails if different" do
request_one = described_class.new(url, align: "left")
request_two = described_class.new(url, align: "right")
expect(
request_one.cache_key == request_two.cache_key
).to be false
end
end
end
end