浏览代码

[metadata] Navigator delete tags functionality and added tests

Jenny Kim 10 年之前
父节点
当前提交
55bacc4
共有 2 个文件被更改,包括 19 次插入1 次删除
  1. 7 1
      desktop/libs/metadata/src/metadata/navigator.py
  2. 12 0
      desktop/libs/metadata/src/metadata/tests.py

+ 7 - 1
desktop/libs/metadata/src/metadata/navigator.py

@@ -143,7 +143,13 @@ class NavigatorApi(object):
     return self.update_entity(entity_id, tags=new_tags)
 
 
-  # TODO: remove_tags?
+  def delete_tags(self, entity_id, tags):
+    entity = self.get_entity(entity_id)
+    new_tags = entity['tags'] or []
+    for tag in tags:
+      if tag in new_tags:
+        new_tags.remove(tag)
+    return self.update_entity(entity_id, tags=new_tags)
 
 
   def _clean_path(self, path):

+ 12 - 0
desktop/libs/metadata/src/metadata/tests.py

@@ -74,3 +74,15 @@ class TestNavigatorApi(object):
   def test_find_entity(self):
     entity = self.api.find_entity(source_type='HIVE', type='DATABASE', name='default')
     assert_true('identity' in entity, entity)
+
+
+  def test_update_tags(self):
+    entity = self.api.find_entity(source_type='HIVE', type='DATABASE', name='default')
+    tags = entity['tags'] or []
+
+    entity = self.api.add_tags(entity['identity'], ['hue_test'])
+    assert_equal(tags + ['hue_test'], entity['tags'])
+
+    entity = self.api.delete_tags(entity['identity'], ['hue_test'])
+    new_tags = entity['tags'] or []
+    assert_equal(tags, new_tags)