We should begin by preparing the data to be used in the tests.
It is convenient to perform the test actions under a specific user, in order to also test that access control is properly configured. This is achieved using the sudo()
model method. Recordsets carry that information with them, so after being created while using sudo()
, later operations in the same recordset will be performed using that same context.
This is the code for the setUp
method, and a few additional import statements that are also needed:
from datetime import date from odoo.tests.common import TransactionCase from odoo import fields class TestWizard(TransactionCase): def setUp(self, *args, **kwargs): super(TestWizard, self).setUp(*args, **kwargs) # Close any open Todo tasks self.env['todo.task']\ .search([('is_done', '=', False)])\ .write({'is_done': True}) # Demo user will be used to run tests demo_user = self.env.ref('base.user_demo') # Create two Todo tasks to use in tests t0 = date.today() Todo = self.env['todo.task'].sudo(demo_user) self.todo1 = Todo.create({ 'name': 'Todo1', 'date_deadline': fields.Date.to_string(t0)}) self.todo2 = Todo.create({ 'name': 'Todo2'}) # Create Wizard instance to use in tests Wizard = self.env['todo.wizard'].sudo(demo_user) self.wizard = Wizard.create({})
To test our wizard, we want to have exactly two open Todos. So we start by closing any existing Todos, so that they don't get in the way of our tests, and create two new Todos for tests, using the Demo user. We finally create a new instance of our wizard, using the Demo user, and assign it to self.wizard
, so that is available to the test methods.