require 'rails_helper'

RSpec.describe Contabilidade::ContaExtraOrcamentaria, type: :model do
	it { is_expected.to belong_to :orcamento }

	[:orcamento_id, :codigo_sim, :descricao, :detalhamento_id, :tipo_de_conta, :classe_pcasp ].each { |atributo| it { is_expected.to validate_presence_of atributo } }

	it {
		FactoryBot.create(:conta_extra_orcamentaria)
		is_expected.to validate_uniqueness_of(:codigo).scoped_to(:orcamento_id).case_insensitive
	}

	it '#codigo_completo' do
		conta_extra = FactoryBot.create :conta_extra_orcamentaria
		expect(conta_extra.codigo).to eq	"001"
	end

	describe '#conta_nao_pode_ser_padrao' do
		describe 'update' do
			context 'quando a conta é padrão' do
				it 'salva edição' do
					conta_extra = FactoryBot.create :conta_extra_orcamentaria, padrao: false
					conta_extra.save

					expect(conta_extra).to be_persisted
				end
			end
		end
		describe 'delete' do
			context 'quando a conta não é padrão' do
				it 'exclui registo' do
					conta_extra = FactoryBot.create :conta_extra_orcamentaria, padrao: false
					expect { conta_extra.destroy }.to change(Contabilidade::ContaExtraOrcamentaria, :count).by(-1)
				end
			end
		end
	end

end
