@@ -24,11 +24,12 @@ def setUp(self):
24
24
# Blob1
25
25
self .blob1 = b'blob1'
26
26
self .blob1_b64 = base64 .b64encode (self .blob1 )
27
- blob1_hash = hashlib .sha1 (self .blob1 ).hexdigest ()
28
- self .blob1_fname = blob1_hash [:HASH_SPLIT ] + '/' + blob1_hash
27
+ self . blob1_hash = hashlib .sha1 (self .blob1 ).hexdigest ()
28
+ self .blob1_fname = self . blob1_hash [:HASH_SPLIT ] + '/' + self . blob1_hash
29
29
30
30
# Blob2
31
31
self .blob2 = b'blob2'
32
+ self .blob2_b64 = base64 .b64encode (self .blob2 )
32
33
33
34
def assertApproximately (self , value , expectedSize , delta = 1 ):
34
35
# we don't used bin_size in context, because on write, the cached value is the data and not
@@ -239,3 +240,23 @@ def test_10_image_autoresize(self):
239
240
self .env ['ir.config_parameter' ].set_param ('base.image_autoresize_max_px' , '0' )
240
241
attach .raw = img_bin
241
242
self .assertApproximately (attach .raw , fullsize )
243
+
244
+ def test_11_copy (self ):
245
+ """
246
+ Copying an attachment preserves the data
247
+ """
248
+ document = self .Attachment .create ({'name' : 'document' , 'datas' : self .blob2_b64 })
249
+ document2 = document .copy ({'name' : "document (copy)" })
250
+ self .assertEqual (document2 .name , "document (copy)" )
251
+ self .assertEqual (document2 .datas , document .datas )
252
+ self .assertEqual (document2 .db_datas , document .db_datas )
253
+ self .assertEqual (document2 .store_fname , document .store_fname )
254
+ self .assertEqual (document2 .checksum , document .checksum )
255
+
256
+ document3 = document .copy ({'datas' : self .blob1_b64 })
257
+ self .assertEqual (document3 .datas , self .blob1_b64 )
258
+ self .assertEqual (document3 .raw , self .blob1 )
259
+ self .assertTrue (self .filestore ) # no data in db but has a store_fname
260
+ self .assertEqual (document3 .db_datas , False )
261
+ self .assertEqual (document3 .store_fname , self .blob1_fname )
262
+ self .assertEqual (document3 .checksum , self .blob1_hash )
0 commit comments