示例#1
0
    def test_sale_done(self):
        workflow = self.create_full_automatic()
        self.sale = self.create_sale_order(workflow)
        self.sale.action_confirm()
        # don't care about transfers in this test
        self.sale.picking_ids.state = "done"
        self.sale._create_invoices()

        # disable invoice validation for we don't care
        # in this test
        self.sale.workflow_process_id.validate_invoice = False
        # activate the 'sale done' workflow
        self.sale.workflow_process_id.sale_done = True

        with mock_with_delay() as (delayable_cls, delayable):
            self.run_job()  # run automatic workflow cron
            args = (
                self.sale,
                [
                    ("state", "=", "sale"),
                    ("invoice_status", "=", "invoiced"),
                    ("workflow_process_id", "=",
                     self.sale.workflow_process_id.id),
                ],
            )
            self.assert_job_delayed(delayable_cls, delayable, "_do_sale_done",
                                    args)
 def test_create_invoice(self):
     self.sale.action_confirm()
     # don't care about transfers in this test
     self.sale.picking_ids.state = "done"
     with mock_with_delay() as (delayable_cls, delayable):
         self.progress()  # run automatic workflow cron
         self.assert_job_delayed(delayable_cls, delayable,
                                 "_do_create_invoice", (self.sale, ))
 def test_validate_picking(self):
     self.sale.action_confirm()
     picking = self.sale.picking_ids
     # disable invoice creation in this test
     self.sale.workflow_process_id.create_invoice = False
     with mock_with_delay() as (delayable_cls, delayable):
         self.progress()  # run automatic workflow cron
         self.assert_job_delayed(delayable_cls, delayable,
                                 "_do_validate_picking", (picking, ))
 def test_move_done_service_no_job(self):
     """Service products do not enqueue job"""
     self.product.type = "service"
     move = self._create_move(self.product, self.in_type, qty=1)
     move._action_assign()
     move.move_line_ids.qty_done = 1
     move.move_line_ids.location_dest_id = self.shelf1_loc.id
     with mock_with_delay() as (delayable_cls, delayable):
         move._action_done()
         # .with_delay() has not been called
         self.assertEqual(delayable_cls.call_count, 0)
 def test_move_done_customer_no_job(self):
     """A move with other destination than internal does not enqueue job"""
     move = self._create_move(self.product, self.out_type, qty=1)
     self._update_qty_in_location(self.shelf1_loc, self.product, 1)
     move._action_assign()
     move.move_line_ids.qty_done = 1
     move.move_line_ids.location_dest_id = self.customer_loc
     with mock_with_delay() as (delayable_cls, delayable):
         move._action_done()
         # .with_delay() has not been called
         self.assertEqual(delayable_cls.call_count, 0)
示例#6
0
 def test_validate_sale_order(self):
     workflow = self.create_full_automatic()
     self.sale = self.create_sale_order(workflow)
     with mock_with_delay() as (delayable_cls, delayable):
         self.run_job()  # run automatic workflow cron
         args = (
             self.sale,
             [
                 ("state", "=", "draft"),
                 ("workflow_process_id", "=",
                  self.sale.workflow_process_id.id),
             ],
         )
         self.assert_job_delayed(delayable_cls, delayable,
                                 "_do_validate_sale_order", args)
    def test_delay_job(self):
        with mock_with_delay() as (delayable_cls, delayable):
            self.schedule.action_export()

            # check 'with_delay()' part:
            self.assertEqual(delayable_cls.call_count, 1)
            # arguments passed in 'with_delay()'
            delay_args, __ = delayable_cls.call_args
            self.assertEqual((self.env["delay.export"], ), delay_args)

            # check what's passed to the job method 'export'
            self.assertEqual(delayable.export.call_count, 1)
            delay_args, delay_kwargs = delayable.export.call_args
            expected_params = ({
                "context": {
                    "lang": "en_US"
                },
                "domain": [("is_company", "=", True)],
                "fields": [
                    {
                        "label": "display_name",
                        "name": "display_name"
                    },
                    {
                        "label": "email",
                        "name": "email"
                    },
                    {
                        "label": "phone",
                        "name": "phone"
                    },
                    {
                        "label": "title/shortcut",
                        "name": "title/shortcut"
                    },
                ],
                "format":
                "csv",
                "ids":
                False,
                "import_compat":
                True,
                "model":
                "res.partner",
                "user_ids": [2],
            }, )

            self.assertEqual(delay_args, expected_params)
    def test_sale_done(self):
        self.sale.action_confirm()
        # don't care about transfers in this test
        self.sale.picking_ids.state = "done"
        self.sale.action_invoice_create()

        # disable invoice validation for we don't care
        # in this test
        self.sale.workflow_process_id.validate_invoice = False
        # activate the 'sale done' workflow
        self.sale.workflow_process_id.sale_done = True

        with mock_with_delay() as (delayable_cls, delayable):
            self.progress()  # run automatic workflow cron
            self.assert_job_delayed(delayable_cls, delayable, "_do_sale_done",
                                    (self.sale, ))
 def test_move_done_chained_no_job(self):
     """A move chained to another does not enqueue job"""
     move_out = self._create_move(self.product,
                                  self.out_type,
                                  qty=1,
                                  state="waiting")
     move = self._create_move(self.product,
                              self.in_type,
                              qty=1,
                              move_dest=move_out)
     move._action_assign()
     move.move_line_ids.qty_done = 1
     move.move_line_ids.location_dest_id = self.shelf1_loc.id
     with mock_with_delay() as (delayable_cls, delayable):
         move._action_done()
         # .with_delay() has not been called
         self.assertEqual(delayable_cls.call_count, 0)
示例#10
0
 def test_validate_picking(self):
     workflow = self.create_full_automatic()
     self.sale = self.create_sale_order(workflow)
     self.sale.action_confirm()
     picking = self.sale.picking_ids
     # disable invoice creation in this test
     self.sale.workflow_process_id.create_invoice = False
     with mock_with_delay() as (delayable_cls, delayable):
         self.run_job()  # run automatic workflow cron
         args = (
             picking,
             [
                 ("state", "in", ["draft", "confirmed", "assigned"]),
                 ("workflow_process_id", "=",
                  self.sale.workflow_process_id.id),
             ],
         )
         self.assert_job_delayed(delayable_cls, delayable,
                                 "_do_validate_picking", args)
示例#11
0
 def test_create_invoice(self):
     workflow = self.create_full_automatic()
     self.sale = self.create_sale_order(workflow)
     self.sale.action_confirm()
     # don't care about transfers in this test
     self.sale.picking_ids.state = "done"
     with mock_with_delay() as (delayable_cls, delayable):
         self.run_job()  # run automatic workflow cron
         args = (
             self.sale,
             [
                 ("state", "in", ["sale", "done"]),
                 ("invoice_status", "=", "to invoice"),
                 ("workflow_process_id", "=",
                  self.sale.workflow_process_id.id),
             ],
         )
         self.assert_job_delayed(delayable_cls, delayable,
                                 "_do_create_invoice", args)
示例#12
0
 def test_validate_invoice(self):
     workflow = self.create_full_automatic()
     self.sale = self.create_sale_order(workflow)
     self.sale.action_confirm()
     # don't care about transfers in this test
     self.sale.picking_ids.state = "done"
     self.sale._create_invoices()
     invoice = self.sale.invoice_ids
     with mock_with_delay() as (delayable_cls, delayable):
         self.run_job()  # run automatic workflow cron
         args = (
             invoice,
             [
                 ("state", "=", "draft"),
                 ("posted_before", "=", False),
                 ("workflow_process_id", "=",
                  self.sale.workflow_process_id.id),
             ],
         )
         self.assert_job_delayed(delayable_cls, delayable,
                                 "_do_validate_invoice", args)
示例#13
0
    def test_calc_adu_delay_job(self):
        context = dict(self.env.context, auto_delay_ddmrp_calc_adu=True)
        del context["test_queue_job_no_delay"]
        buffer_a = self.buffer_a.with_context(context)

        with mock_with_delay() as (delayable_cls, delayable):
            buffer_a._calc_adu()

            # check 'with_delay()' part:
            self.assertEqual(delayable_cls.call_count, 1)
            # arguments passed in 'with_delay()'
            delay_args, delay_kwargs = delayable_cls.call_args
            self.assertEqual(delay_args, (self.buffer_a, ))
            self.assertEqual(delay_kwargs.get("priority"), 15)
            self.assertEqual(delay_kwargs.get("identity_key"), identity_exact)

            # check what's passed to the job method '_calc_adu'
            self.assertEqual(delayable._calc_adu.call_count, 1)
            delay_args, delay_kwargs = delayable._calc_adu.call_args
            self.assertEqual(delay_args, ())
            self.assertDictEqual(delay_kwargs, {})
 def test_move_done_enqueue_job(self):
     """A move done enqueue a new job to assign other moves"""
     move = self._create_move(self.product, self.in_type, qty=100)
     move._action_assign()
     move.move_line_ids.qty_done = 50
     move.move_line_ids.location_dest_id = self.shelf1_loc.id
     move.move_line_ids.copy(default={
         "qty_done": 50,
         "location_dest_id": self.shelf2_loc.id
     })
     with mock_with_delay() as (delayable_cls, delayable):
         move._action_done()
         # .with_delay() has been called once
         self.assertEqual(delayable_cls.call_count, 1)
         delay_args, delay_kwargs = delayable_cls.call_args
         # .with_delay() is called on self.product
         self.assertEqual(delay_args, (self.product, ))
         # .with_delay() with the following options
         self.assertEqual(delay_kwargs.get("identity_key"), identity_exact)
         # check what's passed to the job method 'moves_auto_assign'
         self.assertEqual(delayable.moves_auto_assign.call_count, 1)
         delay_args, delay_kwargs = delayable.moves_auto_assign.call_args
         self.assertEqual(delay_args, (self.shelf1_loc | self.shelf2_loc, ))
         self.assertDictEqual(delay_kwargs, {})
 def test_validate_sale_order(self):
     with mock_with_delay() as (delayable_cls, delayable):
         self.progress()  # run automatic workflow cron
         self.assert_job_delayed(delayable_cls, delayable,
                                 "_do_validate_sale_order", (self.sale, ))