require 'rails_helper'

RSpec.describe Configuracao, type: :model do

	it { is_expected.to validate_attachment_size(:brasao).less_than(2.megabytes) }
	it { is_expected.to validate_attachment_content_type(:brasao).allowing('image/png', 'image/gif', 'image/jpg') }

	it { is_expected.to belong_to(:cidade).class_name("Base::Cidade") }
	it { is_expected.to belong_to(:estado).class_name("Base::Estado") }

	it { is_expected.to have_one(:customizacao) }

	context "quando existe configuração" do
		before { subject.save(validate: false) }

		it { is_expected.to validate_presence_of :estado_id }
		it { is_expected.to validate_presence_of :cidade_id }
	end

	describe "#save" do
		context "ao criar" do
			it "não permite ter duas configurações salvas no banco" do
				FactoryBot.create( :configuracao )
				nova_configuracao = FactoryBot.build( :configuracao )
				nova_configuracao.save
				expect( nova_configuracao.errors[:base] ).to include "Já existe uma configuração cadastrada"
			end
		end

		context "ao salvar" do
			it "permite atualizar mesmo com uma configuração já cadastrada" do
				configuracao = FactoryBot.create( :configuracao )
				configuracao.nome_da_prefeitura = 'Novo nome'
				expect( configuracao.save ).to be true
			end
		end
 	end
end
