Bladeren bron

Create separate UT to handle dup gist directories and refactor get_gist_directory

Harshg999 4 jaren geleden
bovenliggende
commit
750d649702
2 gewijzigde bestanden met toevoegingen van 19 en 17 verwijderingen
  1. 14 12
      desktop/core/src/desktop/api2_tests.py
  2. 5 5
      desktop/core/src/desktop/models.py

+ 14 - 12
desktop/core/src/desktop/api2_tests.py

@@ -699,30 +699,32 @@ class TestDocumentGist(object):
         json.loads(Document2.objects.get(type='gist', uuid=gist2['uuid']).data)['statement_raw']
     )
 
+  def test_handle_multiple_gist_dir(self):
     # Create multiple gist directories and then make a new gist
     home_dir = Directory.objects.get_home_directory(self.user)
-    gist_dir2 = Directory.objects.create(name='Gist', owner=self.user, parent_directory=home_dir)
 
-    assert_equal(2, Directory.objects.filter(name='Gist', type='directory').count())
+    gist_dir1 = Directory.objects.create(name=Document2.GIST_DIR, owner=self.user, parent_directory=home_dir)
+    gist_dir2 = Directory.objects.create(name=Document2.GIST_DIR, owner=self.user, parent_directory=home_dir)
 
-    response3 = self._create_gist(
-        statement='SELECT 3',
+    assert_equal(2, Directory.objects.filter(name=Document2.GIST_DIR, type='directory').count())
+
+    response = self._create_gist(
+        statement='SELECT 12345',
         doc_type='hive-query',
-        name='test_gist_create3',
+        name='test_gist_create',
     )
-    gist3 = json.loads(response3.content)
+    gist = json.loads(response.content)
 
     # Gist directories merged into one
-    assert_equal(1, Directory.objects.filter(name='Gist', type='directory').count())
+    assert_equal(1, Directory.objects.filter(name=Document2.GIST_DIR, type='directory').count())
 
-    assert_true(Document2.objects.filter(type='gist', name='test_gist_create3'))
-    assert_true(Document2.objects.filter(type='gist', uuid=gist3['uuid']))
+    assert_true(Document2.objects.get(type='gist', name='test_gist_create'))
+    assert_true(Document2.objects.get(type='gist', uuid=gist['uuid']))
     assert_equal(
-        'SELECT 3',
-        json.loads(Document2.objects.get(type='gist', uuid=gist3['uuid']).data)['statement_raw']
+        'SELECT 12345',
+        json.loads(Document2.objects.get(type='gist', uuid=gist['uuid']).data)['statement_raw']
     )
 
-
   def test_get(self):
     response = self._create_gist(
         statement='SELECT 1',

+ 5 - 5
desktop/core/src/desktop/models.py

@@ -1068,22 +1068,22 @@ class Document2Manager(models.Manager, Document2QueryMixin):
 
   def get_gist_directory(self, user):
     home_dir = self.get_home_directory(user)
-    try:
 
+    try:
       gist_dir, created = Directory.objects.get_or_create(name=Document2.GIST_DIR, owner=user, parent_directory=home_dir)
       if created:
         LOG.info('Successfully created gist directory for user: %s' % user.username)
-      return gist_dir
+        
     except Directory.MultipleObjectsReturned:
       LOG.error('Multiple Gist directories detected. Merging all into one.')
 
       gist_dirs = list(self.filter(owner=user, parent_directory=home_dir, name=Document2.GIST_DIR, type='directory').order_by('-last_modified'))
-      parent_home_dir = gist_dirs.pop()
+      gist_dir = gist_dirs.pop()
       for dir in gist_dirs:
-        dir.children.exclude(name='.Trash').update(parent_directory=parent_home_dir)
+        dir.children.exclude(name='.Trash').update(parent_directory=gist_dir)
         dir.delete()
 
-      return parent_home_dir
+    return gist_dir
 
   def get_by_path(self, user, path):
     """