diff --git a/mogan/tests/unit/objects/test_aggregate.py b/mogan/tests/unit/objects/test_aggregate.py
index 91fd5cec..3ece2f69 100644
--- a/mogan/tests/unit/objects/test_aggregate.py
+++ b/mogan/tests/unit/objects/test_aggregate.py
@@ -67,3 +67,30 @@ class TestAggregateObject(base.DbTestCase):
             mock_aggregate_update.return_value = self.fake_aggregate
             mock_aggregate_update.assert_called_once_with(
                 self.context, id, updates)
+
+    def test_save_metadata(self):
+        add_meta = {'add_meta': 'addval'}
+        del_meta = {'del_meta': 'delval'}
+        id = self.fake_aggregate['id']
+        with mock.patch.object(self.dbapi, 'aggregate_update',
+                               autospec=True) as mock_aggregate_update:
+            with mock.patch.object(
+                    self.dbapi, 'aggregate_metadata_update_or_create',
+                    autospec=True) as mock_aggregate_upcreate:
+                with mock.patch.object(
+                        self.dbapi, 'aggregate_metadata_delete',
+                        autospec=True) as mock_aggregate_delete:
+                    aggregate = objects.Aggregate(self.context,
+                                                  **self.fake_aggregate)
+                    aggregate._orig_metadata = del_meta
+                    aggregate.metadata = add_meta
+                    updates = aggregate.obj_get_changes()
+                    del updates['metadata']
+                    aggregate.save(self.context)
+                    mock_aggregate_update.return_value = self.fake_aggregate
+                    mock_aggregate_upcreate.assert_called_once_with(
+                        self.context, id, add_meta)
+                    mock_aggregate_delete.assert_called_once_with(
+                        self.context, id, 'del_meta')
+                    mock_aggregate_update.assert_called_once_with(
+                        self.context, id, updates)