<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>test/fixtures/interactions/visit.xml</filename>
    </added>
    <added>
      <filename>test/fixtures/object/success.xml</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -64,6 +64,36 @@ module Gluby
       response.response['links']['link']
     end
 
+    def visit
+      response = Gluby.get(&quot;/user/addVisit&quot;, :query =&gt; { :objectId =&gt; @objectKey, :source =&gt; 'http://gluetogo.heroku.com', :app =&gt; 'GlueToGo' })
+      Gluby::Interaction.from_response(response)
+    end
+
+    def unvisit
+      response = Gluby.get(&quot;/user/removeVisit&quot;, :query =&gt; { :objectId =&gt; @objectKey })
+      return :success if response.response.has_key?('success')
+    end
+
+    def like
+      response = Gluby.get(&quot;/user/addLike&quot;, :query =&gt; { :objectId =&gt; @objectKey, :source =&gt; 'http://gluetogo.heroku.com', :app =&gt; 'GlueToGo' })
+      Gluby::Interaction.from_response(response)
+    end
+
+    def unlike
+      response = Gluby.get(&quot;/user/removeLike&quot;, :query =&gt; { :objectId =&gt; @objectKey })
+      return :success if response.response.has_key?('success')
+    end
+
+    def add2cents(comment)
+      response = Gluby.get(&quot;/user/add2Cents&quot;, :query =&gt; { :objectId =&gt; @objectKey, :source =&gt; 'http://gluetogo.heroku.com', :app =&gt; 'GlueToGo', :comment =&gt; comment })
+      Gluby::Interaction.from_response(response)
+    end
+
+    def remove2cents
+      response = Gluby.get(&quot;/user/remove2Cents&quot;, :query =&gt; { :objectId =&gt; @objectKey })
+      return :success if response.response.has_key?('success')
+    end
+
     def glue_object?
       false
     end</diff>
      <filename>lib/gluby/object.rb</filename>
    </modified>
    <modified>
      <diff>@@ -155,5 +155,75 @@ class ObjectTest &lt; Test::Unit::TestCase
     end
   end
 
+  context &quot;private actions&quot; do
+    setup do
+      # Visit
+      stub_get('/user/addVisit?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=invalid_key', 'errors/invalid_object.xml')
+
+      # Like
+      stub_get('/user/addVisit?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=invalid_key', 'errors/invalid_object.xml')
+
+      # Add 2 cents
+      stub_get('/user/addVisit?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=invalid_key', 'errors/invalid_object.xml')
+
+      @invalid_object = Gluby::Object.new('invalid_key')
+    end
+
+    context &quot;valid object&quot; do
+      setup do
+        # Add
+        stub_get('/user/addVisit?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=movies%2Fying_xiong%2Fyimou_zhang', 'interactions/visit.xml')
+        stub_get('/user/addLike?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=movies%2Fying_xiong%2Fyimou_zhang', 'interactions/visit.xml')
+        stub_get('/user/add2Cents?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=movies%2Fying_xiong%2Fyimou_zhang&amp;comment=this%20is%20a%20comment', 'interactions/visit.xml')
+
+        # Remove
+        stub_get('/user/removeVisit?objectId=movies%2Fying_xiong%2Fyimou_zhang', 'object/success.xml')
+        stub_get('/user/removeLike?objectId=movies%2Fying_xiong%2Fyimou_zhang', 'object/success.xml')
+        stub_get('/user/remove2Cents?objectId=movies%2Fying_xiong%2Fyimou_zhang', 'object/success.xml')
+
+        @object = Gluby::Object.new('movies/ying_xiong/yimou_zhang')
+      end
+
+      should &quot;return an interaction for add actions&quot; do
+        @object.visit.should be_kind_of(Gluby::Interaction)
+        @object.like.should be_kind_of(Gluby::Interaction)
+        @object.add2cents('this is a comment').should be_kind_of(Gluby::Interaction)
+      end
+
+      should &quot;return success for remove actions&quot; do
+        @object.unvisit.should == :success
+        @object.unlike.should == :success
+        @object.remove2cents.should == :success
+      end
+    end
+
+    context &quot;invalid object&quot; do
+      setup do
+        # Add
+        stub_get('/user/addVisit?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=movies%2Fying_xiong%2Fyimou_zhang', 'errors/invalid_object.xml')
+        stub_get('/user/addLike?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=movies%2Fying_xiong%2Fyimou_zhang', 'errors/invalid_object.xml')
+        stub_get('/user/add2Cents?source=http%3A%2F%2Fgluetogo.heroku.com&amp;app=GlueToGo&amp;objectId=movies%2Fying_xiong%2Fyimou_zhang&amp;comment=this%20is%20a%20comment', 'errors/invalid_object.xml')
+
+        # Remove
+        stub_get('/user/removeVisit?objectId=movies%2Fying_xiong%2Fyimou_zhang', 'errors/invalid_object.xml')
+        stub_get('/user/removeLike?objectId=movies%2Fying_xiong%2Fyimou_zhang', 'errors/invalid_object.xml')
+        stub_get('/user/remove2Cents?objectId=movies%2Fying_xiong%2Fyimou_zhang', 'errors/invalid_object.xml')
+
+        @object = Gluby::Object.new('movies/ying_xiong/yimou_zhang')
+      end
+
+      should &quot;raise invalid object exception for add actions&quot; do
+        lambda { @object.visit }.should raise_error(Gluby::InvalidObject)
+        lambda { @object.like }.should raise_error(Gluby::InvalidObject)
+        lambda { @object.add2cents('this is a comment') }.should raise_error(Gluby::InvalidObject)
+      end
+
+      should &quot;raise invalid object exception remove actions&quot; do
+        lambda { @object.unvisit }.should raise_error(Gluby::InvalidObject)
+        lambda { @object.unlike }.should raise_error(Gluby::InvalidObject)
+        lambda { @object.remove2cents }.should raise_error(Gluby::InvalidObject)
+      end
+    end
+  end
 end
 </diff>
      <filename>test/gluby/object_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a1b6887e2b720bdd7b3d669a1a158f410a0c0956</id>
    </parent>
  </parents>
  <author>
    <name>Benny Wong</name>
    <email>bdotdub@gmail.com</email>
  </author>
  <url>http://github.com/bdotdub/gluby/commit/10104264ae202ec297d8146b47b466f26d8ab436</url>
  <id>10104264ae202ec297d8146b47b466f26d8ab436</id>
  <committed-date>2009-06-10T19:35:21-07:00</committed-date>
  <authored-date>2009-06-10T19:35:21-07:00</authored-date>
  <message>added object private actions</message>
  <tree>fb96d5db2975ac4f3eda36839e1b76c0ddd3b7aa</tree>
  <committer>
    <name>Benny Wong</name>
    <email>bdotdub@gmail.com</email>
  </committer>
</commit>
