Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_0030_test_render_iteration(self):
"""
Test render iteration
"""
Iteration = POOL.get('project.iteration')
with Transaction().start(DB_NAME, USER, context=CONTEXT):
self.create_defaults()
app = self.get_app(DEBUG=True)
with Transaction().set_context(company=self.company.id):
work1, = self.Work.create([{
'name': 'ABC Project',
'company': self.company.id,
}])
project, = self.Project.create([{
'work': work1.id,
'type': 'project',
'state': 'opened',
'sequence': 1,
}])
self.assert_(project)
work2, = self.Work.create([{
'name': 'User Story',
'company': self.company.id,
}])
def setUp(self):
"""
Set up data used in the tests.
this method is called before each test function execution.
"""
trytond.tests.test_tryton.install_module('nereid_project')
self.Website = POOL.get('nereid.website')
self.NereidUser = POOL.get('nereid.user')
self.Currency = POOL.get('currency.currency')
self.Company = POOL.get('company.company')
self.Party = POOL.get('party.party')
self.Employee = POOL.get('company.employee')
self.Language = POOL.get('ir.lang')
self.Website = POOL.get('nereid.website')
self.Locale = POOL.get('nereid.website.locale')
self.Permission = POOL.get('nereid.permission')
def setUp(self):
"""
Set up data used in the tests.
this method is called before each test function execution.
"""
trytond.tests.test_tryton.install_module('nereid_project')
self.ActivityAllowedModel = POOL.get('nereid.activity.allowed_model')
self.Model = POOL.get('ir.model')
self.Project = POOL.get('project.work')
self.Company = POOL.get('company.company')
self.Employee = POOL.get('company.employee')
self.Currency = POOL.get('currency.currency')
self.Language = POOL.get('ir.lang')
self.Website = POOL.get('nereid.website')
self.NereidUser = POOL.get('nereid.user')
self.URLMap = POOL.get('nereid.url_map')
self.Party = POOL.get('party.party')
self.User = POOL.get('res.user')
self.Action = POOL.get('ir.action')
self.TimesheetLine = POOL.get('timesheet.line')
self.Tag = POOL.get('project.work.tag')
self.History = POOL.get('project.work.history')
self.ProjectInvitation = POOL.get('project.work.invitation')
self.Attachment = POOL.get('ir.attachment')
def test_collection_get_pagination(self):
"""
GET with a domain
"""
# Fetch result from tryton api first to compare with rest api
with Transaction().start(DB_NAME, 0, readonly=True):
IrModel = POOL.get('ir.model')
count = IrModel.search_count([])
with app.test_client() as c:
total_count = 0
for page in xrange(1, 100):
# Try to Iterate over a 100 pages
result = c.get(
'/%s/model/ir.model?page=%d' % (DB_NAME, page),
headers={'Authorization': get_auth_header()}
)
page_count = len(json.loads(result.data)['items'])
total_count += page_count
if not page_count:
break
# ensure that the total count matches
def test_0020_render_unicode(self):
'''
Render the report without PDF conversion but having unicode template
'''
UserReport = POOL.get('res.user', type='report')
IRReport = POOL.get('ir.action.report')
with Transaction().start(DB_NAME, USER, context=CONTEXT):
IRReport.create({
'name': 'HTML Report',
'model': 'res.user',
'report_name': 'res.user',
'report_content': buffer("<h1>Héllø, ${data['name']}!</h1>"),
'extension': 'html',
})
val = UserReport.execute([USER], {'name': u'Cédric'})
self.assertEqual(val[0], u'html')
self.assertEqual(
str(val[1]), '<h1>Héllø, Cédric!</h1>'
)
def test_0020_create_product_using_amazon_data(self):
"""
Tests if product is created using amazon data
"""
Product = POOL.get('product.product')
with Transaction().start(DB_NAME, USER, CONTEXT):
self.setup_defaults()
with Transaction().set_context(
{'current_channel': self.sale_channel.id}
):
self.assertEqual(Product.search([], count=True), 0)
product_data = load_json('products', 'product-1')
Product.create_using_amazon_data(product_data)
self.assertEqual(Product.search([], count=True), 1)
def test_0200_create_task_with_multiple_tags(self):
"""
Tests that task can be created with mulitple tags only if user is
1. Project Admin or
2. Admin member of the project
"""
ProjectMember = POOL.get('project.work.member')
# As non admin member
with Transaction().start(DB_NAME, USER, CONTEXT):
self.create_defaults_for_project()
app = self.get_app(DEBUG=True)
with app.test_client() as c:
# User Login
response = self.login(c, self.reg_user1.email, 'password')
self.assertEqual(
len(self.Project.search([('type', '=', 'task')])),
3
)
# Create Task
self.Subdivision = POOL.get('country.subdivision')
self.AccountTemplate = POOL.get('account.account.template')
self.Account = POOL.get('account.account')
self.CreateChartAccount = POOL.get(
'account.create_chart', type="wizard"
)
self.Location = POOL.get('stock.location')
self.User = POOL.get('res.user')
self.PaymentTerm = POOL.get('account.invoice.payment_term')
self.FiscalYear = POOL.get('account.fiscalyear')
self.PriceList = POOL.get('product.price_list')
self.Sequence = POOL.get('ir.sequence')
self.SequenceStrict = POOL.get('ir.sequence.strict')
self.AccountConfiguration = POOL.get('account.configuration')
self.Property = POOL.get('ir.property')
self.ModelField = POOL.get('ir.model.field')
self.SaleChannel = POOL.get('sale.channel')
with Transaction().set_context(company=None):
self.party, = self.Party.create([{
'name': 'ABC',
}])
self.usd, = self.Currency.create([{
'name': 'US Dollar',
'code': 'USD',
'symbol': '$',
}])
self.company, = self.Company.create([{
'party': self.party.id,
'currency': self.usd.id,
}])
def test_0030_render_pdf(self):
'''
Render the report in PDF
'''
UserReport = POOL.get('res.user', type='report')
IRReport = POOL.get('ir.action.report')
with Transaction().start(DB_NAME, USER, context=CONTEXT):
IRReport.create({
'name': 'HTML Report',
'model': 'res.user',
'report_name': 'res.user',
'report_content': buffer("<h1>Héllø, ${data['name']}!</h1>"),
'extension': 'pdf',
})
val = UserReport.execute([USER], {'name': u'Cédric'})
self.assertEqual(val[0], u'pdf')
with tempfile.TemporaryFile() as file:
file.write(str(val[1]))
pdf = PdfFileReader(file)
def get_account_by_kind(self, kind, company=None, silent=True):
"""Returns an account with given spec
:param kind: receivable/payable/expense/revenue
:param silent: dont raise error if account is not found
"""
Account = POOL.get('account.account')
Company = POOL.get('company.company')
if company is None:
company, = Company.search([], limit=1)
accounts = Account.search([
('kind', '=', kind),
('company', '=', company.id)
], limit=1)
if not accounts and not silent:
raise Exception("Account not found")
return accounts and accounts[0].id or None