/
feed_test.rb
93 lines (74 loc) · 3.02 KB
/
feed_test.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
84
85
86
87
88
89
90
91
92
93
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'helper'))
class FeedTest < FeedTestCase
describe "parsing User Feed" do
before :all do
@data = feed_data(:user_feed)
@conn = Faraday::TestConnection.new do |stub|
stub.get('technoweenie.atom') { [200, {}, @data] }
end
@feed = Feed.new @conn, "technoweenie.atom"
end
it "parses #atom_data" do
assert_kind_of Feed::Atom, @feed.atom
end
it "parses atom entries" do
assert_equal 4, @feed.entries.size
end
it "parses feed/entry/link" do
assert_equal 'http://github.com/technoweenie/faraday/commit/a18f5754eb01425aadf9ad27a20fd40422e8f3e2#-P0', @feed.entries[0].link
end
it "parses feed/entry/content for CommitCommentEvent" do
assert_equal '@c_a18f575 this mess is gonna get raw, like sushi', @feed.entries[0].content
end
it "parses feed/entry/content for CreateEvent" do
assert_equal 'New branch is at technoweenie/github_twitter_server/tree/master', @feed.entries[1].content
end
it "parses feed/entry/content for PushEvent" do
commit = "a18f5754 add faraday gemspec"
assert_equal "2 commits: #{commit}\n@bob #{commit}", @feed.entries[3].content
end
it "parses feed/entry/title" do
assert_equal 'technoweenie commented on technoweenie/faraday', @feed.entries[0].title
end
it "parses project name from feed/entry/title for CommitCommentEvent" do
assert_equal 'technoweenie/faraday', @feed.entries[0].project
end
it "parses project name from feed/entry/title for CreateEvent" do
assert_nil @feed.entries[1].project
end
it "parses project name from feed/entry/title for PushEvent" do
assert_equal 'technoweenie/faraday', @feed.entries[3].project
end
it "parses event_types" do
assert_equal 'CommitCommentEvent', @feed.entries[0].event_type
assert_equal 'CreateEvent', @feed.entries[1].event_type
assert_equal 'CreateEvent', @feed.entries[2].event_type
assert_equal 'PushEvent', @feed.entries[3].event_type
end
it "parses feed/entry/id as :guid" do
assert_equal 'tag:github.com,2008:CommitCommentEvent/113924968', @feed.entries[0].guid
end
it "converts #guid to #status_id" do
assert_equal '113924968', @feed.entries[0].status_id
end
it "parses feed/entry/updated" do
assert_equal '2009-12-19T16:40:48-00:00', @feed.entries[0].updated
end
it "parses feed/entry/author/name" do
assert_equal 'technoweenie', @feed.entries[0].author
end
it "converts #updated to time" do
assert_equal Time.utc(2009, 12, 19, 16, 40, 48), @feed.entries[0].updated_at
end
end
describe "#atom_response" do
it "fetches atom data from user url" do
data = feed_data(:user_feed)
conn = Faraday::TestConnection.new do |stub|
stub.get('technoweenie.atom') { [200, {}, data] }
end
feed = Feed.new conn, "technoweenie.atom"
assert_equal data, feed.atom_response.body
end
end
end