FactoryBot.define do
	factory :unidade_outros, class: 'Base::TipoDeUnidadeAdministrativa' do
		codigo {"91"}
		descricao {"Outros"}
		poder_associado {1}

		trait :orcamento_2016 do
			after(:build) do |unidade|
				unidade.modulo ||= Orcamento.find_or_create_by( FactoryBot.attributes_for(:orcamento_2016) )
			end
		end

		trait :orcamento_2017 do
			after(:build) do |unidade|
				unidade.modulo ||= FactoryBot.create(:orcamento_2017)
			end
		end
	end

	factory :unidade_reserva_de_contingencia, class: 'Base::TipoDeUnidadeAdministrativa' do
		codigo {"99"}
		descricao {"Reserva de Contingência"}
		poder_associado {1}

		trait :orcamento_2016 do
			modulo_id {
				Orcamento.find_or_create_by( FactoryBot.attributes_for(:orcamento_2016) ).id
			}

			modulo_type {
				'Orcamento'
			}
		end

		trait :orcamento_2017 do
			modulo_id {
				Orcamento.find_or_create_by( FactoryBot.attributes_for(:orcamento_2017) ).id
			}

			modulo_type {
				'Orcamento'
			}
		end
	end

	factory :unidade_prefeitura, class: 'Base::TipoDeUnidadeAdministrativa' do
		codigo {"00"}
		descricao {"Prefeitura Municipal"}
		poder_associado {1}

		trait :orcamento_2016 do
			modulo {
				Orcamento.find_or_create_by( FactoryBot.attributes_for(:orcamento_2016) )
			}
		end

		trait :orcamento_2017 do
			modulo {
				Orcamento.find_or_create_by( FactoryBot.attributes_for(:orcamento_2017) )
			}
		end
	end

	factory :tipo_autarquia, class: 'Base::TipoDeUnidadeAdministrativa' do
		codigo {"05"}
		descricao {"Autarquia"}
		poder_associado {1}

		trait :orcamento_2016 do
			modulo {
				Orcamento.find_or_create_by( FactoryBot.attributes_for(:orcamento_2016) )
			}
		end

		trait :orcamento_2017 do
			modulo {
				Orcamento.find_or_create_by( FactoryBot.attributes_for(:orcamento_2017) )
			}
		end
	end
end
