# frozen_string_literal: true RSpec.describe Upload do let(:upload) { build(:upload) } let(:user_id) { 1 } let(:image_filename) { "logo.png" } let(:image) { file_from_fixtures(image_filename) } let(:image_svg_filename) { "image.svg" } let(:image_svg) { file_from_fixtures(image_svg_filename) } let(:huge_image_filename) { "huge.jpg" } let(:huge_image) { file_from_fixtures(huge_image_filename) } let(:attachment_path) { __FILE__ } let(:attachment) { File.new(attachment_path) } it { is_expected.to have_many(:badges).dependent(:nullify) } describe ".with_no_non_post_relations" do it "does not find non-post related uploads" do post_upload = Fabricate(:upload) post = Fabricate( :post, raw: "", user: Fabricate(:user, refresh_auto_groups: true), ) post.link_post_uploads badge_upload = Fabricate(:upload) Fabricate(:badge, image_upload: badge_upload) avatar_upload = Fabricate(:upload) Fabricate(:user, uploaded_avatar: avatar_upload) site_setting_upload = Fabricate(:upload) SiteSetting.create!( name: "logo", data_type: SiteSettings::TypeSupervisor.types[:upload], value: site_setting_upload.id, ) upload_ids = Upload.by_users.with_no_non_post_relations.pluck(:id) expect(upload_ids).to eq([post_upload.id]) end end describe ".create_thumbnail!" do it "does not create a thumbnail when disabled" do SiteSetting.create_thumbnails = false OptimizedImage.expects(:create_for).never upload.create_thumbnail!(100, 100) end it "creates a thumbnail" do upload = Fabricate(:upload) thumbnail = Fabricate(:optimized_image, upload: upload) SiteSetting.expects(:create_thumbnails?).returns(true) OptimizedImage.expects(:create_for).returns(thumbnail) upload.create_thumbnail!(100, 100) upload.reload expect(upload.optimized_images.count).to eq(1) end end it "supports