60 lines
2.4 KiB
Ruby
60 lines
2.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe Workers::FetchProfilePhoto do
|
|
before do
|
|
@user = alice
|
|
@service = FactoryBot.build(:service, user: alice)
|
|
|
|
@url = "https://service.com/user/profile_image"
|
|
|
|
allow(@service).to receive(:profile_photo_url).and_return(@url)
|
|
allow(@user).to receive(:update_profile)
|
|
|
|
allow(User).to receive(:find).and_return(@user)
|
|
allow(Service).to receive(:find).and_return(@service)
|
|
|
|
@photo_double = double
|
|
allow(@photo_double).to receive(:save!).and_return(true)
|
|
allow(@photo_double).to receive(:url).and_return("image.jpg")
|
|
end
|
|
|
|
it "saves the profile image" do
|
|
expect(@photo_double).to receive(:save!).and_return(true)
|
|
expect(Photo).to receive(:diaspora_initialize)
|
|
.with(hash_including(author: @user.person, image_url: @url, pending: true)).and_return(@photo_double)
|
|
|
|
Workers::FetchProfilePhoto.new.perform(@user.id, @service.id)
|
|
end
|
|
|
|
context "service does not have a profile_photo_url" do
|
|
it "does nothing without fallback" do
|
|
allow(@service).to receive(:profile_photo_url).and_return(nil)
|
|
expect(Photo).not_to receive(:diaspora_initialize)
|
|
|
|
Workers::FetchProfilePhoto.new.perform(@user.id, @service.id)
|
|
end
|
|
|
|
it "fetches fallback if it's provided" do
|
|
expect(@photo_double).to receive(:save!).and_return(true)
|
|
allow(@service).to receive(:profile_photo_url).and_return(nil)
|
|
expect(Photo).to receive(:diaspora_initialize)
|
|
.with(hash_including(author: @user.person, image_url: "https://service.com/fallback_lowres.jpg", pending: true))
|
|
.and_return(@photo_double)
|
|
|
|
Workers::FetchProfilePhoto.new.perform(@user.id, @service.id, "https://service.com/fallback_lowres.jpg")
|
|
end
|
|
end
|
|
|
|
it "updates the profile" do
|
|
allow(@photo_double).to receive(:url).and_return("large.jpg", "medium.jpg", "small.jpg")
|
|
|
|
expect(Photo).to receive(:diaspora_initialize).and_return(@photo_double)
|
|
expect(@user).to receive(:update_profile).with(hash_including({
|
|
image_url: "large.jpg",
|
|
image_url_medium: "medium.jpg",
|
|
image_url_small: "small.jpg"
|
|
}))
|
|
|
|
Workers::FetchProfilePhoto.new.perform(@user.id, @service.id)
|
|
end
|
|
end
|