Class: SolidusSubscriptions::LineItemBuilder

Inherits:
Object
  • Object
show all
Defined in:
app/models/solidus_subscriptions/line_item_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(subscription_line_items) ⇒ SolidusSubscriptions::LineItemBuilder

Get a new instance of a LineItemBuilder

Parameters:



13
14
15
# File 'app/models/solidus_subscriptions/line_item_builder.rb', line 13

def initialize(subscription_line_items)
  @subscription_line_items = subscription_line_items
end

Instance Attribute Details

#subscription_line_itemsObject (readonly)

Returns the value of attribute subscription_line_items.



5
6
7
# File 'app/models/solidus_subscriptions/line_item_builder.rb', line 5

def subscription_line_items
  @subscription_line_items
end

Instance Method Details

#spree_line_itemsArray<Spree::LineItem>

Get a new (unpersisted) Spree::LineItem which matches the details of :subscription_line_item

Returns:

  • (Array<Spree::LineItem>)


21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/models/solidus_subscriptions/line_item_builder.rb', line 21

def spree_line_items
  line_items = subscription_line_items.map do |subscription_line_item|
    variant = subscribables.fetch(subscription_line_item.subscribable_id)

    raise UnsubscribableError.new(variant) unless variant.subscribable?
    next unless variant.can_supply?(subscription_line_item.quantity)

    Spree::LineItem.new(variant: variant, quantity: subscription_line_item.quantity)
  end

  # Either all line items for an installment are fullfilled or none are
  line_items.all? ? line_items : []
end