FactoryBot.define do
	sequence(:conta_randoms) do |n|
		conta_random ||= (1..99).to_a.shuffle
		"#{conta_random[n]}"
	end

	factory :conta_bancaria, class: 'Base::ContaBancaria' do
		agencia_id { Base::Agencia.find_or_create_by!( FactoryBot.attributes_for(:agencia_banco_do_brasil) ).id }
		numero_da_conta { Faker::Number.number(digits: 10).to_s }
		saldo_inicial { 0 }

		trait :vinculada do
			tipo_de_conta {:conta_vinculada}
			funcao_id {
				Base::Funcao.find_or_create_by(
					FactoryBot.attributes_for(:funcao_saude, :orcamento_2016)
				).id
			}
			descricao_do_vinculo {"Vinculo"}
		end

		trait :de_unidade do
			saldo_inicial {"9.99"}
			data_de_abertura {"2016-09-06"}
			tipo {:unidade_orcamentaria}
			tipo_de_conta {:conta_nao_vinculada}
		end

		trait :de_pessoa do
			tipo {:pessoa}
		end

		trait :com_unidade_orcamentaria do
			before(:create) do |conta_bancaria|
				unidade_orcamentaria = Loa::UnidadeOrcamentaria.find_or_create_by!(FactoryBot.attributes_for(:loa_hgf, :orcamento_2016))
				conta_bancaria.contas_bancarias_por_unidade_orcamentaria.build(unidade_orcamentaria: unidade_orcamentaria)
			end
		end
	end

	factory :conta_demonstrativa, class: 'Base::ContaBancaria' do
		agencia_id { Base::Agencia.find_or_create_by!( FactoryBot.attributes_for(:agencia_banco_do_brasil) ).id }
		numero_da_conta {"53425-2"}
		data_de_abertura {"2016-09-06"}
		saldo_inicial {"1000.10"}
		tipo_de_conta {:conta_nao_vinculada}

	end
end
