Skip to content
This repository was archived by the owner on Aug 3, 2021. It is now read-only.
This repository was archived by the owner on Aug 3, 2021. It is now read-only.

build does not seem to be raising expected uniqueness error #104

@mgudapak

Description

@mgudapak

Disclaimer: I am new to RSpec and trying to build tests on an existing app using the some of the examples in this book. The below is replicating a test similar to the one on page 35 of your PDF.

I have a 'Price' Model which has only one required column 'id' which is unique and set to AUTO_INCREMENT at the database (MySQL) level.

My factory is setup as below

# spec/factories/prices.rb

FactoryGirl.define do
  factory :price do
  end
end

My spec is as follows

# spec/models/price_spec.rb
require 'spec_helper'

describe Price do
  it "has a valid factory" do
    expect(create(:price)).to be_valid # this passes
  end

  it "is invalid when id is duplicate" do
    create(:price, id: 29595276)
    expect(build(:price, id: 29595276)).to have(1).errors_on(:id) # this fails
  end
end

The RSpec error I get is as follows

Price
  has a valid factory
  is invalid when id is duplicate (FAILED - 1)

Failures:

  1) Price is invalid when id is duplicate
     Failure/Error: expect(build(:price, id: 29595276)).to have(1).errors_on(:id) # this passes
       expected 1 errors on :id, got 0
     # ./spec/models/price_spec.rb:13:in `block (2 levels) in <top (required)>'

Finished in 0.1942 seconds
2 examples, 1 failure

Failed examples:

rspec ./spec/models/price_spec.rb:11 # Price is invalid when id is duplicate

Am I doing something wrong or testing something that I shouldn't be testing with RSpec (since the database will take care of enforcing uniqueness)? I was expecting that the 'DuplicateRecord' error from MySQL would be captured and reported as an error resulting in my test passing - right?

Any pointers would be very helpful.
Cheers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions