mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-04-01 06:41:41 +00:00
Merge pull request #6613 from Matt-Yorkley/variant-override-serialization
Don't serialize all variant override objects where they are not needed
This commit is contained in:
@@ -5,11 +5,9 @@ module Api
|
||||
class VariantSerializer < ActiveModel::Serializer
|
||||
attributes :id, :name, :producer_name, :image, :sku, :import_date,
|
||||
:options_text, :unit_value, :unit_description, :unit_to_display,
|
||||
:display_as, :display_name, :name_to_display,
|
||||
:display_as, :display_name, :name_to_display, :variant_overrides_count,
|
||||
:price, :on_demand, :on_hand, :in_stock, :stock_location_id, :stock_location_name
|
||||
|
||||
has_many :variant_overrides
|
||||
|
||||
def name
|
||||
if object.full_name.present?
|
||||
"#{object.name} - #{object.full_name}"
|
||||
@@ -55,6 +53,10 @@ module Api
|
||||
|
||||
object.stock_items.first.stock_location.name
|
||||
end
|
||||
|
||||
def variant_overrides_count
|
||||
object.variant_overrides.count
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -29,6 +29,6 @@
|
||||
%td.actions
|
||||
%a{ 'ng-click' => 'editWarn(product,variant)', :class => "edit-variant icon-edit no-text", 'ng-show' => "variantSaved(variant)", 'ofn-with-tip' => t(:edit) }
|
||||
%td.actions
|
||||
%span.icon-warning-sign{ 'ng-if' => 'variant.variant_overrides', 'ofn-with-tip' => "{{ 'spree.admin.products.index.products_variant.variant_has_n_overrides' | t:{n: variant.variant_overrides.length} }}" }
|
||||
%span.icon-warning-sign{ 'ng-if' => 'variant.variant_overrides_count > 0', 'ofn-with-tip' => "{{ 'spree.admin.products.index.products_variant.variant_has_n_overrides' | t:{n: variant.variant_overrides_count} }}" }
|
||||
%td.actions
|
||||
%a{ 'ng-click' => 'deleteVariant(product,variant)', "ng-class" => '{disabled: product.variants.length < 2}', :class => "delete-variant icon-trash no-text", 'ofn-with-tip' => t(:remove) }
|
||||
|
||||
@@ -168,6 +168,28 @@ feature '
|
||||
expect(page).to have_field "variant_display_as", with: "bag"
|
||||
expect(page).to have_field "variant_display_as", with: "bin"
|
||||
end
|
||||
|
||||
context "with variant overrides" do
|
||||
let!(:product) { create(:product) }
|
||||
let(:variant) { product.variants.first }
|
||||
let(:hub) { create(:distributor_enterprise) }
|
||||
let!(:override) { create(:variant_override, variant: variant, hub: hub ) }
|
||||
let(:variant_overrides_tip) {
|
||||
I18n.t('spree.admin.products.index.products_variant.variant_has_n_overrides', n: 1)
|
||||
}
|
||||
|
||||
it "displays an icon indicating a variant has overrides" do
|
||||
visit spree.admin_products_path
|
||||
|
||||
find("a.view-variants").click
|
||||
|
||||
within "tr#v_#{variant.id}" do
|
||||
expect(page).to have_selector(
|
||||
"span.icon-warning-sign[data-powertip='#{variant_overrides_tip}']"
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
scenario "creating a new product" do
|
||||
|
||||
Reference in New Issue
Block a user