On Tue, Feb 2, 2010 at 10:54 AM, Stephen Smithstone <stephen.smithst...@gmail.com> wrote: > seems the blueprint is not inheriting from active record base so no > #attributes on the class, have to look for another solution or pass in some > parameters my self
Model#plan will just return a hash of attributes, using your blueprint. If you want an instance of the model, you can use Model#make, or Model#make_unsaved. (This is assuming you're using Machinist, given the api you're using) > On 2 February 2010 12:26, Stephen Smithstone <stephen.smithst...@gmail.com> > wrote: >> >> cheers for the response , seem that attributes is missing from hash on my >> system >> >> all i did was the blueprint with a standard hash >> >> client = { :title => "Mr } >> >> client.attributes >> >> NoMethodError: undefined method `attributes' for {:title=>"Mr"}:Hash >> >> is attributes added on by rails ? >> >> if so my setup must be wrong >> >> On 2 February 2010 12:07, J. B. Rainsberger <jbrainsber...@gmail.com> >> wrote: >>> >>> On Tue, Feb 2, 2010 at 04:24, Stephen Smithstone <ssmithst...@me.com> >>> wrote: >>> >>> > A bit stuck here being new to ruby and rspec >>> >>> Welcome. I hope you like the experience. Good news: we've seen what >>> you've done a thousand times and so it's quite easy to explain. >>> >>> > it "should create new client" do >>> > // creates me a hash of generated values using Foregey >>> > client = Client.plan >>> > // specify that I should be creating a new client with the hash >>> > values >>> > from client >>> > Client.should_receive(:new).with(client) >>> > //post to the server >>> > post 'create' , :client => client >>> > end >>> > >>> > in my controller >>> > >>> > def create >>> > client = Client.new(params[:client]) >>> > end >>> > >>> > now this is failing with >>> > >>> > Spec::Mocks::MockExpectationError: <Client(id: integer, created_at: >>> > datetime, updated_at: datetime, title: string, lastname: string, >>> > firstname: >>> > string, email: string) (class)> received :new with unexpected arguments >>> > expected: ({:title=>"Mr", :firstname=>"Ernest", :lastname=>"Burke", >>> > :email=>"rgarr...@blogtag.info"}) >>> > got: ({"title"=>"Mr", "lastname"=>"Burke", >>> > "firstname"=>"Ernest", >>> > "email"=>"rgarr...@blogtag.info"}) >>> > >>> > is there a way to specify to use symbols instead of the strings as >>> > keys, as >>> > I dont want to be doing >>> > >>> > :client => { "title" => client.title , ............ } >>> > >>> > as the client model may change over time >>> >>> Try Client.should_receive(:new).with(client.attributes), because the >>> #attributes method turns a model into a Hash of symbol to value. It >>> uses string keys instead of symbol keys, but that shouldn't hurt you. >>> >>> Good luck. >>> -- >>> J. B. (Joe) Rainsberger :: http://www.jbrains.ca :: >>> http://blog.thecodewhisperer.com >>> Diaspar Software Services :: http://www.diasparsoftware.com >>> Author, JUnit Recipes >>> 2005 Gordon Pask Award for contribution to Agile practice :: Agile >>> 2010: Learn. Practice. Explore. >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-users@rubyforge.org >>> http://rubyforge.org/mailman/listinfo/rspec-users >> > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users