spec/acfs/model/persistance_spec.rb in acfs-0.11.0 vs spec/acfs/model/persistance_spec.rb in acfs-0.12.0

- old
+ new

@@ -1,24 +1,32 @@ require 'spec_helper' describe Acfs::Model::Persistence do let(:model_class) { MyUser } before do - @get_stub = stub_request(:get, "http://users.example.org/users/1").to_return( - body: MessagePack.dump({ id: 1, name: "Anon", age: 12 }), - headers: {'Content-Type' => 'application/x-msgpack'}) + @get_stub = stub_request(:get, "http://users.example.org/users/1").to_return response({ id: 1, name: "Anon", age: 12 }) @patch_stub = stub_request(:put, 'http://users.example.org/users/1') .with( body: '{"id":1,"name":"Idefix","age":12}') - .to_return( - body: MessagePack.dump({ id: 1, name: 'Idefix', age: 12 }), - headers: {'Content-Type' => 'application/x-msgpack'}) + .to_return response({ id: 1, name: 'Idefix', age: 12 }) - @post_stub = stub_request(:post, 'http://users.example.org/users').to_return( - body: MessagePack.dump({ id: 5, name: 'Idefix', age: 12 }), - headers: {'Content-Type' => 'application/x-msgpack'}) + @post_stub = stub_request(:post, 'http://users.example.org/users') + .with(body: '{"id":null,"name":"Idefix","age":12}') + .to_return response({ id: 5, name: 'Idefix', age: 12 }) + + stub_request(:post, 'http://users.example.org/users') + .with(body: '{"id":null,"name":"Anon","age":null}') + .to_return response({ id: 5, name: 'Anon', age: 12 }) + + stub_request(:post, 'http://users.example.org/users') + .with(body: '{"name":"Idefix","age":12}') + .to_return response({ id: 5, name: 'Idefix', age: 12 }) + + stub_request(:post, 'http://users.example.org/users') + .with(body: '{"age":12}') + .to_return response({ errors: { name: [ 'required' ] }}, status: 422) end context 'new model' do let(:model) { model_class.new } @@ -73,8 +81,66 @@ let(:model) { model_class.find 1 } before { model; Acfs.run; model.name = "dhh" } it { expect(model).to_not be_persisted } it { expect(model).to_not be_new } + end + end + + describe '.create!' do + context 'with valid data' do + let(:data) { { name: 'Idefix', age: 12 } } + + it 'should create new resource' do + model = model_class.create! data + expect(model.name).to be == 'Idefix' + expect(model.age).to be == 12 + end + + it 'should be persisted' do + model = model_class.create! data + expect(model).to be_persisted + end + end + + context 'with invalid data' do + let(:data) { { age: 12 } } + + it 'should raise an error' do + expect { model_class.create! data }.to raise_error ::Acfs::InvalidResource do |error| + expect(error.errors).to be == { name: ['required'] }.stringify_keys + end + end + end + end + + describe '.create' do + context 'with valid data' do + let(:data) { { name: 'Idefix', age: 12 } } + + it 'should create new resource' do + model = model_class.create! data + expect(model.name).to be == 'Idefix' + expect(model.age).to be == 12 + end + + it 'should be persisted' do + model = model_class.create! data + expect(model).to be_persisted + end + end + + context 'with invalid data' do + let(:data) { { age: 12 } } + + it 'should return not persisted resource' do + model = model_class.create data + expect(model).to_not be_persisted + end + + it 'should contain error hash' do + model = model_class.create data + expect(model.errors.to_hash).to be == { name: [ "required" ]}.stringify_keys + end end end end