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