vanderleipinto / test_app

0 stars 0 forks source link

feat:Associações (belongs_to) #26

Closed vanderleipinto closed 7 months ago

vanderleipinto commented 7 months ago

Criaremos um novo model Orders que referencia ao Customer

rails g model Order description:string customer:references

Todo pedido pertence ao cliente.

O sistema vai criar uma Factory para Order automaticamente.

Na factory de order usaremos o sequence para sequenciar a descrição dos pedidos

FactoryBot.define do
  factory :order do
    sequence(:description) { |n| "Pedido #{n}" }

    #criando o customer automaticamente:
    customer #cria o customer automaticamente para associar ao pedido
    #equivalente a:
    #association :customer, factory: :customer
  end 
end

Ao criar o pedido ele cria o customer por conta da associação.

No teste spec/models/order_spec.rb, verificaremos se o Customer foi criado automaticamente.

RSpec.describe Order, type: :model do
  it 'Verifica se o order possui customer' do
    order = create(:order)
    expect(order.customer).to be_kind_of(Customer)
  end
end

Também podemos criar um customer dentro de order_spec.rb e ele sobrescrever.

 it 'Verifica se o order possui customer' do
    customer_manual = crete(:customer_female_vip)
    order = create(:order, customer: customer_manual) #sobrescrevendo o customer automático
    expect(order.customer).to be_kind_of(Customer)
  end