lib/restpack_service/support/matchers.rb in restpack_service-0.0.46 vs lib/restpack_service/support/matchers.rb in restpack_service-0.0.47

- old
+ new

@@ -28,5 +28,46 @@ map.each do |value, expected| service_request_with(param, value) { |r| r[param].should == expected } end end end + +def it_acts_as_create_command(type) + plural = "#{type}s".to_sym + model_class = "Models::#{type.capitalize}".constantize + serializer_class = "Serializers::#{type.capitalize}".constantize + + let(:response) { subject.class.run(params) } + + context "with valid params" do + context "when creating a single item" do + let(:item) { build("#{type}_request".to_sym) } + let(:params) { { plural => [item] } } + + it "returns the newly created #{type}" do + response.success?.should == true + response.result.should include(plural), "The reponse should include :#{plural} array" + + response_items = response.result[plural] + response_items.length.should == 1 + response_item = response_items.first + + model = model_class.find(response_item[:id]) + response_item.should == serializer_class.as_json(model) + end + end + + context "when creating multiple items" do + let(:item1) { build("#{type}_request".to_sym) } + let(:item2) { build("#{type}_request".to_sym) } + let(:params) { { plural => [item1, item2] } } + + it "returns the newly created #{type}s" do + response.success?.should == true + response.result.should include(plural), "The reponse should include :#{plural} array" + + response_items = response.result[plural] + response_items.length.should == 2 + end + end + end +end