OCA/l10n-italy

View on GitHub
l10n_it_ddt_delivery/tests/test_ddt_delivery.py

Summary

Maintainability
A
1 hr
Test Coverage
# -*- coding: utf-8 -*-
# Copyright 2016 Alex Comba - Agile Business Group
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from openerp.tests.common import TransactionCase
from openerp import exceptions


class TestDdtDelivery(TransactionCase):

    def _picking_factory(self, partner, carrier):
        return self.env['stock.picking'].create({
            'picking_type_id': self.env.ref('stock.picking_type_out').id,
            'partner_id': partner.id,
            'carrier_id': carrier.id,
        })

    def _move_factory(self, product, qty=5.0):
        return self.env['stock.move'].create({
            'name': '/',
            'product_id': product.id,
            'product_uom_qty': qty,
            'product_uom': product.uom_id.id,
            'location_id': self.env.ref('stock.stock_location_suppliers').id,
            'location_dest_id': self.env.ref('stock.stock_location_stock').id,
        })

    def setUp(self):
        super(TestDdtDelivery, self).setUp()
        self.product1 = self.env.ref('product.product_product_33')
        self.product2 = self.env.ref('product.product_product_36')
        self.partner1 = self.env.ref('base.res_partner_1')
        self.partner2 = self.env.ref('base.res_partner_2')
        self.carrier1 = self.env.ref('delivery.normal_delivery_carrier')
        self.carrier2 = self.env.ref('delivery.free_delivery_carrier')

    def test_ddt_from_so(self):
        self.so = self.env['sale.order'].create({
            'partner_id': self.partner1.id,
            'carrier_id': self.carrier1.id,
            'create_ddt': True,
        })
        self.sol = self.env['sale.order.line'].create({
            'name': '/',
            'order_id': self.so.id,
            'product_id': self.product1.id,
        })
        self.so.action_button_confirm()
        self.assertEqual(1, len(self.so.ddt_ids))
        self.assertEqual(
            self.so.ddt_ids.carrier_id, self.so.carrier_id.partner_id)

    def test_ddt_from_picking(self):
        pick = self._picking_factory(
            partner=self.partner1, carrier=self.carrier1)
        pick.move_lines = self._move_factory(product=self.product1)
        wizard = self.env['ddt.from.pickings'].with_context({
            'active_ids': [pick.id]
            }).create({})
        res = wizard.create_ddt()
        ddt = self.env['stock.picking.package.preparation'].browse(
            res['res_id'])
        self.assertEqual(
            ddt.carrier_id, pick.carrier_id.partner_id)

    def test_ddt_from_pickings_with_several_carriers(self):
        pick1 = self._picking_factory(
            partner=self.partner1, carrier=self.carrier1)
        pick1.move_lines = self._move_factory(product=self.product1)
        pick2 = self._picking_factory(
            partner=self.partner1, carrier=self.carrier2)
        pick2.move_lines = self._move_factory(product=self.product2)
        wizard = self.env['ddt.from.pickings'].with_context({
            'active_ids': [pick1.id, pick2.id]
            }).create({})
        with self.assertRaises(exceptions.Warning) as exc:
            wizard.create_ddt()
        self.assertEqual(
            exc.exception.message,
            'Selected Pickings have different carriers'
        )