Ignore:
Timestamp:
16 Nov 2011, 18:05:03 (13 years ago)
Author:
uli
Message:

Make imagestorage sensible for different filename extensions per upload doc.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.sirp/trunk/src/waeup/sirp/tests/test_imagestorage.py

    r7105 r7120  
    104104        return
    105105
     106    def test_create_file_w_ext(self):
     107        # We can store files with filename extension
     108        storage = ExtFileStore(root=self.workdir)
     109        dummy_file = StringIO('sample file')
     110        image_file = storage.createFile('mysample.txt', dummy_file)
     111        self.assertTrue('mysample.txt' in os.listdir(storage.root))
     112        self.assertEqual('mysample.txt', image_file.data)
     113        return
     114
    106115    def test_get_file(self):
    107116        # We can get files after having them stored
     
    111120        result = storage.getFile(image_file.data)
    112121        self.assertEqual(result.read(), 'sample file')
     122        return
     123
     124    def test_get_file_w_ext(self):
     125        # We can get files with filename extension after having them
     126        # stored
     127        storage = ExtFileStore(root=self.workdir)
     128        dummy_file = StringIO('sample file')
     129        image_file = storage.createFile('mysample.txt', dummy_file)
     130        result = storage.getFile('mysample')
     131        self.assertEqual(result.read(), 'sample file')
     132        return
     133
     134    def test_replace_file_w_new_ext(self):
     135        # when we store a file with the same file_id but different
     136        # filename extension, the old file will be deleted
     137        storage = ExtFileStore(root=self.workdir)
     138        dummy_file = StringIO('sample_file')
     139        image_file = storage.createFile('mysample.jpg', dummy_file)
     140        file1_path = storage.getFile('mysample').name
     141        new_file = storage.createFile(
     142            'mysample.png', StringIO('new file'))
     143        file2 = storage.getFile('mysample')
     144        self.assertEqual(file2.name[-12:], 'mysample.png')
     145        self.assertEqual(file2.read(), 'new file')
     146        # the old file was deleted
     147        self.assertFalse(os.path.exists(file1_path))
    113148        return
    114149
     
    147182        return os.path.join(root, file_id[12:])
    148183
    149     def createFile(self, store, root, file_id, filename, f):
    150         path = self.pathFromFileID(store, root, file_id)
    151         return f, path, HurryFile(filename, file_id)
     184    def createFile(self, store, root, filename, file_id, f):
     185        ext = os.path.splitext(filename)[1]
     186        path = self.pathFromFileID(store, root, file_id) + ext
     187        return f, path, HurryFile(filename, file_id + ext)
    152188
    153189class CustomContext(object):
     
    162198        # the `attr` parameter, a simple string.
    163199        if attr=='img':
    164             return '__mymarker__mysample.jpg'
     200            return '__mymarker__mysample_img.jpg'
    165201        elif attr=='doc':
    166             return '__mymarker__mysample.doc'
     202            return '__mymarker__mysample_doc.doc'
    167203        return '__mymarker__mysample.txt'
    168204
     
    246282        return
    247283
     284    def test_customized_handler_create_file_w_ext(self):
     285        # when we create a file of img type, the filename ext is taken
     286        # from input file.
     287        fs = ExtFileStore()
     288        result = fs.createFile(
     289            '__MYMARKER__sample_img.png', StringIO('sample text'))
     290        self.assertEqual(result.data, '__MYMARKER__sample_img.png')
     291        self.assertTrue('sample_img.png' in os.listdir(fs.root))
     292        return
     293
    248294    def test_customized_handler_get_file(self):
    249295        # we consider registered filename handlers when asking for
     
    279325        # each file has a different file id
    280326        self.assertEqual(file_id1, '__mymarker__mysample.txt')
    281         self.assertEqual(file_id2, '__mymarker__mysample.jpg')
    282         self.assertEqual(file_id3, '__mymarker__mysample.doc')
     327        self.assertEqual(file_id2, '__mymarker__mysample_img.jpg')
     328        self.assertEqual(file_id3, '__mymarker__mysample_doc.doc')
    283329        # each file has different content
    284330        self.assertEqual(result1.read(), 'my sample 1')
Note: See TracChangeset for help on using the changeset viewer.