post fetch: update post fetch spec

This commit is contained in:
cmrd Senya 2022-09-05 23:19:11 +03:00
parent f3c01d5a46
commit a6e7c8e2d5

View file

@ -4,13 +4,21 @@
# licensed under the Affero General Public License version 3 or later. See # licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file. # the COPYRIGHT file.
require "integration/federation/federation_helper"
# Tests fetching public posts of a person on a remote server # Tests fetching public posts of a person on a remote server
describe Diaspora::Fetcher::Public do describe Diaspora::Fetcher::Public do
let(:fixture) do
File.read(Rails.root.join("spec/fixtures/public_posts.json"))
end
let(:fixture_data) do
JSON.parse(fixture)
end
before do before do
# the fixture is taken from an actual json request. # the fixture is taken from an actual json request.
# it contains 10 StatusMessages and 5 Reshares, all of them public # it contains 10 StatusMessages and 5 Reshares, all of them public
# the guid of the person is "7445f9a0a6c28ebb" # the guid of the person is "7445f9a0a6c28ebb"
@fixture = File.read(Rails.root.join("spec/fixtures/public_posts.json"))
@fetcher = Diaspora::Fetcher::Public.new @fetcher = Diaspora::Fetcher::Public.new
@person = FactoryBot.create(:person, guid: "7445f9a0a6c28ebb", @person = FactoryBot.create(:person, guid: "7445f9a0a6c28ebb",
pod: Pod.find_or_create_by(url: "https://remote-testpod.net"), pod: Pod.find_or_create_by(url: "https://remote-testpod.net"),
@ -21,7 +29,7 @@ describe Diaspora::Fetcher::Public do
"Accept" => "application/json", "Accept" => "application/json",
"Accept-Encoding" => "gzip;q=1.0,deflate;q=0.6,identity;q=0.3", "Accept-Encoding" => "gzip;q=1.0,deflate;q=0.6,identity;q=0.3",
"User-Agent" => "diaspora-fetcher" "User-Agent" => "diaspora-fetcher"
}).to_return(body: @fixture) }).to_return(body: fixture)
end end
describe "#queue_for" do describe "#queue_for" do
@ -62,28 +70,54 @@ describe Diaspora::Fetcher::Public do
@data @data
} }
expect(data).not_to be_nil expect(data).not_to be_nil
expect(data.size).to eql JSON.parse(@fixture).size expect(data.size).to eq(fixture_data.size)
end end
end end
describe "#process_posts" do describe "#process_posts" do
before do before do
person = @person person = @person
data = JSON.parse(@fixture) data = fixture_data
@fetcher.instance_eval { @fetcher.instance_eval {
@person = person @person = person
@data = data @data = data
} }
fixture_data.each do |post_data|
post = if post_data["post_type"] == "StatusMessage"
FactoryBot.build(
:status_message,
guid: post_data["guid"],
text: post_data["text"],
created_at: post_data["created_at"],
public: true,
author: eve.person
)
else
reshare = FactoryBot.build(
:reshare,
guid: post_data["guid"],
created_at: post_data["created_at"],
public: true,
author: eve.person
)
reshare.root.save
reshare
end
payload = generate_payload(Diaspora::Federation::Entities.post(post), eve)
stub_request(:get, "https://remote-testpod.net/fetch/post/#{post_data['guid']}")
.to_return(status: 200, body: payload)
end
end end
it "creates 10 new posts in the database" do it "creates 15 new posts in the database" do
before_count = Post.count expect {
@fetcher.instance_eval { @fetcher.instance_eval {
process_posts process_posts
} }
after_count = Post.count }.to change(Post, :count).by(15)
expect(after_count).to eql(before_count + 10)
end end
it "sets the operation status on the person" do it "sets the operation status on the person" do
@ -100,7 +134,7 @@ describe Diaspora::Fetcher::Public do
before do before do
Timecop.freeze Timecop.freeze
@now = DateTime.now.utc @now = DateTime.now.utc
@data = JSON.parse(@fixture).select {|item| item["post_type"] == "StatusMessage" } @data = fixture_data.select {|item| item["post_type"] == "StatusMessage" }
# save posts to db # save posts to db
@fetcher.instance_eval { @fetcher.instance_eval {