diff --git a/app/views/spree/shared/_variant_thumbnail.html.haml b/app/views/spree/shared/_variant_thumbnail.html.haml index d92e205a0b..12c2589984 100644 --- a/app/views/spree/shared/_variant_thumbnail.html.haml +++ b/app/views/spree/shared/_variant_thumbnail.html.haml @@ -1,6 +1 @@ -- if variant.product.images.length == 0 - = image_tag("/noimage/mini.png") -- else - - # A Rails bug makes it necessary to call `main_app.url_for` here. - - # https://github.com/rails/rails/issues/31325 - = image_tag(main_app.url_for(variant.product.images.first.variant(:mini))) += image_tag(variant.product.images.first&.url(:mini) || "/noimage/mini.png") diff --git a/spec/views/spree/orders/show.html.haml_spec.rb b/spec/views/spree/orders/show.html.haml_spec.rb new file mode 100644 index 0000000000..1b9a2882cf --- /dev/null +++ b/spec/views/spree/orders/show.html.haml_spec.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe "spree/orders/show.html.haml" do + helper InjectionHelper + helper ShopHelper + helper ApplicationHelper + helper CheckoutHelper + helper SharedHelper + helper FooterLinksHelper + helper MarkdownHelper + helper TermsAndConditionsHelper + + let(:order) { + create( + :completed_order_with_fees, + number: "R123456789", + ) + } + + before do + assign(:order, order) + allow(view).to receive_messages( + current_order: order, + last_payment_method: nil, + ) + end + + it "shows the order number" do + render + expect(rendered).to have_content("R123456789") + end + + it "shows product images" do + order.line_items.first.variant.product.images << Spree::Image.new( + attachment: fixture_file_upload("logo.png", "image/png") + ) + + render + + expect(rendered).to have_css("img[src*='logo.png']") + end + + it "handles broken images" do + image, = order.line_items.first.variant.product.images << Spree::Image.new( + attachment: fixture_file_upload("logo.png", "image/png") + ) + # This image is not "variable" and can't be resized: + image.attachment.blob.update!(content_type: "application/octet-stream") + + render + + expect(rendered).to have_no_css("img[src*='logo.png']") + expect(rendered).to have_content("R123456789") + end +end