FactoryGirl.define do
  factory :ticket do
    venue { Faker::Lorem.words(2).join(" ") + " Theatre"}
    show
    organization
    ticket_type { FactoryGirl.create(:ticket_type, :price => 1000) }

    after(:build) do |ticket|
      ticket.set_uuid
      ticket.section_id = ticket.ticket_type.section_id if ticket.ticket_type
    end
  end

  factory :free_ticket, :parent => :ticket do
    venue { Faker::Lorem.words(2).join(" ") + " Theatre"}
    show
    organization
    cart_price 0
    sold_price 0
    ticket_type { FactoryGirl.create(:ticket_type, :price => 0) }
  end

  factory :ticket_with_no_type, :class => Ticket do
    venue { Faker::Lorem.words(2).join(" ") + " Theatre"}
    show
    organization
  end

  factory :unlocked_ticket, :parent => :ticket do
    ticket_type { nil }
  end

  factory :comped_ticket, :parent => :ticket do
    after(:create) do |ticket|
      ticket.comp_to(FactoryGirl.create(:individual))
    end
  end

  factory :sold_ticket, :parent => :ticket do
    state :sold
    sold_price 1000
    after(:create) do |ticket|
      ticket.sell_to(FactoryGirl.create(:individual))
    end
  end

  factory :fully_discounted_ticket, :parent => :ticket do
    state :sold
    ticket_type  {FactoryGirl.create(:ticket_type)}
    cart_price 0
    sold_price 0
  end
  
  factory :ticket_with_price, :class => Ticket do
    state :sold
    ticket_type  {FactoryGirl.create(:ticket_type)}
    cart_price 1
    sold_price 1
  end

  factory :off_sale_ticket, :parent => :ticket do
    state :off_sale
    ticket_type  {FactoryGirl.create(:ticket_type)}
  end
  
  factory :on_sale_ticket, :parent => :ticket do
    state :on_sale
    ticket_type  {FactoryGirl.create(:ticket_type)}
  end
end