From 9a97b51c0c2f71f9e35a25bdafb42fb541af74c1 Mon Sep 17 00:00:00 2001
From: Clay Gerrard <clay.gerrard@gmail.com>
Date: Tue, 9 Feb 2016 13:15:22 -0800
Subject: [PATCH] more tests for pseudo/dir

Change-Id: Idab172aefd8e69ca8e4d623918eba1bc1da91a42
---
 tests/unit/test_service.py | 31 ++++++++++++++++++++++++-------
 1 file changed, 24 insertions(+), 7 deletions(-)

diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py
index c2a71434..3f6da2be 100644
--- a/tests/unit/test_service.py
+++ b/tests/unit/test_service.py
@@ -1272,13 +1272,30 @@ class TestServiceUpload(_TestServiceBase):
             mock_conn.get_container.assert_has_calls(expected)
 
     def test_make_upload_objects(self):
-        # String list
-        filenames = ['/absolute/file/path', 'relative/file/path']
-        self.assertEqual(
-            [o.object_name for o in SwiftService._make_upload_objects(
-             filenames, 'pseudo/folder/path')],
-            ['pseudo/folder/path/absolute/file/path',
-             'pseudo/folder/path/relative/file/path'])
+        check_names_pseudo_to_expected = {
+            (('/absolute/file/path',), ''): ['absolute/file/path'],
+            (('relative/file/path',), ''): ['relative/file/path'],
+            (('/absolute/file/path',), '/absolute/pseudo/dir'): [
+                'absolute/pseudo/dir/absolute/file/path'],
+            (('/absolute/file/path',), 'relative/pseudo/dir'): [
+                'relative/pseudo/dir/absolute/file/path'],
+            (('relative/file/path',), '/absolute/pseudo/dir'): [
+                'absolute/pseudo/dir/relative/file/path'],
+            (('relative/file/path',), 'relative/pseudo/dir'): [
+                'relative/pseudo/dir/relative/file/path'],
+        }
+        errors = []
+        for (filenames, pseudo_folder), expected in \
+                check_names_pseudo_to_expected.items():
+            actual = SwiftService._make_upload_objects(
+                filenames, pseudo_folder=pseudo_folder)
+            try:
+                self.assertEqual(expected, [o.object_name for o in actual])
+            except AssertionError as e:
+                msg = 'given (%r, %r) expected %r, got %s' % (
+                    filenames, pseudo_folder, expected, e)
+                errors.append(msg)
+        self.assertFalse(errors, "\nERRORS:\n%s" % '\n'.join(errors))
 
 
 class TestServiceDownload(_TestServiceBase):