require 'rails_helper'

RSpec.describe Base::Agencia, type: :model do
	it{ is_expected.to belong_to(:orcamento).required }
	it{ is_expected.to belong_to(:banco).required }
	it{ is_expected.to belong_to :cidade }

	it { is_expected.to have_many( :contas_bancarias ).dependent(:restrict_with_exception).inverse_of(:agencia)}

	[:numero_da_agencia, :banco_id, :orcamento_id, :tipo_de_envio].each do |campo|
		it { is_expected.to validate_presence_of campo }
	end

	it { is_expected.to validate_length_of(:nome).is_at_most(80) }
	it { is_expected.to validate_length_of(:numero_da_agencia).is_at_least(4) }
	it { is_expected.to validate_length_of(:numero_da_agencia).is_at_most(6) }
	it { is_expected.to validate_length_of(:cep).is_equal_to(8) }
	it { is_expected.to validate_length_of(:bairro).is_at_most(255) }
	it { is_expected.to validate_length_of(:logradouro).is_at_most(255) }
	it { is_expected.to validate_length_of(:numero_do_logradouro).is_at_most(5) }
	it { is_expected.to validate_length_of(:telefone).is_equal_to(10) }
	it { is_expected.to validate_length_of(:email).is_at_most(50) }
	it { is_expected.to validate_length_of(:complemento).is_at_most(255) }

	describe '#exibe_agencia_banco' do
		context 'quando banco está presente' do
			it 'retorna NOME / NOME_BANCO, onde NOME é o nome da agência e NOME_BANCO é o nome do banco daquela agência.' do
				agencia = FactoryBot.create( :agencia_banco_do_brasil )
				expect( agencia.exibe_agencia_banco ).to eq("008794 / #{agencia.banco.nome}")
			end
		end

		context 'quando banco não está presente' do
			it 'retorn NOME, onde NOME é o nome da agência.' do
				agencia = Base::Agencia.new(nome: 'Agência Quixeramobim', numero_da_agencia: '87940X')
				expect( agencia.exibe_agencia_banco ).to eq('87940X')
			end
		end
	end
end
