require 'rails_helper'

RSpec.describe Contabilidade::Decreto, type: :model do
  [ :tipo_de_legislacao, :numero, :data_da_legislacao ].each { |atributo| it { is_expected.to validate_presence_of atributo } }

  it{ is_expected.to belong_to( :orcamento ) }

  it{ is_expected.to have_many( :solicitacao_de_alteracao_orcamentarias ) }
  it{ is_expected.to have_many( :solicitacao_de_alteracao_orcamentarias_nao_confirmadas ) }
  it{ is_expected.to have_many( :dotacoes_origem ).through( :solicitacao_de_alteracao_orcamentarias )  }
  it{ is_expected.to have_many( :dotacoes_destino ).through( :solicitacao_de_alteracao_orcamentarias )  }
  it{ is_expected.to have_many( :contigenciamentos ) }
  it{ is_expected.to have_many( :documentos_do_decreto ) }
  it{ is_expected.to have_many( :conselhos_de_rpps ) }
  it{ is_expected.to have_many( :parcelamentos_de_rpps_de_acordo ) }
  it{ is_expected.to have_many( :parcelamentos_de_rpps_de_lei ) }

  it{ is_expected.to have_many( :orcamentos_da_despesa_origem ) }
  it{ is_expected.to have_many( :orcamentos_da_despesa_destino ) }

  it{ is_expected.to validate_uniqueness_of(:numero).scoped_to(:tipo_de_credito).with_message('Já existe esse número para o tipo de credito selecionado') }

  describe "Valida presença de tipo de crédito" do
		subject{
			Contabilidade::Decreto.new(tipo_de_decreto: :credito)
		}

		[:classificacao, :tipo_de_credito].each do |atributo|
			it{ is_expected.to validate_presence_of atributo }
		end
	end
end
