diff --git a/test/mongoid_test_helper.rb b/test/mongoid_test_helper.rb
index 903ff5540af7d21636e0acccce133960123cc202..ef072fb2d6e18991c190bac5e973064b459f03a9 100644
--- a/test/mongoid_test_helper.rb
+++ b/test/mongoid_test_helper.rb
@@ -41,3 +41,62 @@ class PlaceUsingMongoidWithoutIndex
   field :location, :type => Array
   geocoded_by :location, :skip_index => true
 end
+
+class PlaceUsingMongoidReverseGeocoded
+  include Mongoid::Document
+  include Geocoder::Model::Mongoid
+
+  field :address
+  field :coordinates, :type => Array
+  reverse_geocoded_by :coordinates
+
+  def initialize(name, latitude, longitude)
+    super()
+    write_attribute :name, name
+    write_attribute :coordinates, [latitude, longitude]
+  end
+end
+
+class PlaceUsingMongoidWithCustomResultsHandling
+  include Mongoid::Document
+  include Geocoder::Model::Mongoid
+
+  field :location, :type => Array
+  field :coords_string
+  field :name
+  field :address
+  geocoded_by :address, :coordinates => :location do |obj,results|
+    if result = results.first
+      obj.coords_string = "#{result.latitude},#{result.longitude}"
+    else
+      obj.coords_string = "NOT FOUND"
+    end
+  end
+
+  def initialize(name, address)
+    super()
+    write_attribute :name, name
+    write_attribute :address, address
+  end
+end
+
+class PlaceUsingMongoidReverseGeocodedWithCustomResultsHandling
+  include Mongoid::Document
+  include Geocoder::Model::Mongoid
+
+  field :name
+  field :country
+  field :coordinates, :type => Array
+
+  reverse_geocoded_by :coordinates do |obj,results|
+    if result = results.first
+      obj.country = result.country_code
+    end
+  end
+
+  def initialize(name, latitude, longitude)
+    super()
+    write_attribute :name, name
+    write_attribute :coordinates, [latitude, longitude]
+  end
+end
diff --git a/test/unit/mongoid_test.rb b/test/unit/mongoid_test.rb
index f98afa195b5e0cd4e958903f027ac5ec03d2e8ca..cea0fa73d0a2499a619df8e28c7550eb8f4c22f6 100644
--- a/test/unit/mongoid_test.rb
+++ b/test/unit/mongoid_test.rb
@@ -39,4 +39,23 @@ class MongoidTest < GeocoderTestCase
     end
     assert !result
   end
+
+  def test_geocoded_with_custom_handling
+    p = PlaceUsingMongoidWithCustomResultsHandling.new(*geocoded_object_params(:msg))
+    p.location = [40.750354, -73.993371]
+    p.geocode
+    assert p.coords_string == "40.750354,-73.993371"
+  end
+
+  def test_reverse_geocoded
+    p = PlaceUsingMongoidReverseGeocoded.new(*reverse_geocoded_object_params(:msg))
+    p.reverse_geocode
+    assert p.address == "4 Penn Plaza, New York, NY 10001, USA"
+  end
+
+  def test_reverse_geocoded_with_custom_handling
+    p = PlaceUsingMongoidReverseGeocodedWithCustomResultsHandling.new(*reverse_geocoded_object_params(:msg))
+    p.reverse_geocode
+    assert p.country == "US"
+  end
 end