FactoryBot.define do
  factory :gestao_de_estoque_estoque, class: 'GestaoDeEstoque::Estoque' do
    item_id { Base::Item.find_or_create_by!(FactoryBot.attributes_for(:caderno)).id }
    unidade_orcamentaria_id { Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_hgf, :orcamento_2017)).id }
    almoxarifado_id { FactoryBot.create(:gestao_de_estoque_almoxarifado).id }

    trait :estoque_sem_movimentacao do
      after(:create) do |estoque|
        estoque.movimentacoes_do_estoque.last.update_attribute(:estoque_id, nil)
      end
    end

    trait :estoque_com_sub_estoque do
      after(:create) do |estoque|
        FactoryBot.create(:gestao_de_estoque_sub_estoque_por_validade, estoque_id: estoque.id)
      end
    end

    before(:create) do |estoque|
      estoque.movimentacoes_do_estoque.build(FactoryBot.attributes_for(:gestao_de_estoque_movimentacao_do_estoque, :entrada, estoque: estoque))
    end
  end
end
