FactoryGirl.define do
  factory :reseller_cart, :class => Reseller::Cart do
    state :approved
    reseller { FactoryGirl.create :organization_with_reselling }
  end
  
  factory :cart do
  end

  factory :cart_with_items, :parent => :cart do
    after(:create) do |cart|
      tickets = 3.times.collect { FactoryGirl.create(:ticket) }
      Ticket.lock(tickets, tickets.first.ticket_type, cart)
      cart.donations << FactoryGirl.create(:donation)
    end
  end

  factory :cart_with_free_items, :parent => :cart do
    after(:create) do |order|
      order.tickets << 3.times.collect { FactoryGirl.create(:free_ticket) }
    end
  end

  factory :cart_with_only_tickets, :parent => :cart do  
  end

  factory :cart_with_tickets_from_the_same_event, :parent => :cart do
    after(:create) do |cart|
      tickets = 3.times.collect { FactoryGirl.create(:ticket) }
      @show = tickets.first.show
      tickets.each do |t|
        t.show = @show
        t.save!
      end
      Ticket.lock(tickets, tickets.first.ticket_type, cart)
      cart.donations << FactoryGirl.create(:donation)
    end
  end

  factory :cart_with_tickets_from_different_events, :parent => :cart do
    after(:create) do |cart|
      tickets = 2.times.collect { FactoryGirl.create(:ticket) }
      Ticket.lock(tickets, tickets.first.ticket_type, cart)
    end
  end
  
  factory :basic_cart, :class => Cart do
    state :approved
  end
end