Skip to content

Latest commit

 

History

History
91 lines (73 loc) · 2.02 KB

11_Validar_Models.md

File metadata and controls

91 lines (73 loc) · 2.02 KB

Validar Models

No arquivo Gemfile no grupo de teste e desenvolvimento adicione o byebug para que possamos debugar a aplicação:

group :development, :test do
...
  gem 'byebug', platforms: %i[mri mingw x64_mingw]
end

Apague e recrie o arquivo Gemfile.lock:

rm -rf Gemfile.lock
touch Gemfile.lock
docker-compose build

Crie o arquivo spec/support/factory_bot.rb:

RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end

Crie o arquivo spec/models/user_spec.rb e adicione:

require 'rails_helper'

RSpec.describe User, type: :model do

  describe 'has a valid factory' do
    let(:user) { create(:user) }

    it 'it gets valid' do
      expect(user.valid?).to eq true
    end

    it 'it gets created' do
      expect(user.new_record?).to eq false
    end
  end

  describe 'validations' do
    context 'have_many' do
      it { should have_many(:contacts).dependent(:destroy) }
    end
  end

end

Crie o arquivo spec/models/contact_spec.rb e adicione:

require 'rails_helper'

RSpec.describe Contact, type: :model do

  describe 'has a valid factory' do
    let(:contact) { create(:contact) }

    it 'it gets valid' do
      expect(contact.valid?).to eq true
    end

    it 'it gets created' do
      expect(contact.new_record?).to eq false
    end
  end

  describe 'validations' do
    context 'of attributes' do
      it { should validate_presence_of(:name) }
      it { should validate_presence_of(:user) }
    end
    context 'belong_to' do
      it { should belong_to(:user) }
    end
  end

end

Faça anotação do seu arquivo rodando:

docker-compose run --rm web bundle exec annotate --models

Referências utilizadas

1° Debugando com o ByeBug
2° Gem Byebug
3° Shoulda Matchers validations
4° Shoulda Matchers