jsmestad / jsonapi-consumer

Client framework for consuming JSONAPI services in Ruby
https://github.com/jsmestad/jsonapi-consumer
Apache License 2.0
94 stars 18 forks source link

Feature/persistence #13

Closed danelowe closed 9 years ago

danelowe commented 9 years ago

This is changing the way jsonapi-consumer decides if an object is persisted or not. It no longer checks for the existence of an ID attribute and instead sets flags when an object is loaded. I tried to draw inspiration from how ActiveRecord does it, but its a much simpler implementation.

The reasoning behind this change is that I read the JSONAPI spec as almost encouraging the use of client-supplied IDs. If jsonapi-consumer assumes that a new record with an ID is persisted, then the wrong actions would be taken.

I'm not completely happy with adding another parameter to the initialise method, but it seemed like the path of least resistance for now.

In the query classes, I've added methods that signify whether the query type is to be used for a new record or for an existing record (e.g. create vs update query). This I see as a pragmatic way of influencing how the path is built during the instantiation of the query.

danelowe commented 9 years ago

Oops, should I have based this PR off develop?

jsmestad commented 9 years ago

@danelowe yep off develop please for anything RC related.


How would one use this in a test setting? It was simple enough in a spec to do something like expect(Post).to recieve(:all).and_return([Post.new(id: 'thing-to-make-it-seem-persisted')]) with this is it just as trivial?

jsmestad commented 9 years ago

Question above about how to simulate a persisted object.

@danelowe Please re-open this PR against develop