ruby-on-railsrspecmachinist

Rails 2.3.8 machinist undefined method make?


I'm working on an old Rails 2.3.8 which doesn't have any testing and I'm trying to add some tests using rspec with machinist to the app.

I've installed rspec 1.3.0 & 1.3.2 and ran the generator script.

I followed the instructions on: https://github.com/notahat/machinist/tree/1.0-maintenance

Adding the following to /spec/blueprints.rb

require 'machinist/active_record'
require 'sham'

And the following line to spec_helper.rb

require File.expand_path(File.dirname(__FILE__) + "/blueprints")

I've created a blueprint for my User and when I try to use 'User.make!' in my spec helper (within a login method) I get this error:

NoMethodError in 'CategoriesController As a logged in user#index should render index'
undefined method `make!' for #<Class:0x7f42b9deea10>

Here is my spec_helper method:

def login_user
  user = User.make!
  @request.session[:user_id] = user.id
  @current_user ||= User.find_by_id(user.id)
end

It's been a while since I've touched a Rails 2.x app so maybe I'm missing something here.


Solution

  • Solved:

    I shouldn't be using make! in this old version of machinist

    I ended up writing a little test for machinist to see if it will load my blueprints and I selected a model which is less complicated, ie: one validation not 10.

    describe "machinist" do
      it "should create a category" do
        category = Category.make
        category.name.should == "General"
      end
    end
    

    This worked, so it was mostly to do with validations and small syntax mistakes.