spec/bearcat/client/users_spec.rb in bearcat-0.9.5 vs spec/bearcat/client/users_spec.rb in bearcat-0.9.6

- old
+ new

@@ -29,10 +29,37 @@ user_avatars = @client.user_avatars(1) user_avatars.count.should == 2 user_avatars.first['type'].should == 'gravatar' end + describe 'user custom data' do + before (:each) do + @query = {"ns" => "com.test.app"} + end + + it "returns custom user data for a scope" do + + stub_get(@client, "/api/v1/users/1/custom_data/food").with(query: @query).to_return(json_response("custom_food_data.json")) + custom_food_data = @client.load_custom_data("1", @query, "food") + custom_food_data["data"].keys.count.should == 2 + custom_food_data["data"]["least_favorite"].should == "water mellon" + end + + it "returns all custom user data" do + stub_get(@client, "/api/v1/users/1/custom_data").with(query: @query).to_return(json_response("custom_data.json")) + custom_data = @client.load_custom_data("1", @query, "") + custom_data["data"].keys.count.should == 2 + custom_data["data"]["food"]["favorite"].should == "steak" + end + + it "returns no data if no data found for scope" do + stub_get(@client, "/api/v1/users/1/custom_data/bogus").with(query: @query).to_return(json_response("no_custom_data.json")) + no_custom_data = @client.load_custom_data("1", @query, "bogus") + no_custom_data["message"].should == "no data for scope" + end + end + end context 'POST' do it "creates a user in an account" do @@ -41,9 +68,42 @@ body = {"user" => {"name" => name}, "pseudonym" => {"unique_id" => pseudonym}} stub_post(@client, "/api/v1/accounts/1/users").with(body: body).to_return(json_response("add_user.json")) user = @client.add_user(1, body) user['login_id'].should == pseudonym user['name'].should == name + end + + end + + context 'PUT' do + + it "creates custom user data" do + body = {"ns" => "com.test.app", "data" => {"favorite" => "steak", "least_favorite" => "water mellon"}} + stub_put(@client, "/api/v1/users/1/custom_data/food").with(body: body).to_return(json_response("add_custom_user_data.json")) + custom_food_data = @client.store_custom_data("1", body, "food") + custom_food_data["data"].keys.count.should == 1 + custom_food_data["data"]["food"]["least_favorite"].should == "water mellon" + end + + end + + context 'DELETE' do + + before (:each) do + @query = {"ns" => "com.test.app"} + end + + it "deletes custom user data for a scope" do + stub_delete(@client, "/api/v1/users/1/custom_data/food/favorite").with(query: @query).to_return(json_response("delete_custom_data_scope.json")) + custom_deleted_data = @client.delete_custom_data("1", @query, "food/favorite") + custom_deleted_data["data"].should == "steak" + end + + it "deletes all custom user data" do + stub_delete(@client, "/api/v1/users/1/custom_data").with(query: @query).to_return(json_response("custom_data.json")) + custom_deleted_data = @client.delete_custom_data("1", @query, "") + custom_deleted_data["data"].keys.count.should == 2 + custom_deleted_data["data"]["food"]["favorite"].should == "steak" end end end