Exemplo n.º 1
0
class TestSalesOrdersVisionFacade(TestCase):
    def setUp(self):
        self.sales_order_file_location = 'sales_orders.xlsx'
        ProgrammeFactory(name='ALIVE')

        work_book = Workbook()
        sheet = work_book.add_sheet('Sheet 1')

        self.header = ['Sales Document Type', 'Sales Document', 'Sold-to party', 'Shipping Point/Receiving Pt',
                       'Status', 'Created by', 'Item (SD)', 'Material', 'Order Quantity', 'Confirmed Quantity',
                       'Created on', 'Goods Issue Date', 'Delivery Date', 'Purchase order no.', 'Pricing date',
                       'Net price', 'Net Value', 'Schedule Line Number', 'Description', 'Programme']

        self.first_row = ['ZCOM', '20155548', 'Z43801', '1500', 'Open', 'RNAULA', '10', 'SL004594', '224,000',
                          '224,000', '2014/09/02', '9/23/2014', '9/23/2014', 'Tally sheets', '9/2/2014', '0.19',
                          '42,560.00', '2', 'Tally sheets printed on A4 Paper', 'ALIVE']

        self.second_row = ['ZCOM', '20155981', 'Z43801', '1500', 'Open', 'RNAULA', '10', 'SL006645', '224,000',
                           '224,000', '2014/09/02', '9/23/2014', '9/23/2014', 'Tally sheets', '9/2/2014', '0.19',
                           '42,560.00', '2', 'Round Neck T-Shirts', 'ALIVE']

        self.third_row = ['ZCOM', '20155981', 'Z43801', '1500', 'Open', 'RNAULA', '10', 'SL004594', '224,000',
                          '224,000', '2014/09/02', '9/23/2014', '9/23/2014', 'Tally sheets', '9/2/2014', '0.19',
                          '42,560.00', '2', 'Round Neck T-Shirts', 'ALIVE']

        for row_index, row in enumerate([self.header, self.first_row, self.second_row, self.third_row]):
            for col_index, item in enumerate(row):
                sheet.write(row_index, col_index, item)

        work_book.save(self.sales_order_file_location)

        self.facade = SalesOrderFacade(self.sales_order_file_location)

    def tearDown(self):
        os.remove(self.sales_order_file_location)
        Item.objects.all().delete()
        SalesOrder.objects.all().delete()
        SalesOrderItem.objects.all().delete()
        Programme.objects.all().delete()
        User.objects.all().delete()

    def test_should_load_sales_order_data(self):
        expected_data = [{'order_number': '20155548',
                          'programme_name': 'ALIVE',
                          'items': [{'material_code': 'SL004594', 'quantity': '224,000', 'date': '2014/09/02',
                                     'issue_date': '9/23/2014', 'programme_name': 'ALIVE',
                                     'delivery_date': '9/23/2014', 'net_price': '0.19', 'net_value': '42,560.00',
                                     'order_number': '20155548'}]},
                         {'order_number': '20155981',
                          'programme_name': 'ALIVE',
                          'items': [{'material_code': 'SL006645', 'quantity': '224,000', 'date': '2014/09/02',
                                     'issue_date': '9/23/2014',
                                     'delivery_date': '9/23/2014', 'net_price': '0.19', 'net_value': '42,560.00',
                                     'programme_name': 'ALIVE', 'order_number': '20155981'},
                                    {'material_code': 'SL004594', 'quantity': '224,000', 'date': '2014/09/02',
                                     'issue_date': '9/23/2014', 'programme_name': 'ALIVE',
                                     'delivery_date': '9/23/2014', 'net_price': '0.19', 'net_value': '42,560.00',
                                     'order_number': '20155981'}]}]

        sales_order_data = self.facade.load_order_data()

        self.assertEqual(sales_order_data, expected_data)

    def test_should_save_sales_order_data(self):
        self.assertEqual(SalesOrder.objects.count(), 0)
        self.assertEqual(SalesOrderItem.objects.count(), 0)

        ItemFactory(material_code='SL004594')
        ItemFactory(material_code='SL006645')

        sales_order_data = [{'order_number': '20155548',
                             'programme_name': 'ALIVE',
                             'items': [{'material_code': 'SL004594', 'quantity': '224,000', 'date': '2014-09-02',
                                        'issue_date': '9/23/2014',
                                        'delivery_date': '9/23/2014', 'net_price': '0.19', 'programme_name': 'ALIVE',
                                        'net_value': '42,560.00', 'order_number': '20155548'}]},
                            {'order_number': '20155981',
                             'programme_name': 'ALIVE',
                             'items': [{'material_code': 'SL006645', 'quantity': '224,000', 'date': '2014-09-02',
                                        'issue_date': '9/23/2014',
                                        'delivery_date': '9/23/2014', 'net_price': '0.19', 'programme_name': 'ALIVE',
                                        'net_value': '42,560.00', 'order_number': '20155981'},
                                       {'material_code': 'SL004594', 'quantity': '224,000', 'date': '2014-09-02',
                                        'issue_date': '9/23/2014',
                                        'delivery_date': '9/23/2014', 'net_price': '0.19', 'programme_name': 'ALIVE',
                                        'net_value': '42,560.00', 'order_number': '20155981'}]}]

        self.facade.save_order_data(sales_order_data)

        self.assertEqual(SalesOrder.objects.count(), 2)
        self.assertEqual(SalesOrderItem.objects.count(), 3)

    def test_should_load_sales_orders_from_excel_and_save(self):
        self.assertEqual(SalesOrder.objects.count(), 0)

        ItemFactory(material_code='SL004594')
        ItemFactory(material_code='SL006645')

        self.facade.import_orders()

        self.assertEqual(SalesOrder.objects.count(), 2)
        self.assertEqual(SalesOrderItem.objects.count(), 3)