Files
odoo_source/addons/document_ftp/test/document_ftp_test4.yml
T
Vo Minh Thu 3aa47b7075 [FIX] document_ftp: tests: smash those tests with lots of commits.
(Otherwise changes happening on one cursor are not visible to the other one.)
Normally, as those yaml files commit(), they sould be inside demo data
instead of tests. But really we want to test a completely initialized
database, not being executed while the database is being initialized
(as the demo data are). This is just a matter of convention as the
tests are only executed when you also install demo data.

bzr revid: vmt@openerp.com-20111007091737-2dzocv2rgm2gfbi2
2011-10-07 11:17:37 +02:00

182 lines
6.5 KiB
YAML

-
In order to check dynamic folder functionality of document + FTP
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
ftp = te.get_plain_ftp(timeout=1.0)
cr.commit()
- |
I create two partners 'Partner1' and 'Partner2'.
I create three partner categories: 'none', 'pat1' and 'all'
I attach Partner1 to pat1, Partner1+Partner2 to 'all'
-
!record {model: res.partner.category, id: tpat_categ_none }:
name: 'No partners'
-
!record {model: res.partner.category, id: tpat_categ_pat1 }:
name: 'Pat 1'
-
!record {model: res.partner.category, id: tpat_categ_all }:
name: 'All Partner1+2'
-
!record {model: res.partner, id: tpartner1 }:
name: Partner 1
category_id:
- tpat_categ_pat1
- tpat_categ_all
-
!record {model: res.partner, id: tpartner_2 }:
name: 'Partner 2'
category_id:
- tpat_categ_all
-
I create a resource folder of partners, by the (none, pat1, all)
categories.
-
!record {model: document.directory, id: dir_tests2 }:
name: Partners Testing
parent_id: document.dir_root
type: ressource
ressource_type_id: base.model_res_partner_category
domain: [] # TODO
-
I commit (because FTP operations are on different transaction)
-
!python {model: document.directory, id: }: |
cr.commit()
-
I browse through ftp in the resource folder, checking that three
categories are there.
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing')
dirs = ftp.nlst()
for dir in [ 'All Partner1+2', 'No partners', 'Pat 1' ]:
assert dir in dirs, "Dir %s not in folder" % dir
cr.commit()
-
I create a 'partners' folder by the first resource one.
-
!record {model: document.directory, id: dir_respart1 }:
name: Partners of Test
parent_id: dir_tests2
type: ressource
ressource_type_id: base.model_res_partner
domain: "[('category_id','in',[active_id])]"
ressource_parent_type_id : base.model_res_partner_category
-
!python {model: document.directory, id: }: |
cr.commit()
-
I check through FTP that the correct partners are listed at each
'partners' folder.
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing')
correct = { 'All Partner1+2': [ 'Partner 1', 'Partner 2' ],
'No partners': [],
'Pat 1': ['Partner 1',] }
for dir in correct:
res = ftp.nlst(dir+'/Partners of Test')
assert res == correct[dir], "Dir %s falsely contains %s" %(dir, res)
cr.commit()
-
I create an ir.attachment, attached (not related) to Partner1
-
!record {model: ir.attachment, id: file_test1}:
name: File of pat1
res_model: res.partner
res_id: !eval ref("tpartner1")
-
I check that pat1/Partner1 folder has the file.
I check that all/Partner1 folder has the file
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing')
dirs = [ 'All Partner1+2', 'Pat 1' ]
for dir in dirs:
res = ftp.nlst(dir+'/Partners of Test/Partner 1')
assert 'File of pat1' in res, "Dir %s contains only %s" %(dir, res)
-
I place a file at the 'pat1'/Partner1 folder, through FTP
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
from cStringIO import StringIO
ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing/Pat 1/Partners of Test/Partner 1')
fdata = StringIO('abcd')
ftp.storbinary('STOR pat1-dynamic.txt', fdata)
-
I check at the server that the file is attached to Partner1
-
!assert {model: ir.attachment, id: , search: "[('name','=','pat1-dynamic.txt')]" }:
- parent_id.name == 'Documents'
- res_model == 'res.partner'
- res_id != False
-
I try to create a file directly under the Partners Testing folder
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
import ftplib
from cStringIO import StringIO
ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing')
fdata = StringIO('abcd')
try:
ftp.storbinary('STOR stray.txt', fdata)
assert False, "We should't be able to create files here"
except ftplib.error_perm:
# That's what should happen
pass
-
I try to create a folder directly under the Partners Testing folder
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
import ftplib
from cStringIO import StringIO
ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing')
try:
ftp.mkd('Weird folder')
assert False, "We should't be able to create folders here"
except ftplib.error_perm:
# That's what should happen
pass
-
I check that all/Partner1 also has the file
- |
Bonus Piste:
I create a 'Partner3' under 'all'
-
I delete "pat1-dynamic.txt" File.
-
!python {model: ir.attachment}: |
from document_ftp import test_easyftp as te
from cStringIO import StringIO
ftp = te.get_ftp_folder(cr, uid, self, 'Documents/Partners Testing/Pat 1/Partners of Test/Partner 1')
ftp.delete('pat1-dynamic.txt')
ftp.close()
-
I delete the Partners Testing folder, "File of pat1" file, Partner and Partner category.
-
!python {model: document.directory}: |
attach_pool = self.pool.get('ir.attachment')
partner_categ_pool = self.pool.get('res.partner.category')
partner_pool = self.pool.get('res.partner')
self.unlink(cr, uid, [ref('dir_tests2')])
self.unlink(cr, uid, [ref('dir_respart1')])
attach_pool.unlink(cr, uid, [ref('file_test1')])
partner_categ_pool.unlink(cr, uid, [ref('tpat_categ_none')])
partner_categ_pool.unlink(cr, uid, [ref('tpat_categ_pat1')])
partner_categ_pool.unlink(cr, uid, [ref('tpat_categ_all')])
partner_pool.unlink(cr, uid, [ref('tpartner1')])
partner_pool.unlink(cr, uid, [ref('tpartner_2')])
cr.commit()