mirror of
https://github.com/discourse/discourse.git
synced 2025-03-04 21:07:23 +08:00
integration test for PollFeed job
This commit is contained in:
parent
ac666ddf17
commit
15cd3b78ae
30
spec/fixtures/feed/feed.rss
vendored
Normal file
30
spec/fixtures/feed/feed.rss
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
|
||||||
|
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
||||||
|
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:atom="http://www.w3.org/2005/Atom"
|
||||||
|
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
|
||||||
|
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
|
||||||
|
>
|
||||||
|
<channel>
|
||||||
|
<title>Discourse</title>
|
||||||
|
<atom:link href="https://blog.discourse.org/feed/" rel="self" type="application/rss+xml" />
|
||||||
|
<link>https://blog.discourse.org</link>
|
||||||
|
<description>Official blog for the open source Discourse project</description>
|
||||||
|
<lastBuildDate>Thu, 14 Sep 2017 15:22:33 +0000</lastBuildDate>
|
||||||
|
<language>en-US</language>
|
||||||
|
<sy:updatePeriod>hourly</sy:updatePeriod>
|
||||||
|
<sy:updateFrequency>1</sy:updateFrequency>
|
||||||
|
<generator>https://wordpress.org/?v=4.8.1</generator>
|
||||||
|
<item>
|
||||||
|
<title>Poll Feed Spec Fixture</title>
|
||||||
|
<link>https://blog.discourse.org/2017/09/poll-feed-spec-fixture/</link>
|
||||||
|
<pubDate>Thu, 14 Sep 2017 15:22:33 +0000</pubDate>
|
||||||
|
<dc:creator><![CDATA[xrav3nz]]></dc:creator>
|
||||||
|
<category><![CDATA[spec]]></category>
|
||||||
|
<guid isPermaLink="false">https://blog.discourse.org/?p=pollfeedspec</guid>
|
||||||
|
<description><![CDATA[Here are some random descriptions... […]]]></description>
|
||||||
|
<content:encoded><![CDATA[<p>This is the body & content. </p>]]></content:encoded>
|
||||||
|
</item>
|
||||||
|
</channel>
|
||||||
|
</rss>
|
@ -43,4 +43,73 @@ describe Jobs::PollFeed do
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#poll_feed' do
|
||||||
|
let(:embed_by_username) { 'eviltrout' }
|
||||||
|
let(:embed_username_key_from_feed) { 'dc_creator' }
|
||||||
|
let!(:default_user) { Fabricate(:evil_trout) }
|
||||||
|
let!(:feed_author) { Fabricate(:user, username: 'xrav3nz', email: 'hi@bye.com') }
|
||||||
|
|
||||||
|
before do
|
||||||
|
SiteSetting.feed_polling_enabled = true
|
||||||
|
SiteSetting.feed_polling_url = 'https://blog.discourse.org/feed/'
|
||||||
|
SiteSetting.embed_by_username = embed_by_username
|
||||||
|
|
||||||
|
stub_request(:get, SiteSetting.feed_polling_url).to_return(
|
||||||
|
status: 200,
|
||||||
|
body: file_from_fixtures('feed.rss', 'feed').read,
|
||||||
|
headers: { "Content-Type" => "application/rss+xml" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'author username parsing' do
|
||||||
|
context 'when neither embed_by_username nor embed_username_key_from_feed is set' do
|
||||||
|
before do
|
||||||
|
SiteSetting.embed_by_username = ""
|
||||||
|
SiteSetting.embed_username_key_from_feed = ""
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not import topics' do
|
||||||
|
expect { poller.poll_feed }.not_to change { Topic.count }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when embed_by_username is set' do
|
||||||
|
before do
|
||||||
|
SiteSetting.embed_by_username = embed_by_username
|
||||||
|
SiteSetting.embed_username_key_from_feed = ""
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates the new topics under embed_by_username' do
|
||||||
|
expect { poller.poll_feed }.to change { Topic.count }.by(1)
|
||||||
|
expect(Topic.last.user).to eq(default_user)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when embed_username_key_from_feed is set' do
|
||||||
|
before do
|
||||||
|
SiteSetting.embed_username_key_from_feed = embed_username_key_from_feed
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates the new topics under the username found' do
|
||||||
|
expect { poller.poll_feed }.to change { Topic.count }.by(1)
|
||||||
|
expect(Topic.last.user).to eq(feed_author)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'parses the title correctly' do
|
||||||
|
expect { poller.poll_feed }.to change { Topic.count }.by(1)
|
||||||
|
expect(Topic.last.title).to eq('Poll Feed Spec Fixture')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'parses the content correctly' do
|
||||||
|
expect { poller.poll_feed }.to change { Topic.count }.by(1)
|
||||||
|
expect(Topic.last.first_post.raw).to include('<p>This is the body & content. </p>')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'parses the link correctly' do
|
||||||
|
expect { poller.poll_feed }.to change { Topic.count }.by(1)
|
||||||
|
expect(Topic.last.topic_embed.embed_url).to eq('https://blog.discourse.org/2017/09/poll-feed-spec-fixture')
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user