Exemple #1
0
class WayBillTest(BaseTestCase):
    def set_up(self):
        self.receiver_suite = ReceiverSuite(self.client, self.application)
        self.pointsale_suite = PointSaleSuite(self.client, self.application)
        self.waybill_suite = WayBillTestSuite(self.client, self.application)

    def init_relation_models(self):
        self.receiver = self.receiver_suite.create_test_receiver()
        self.receiver_id = self.receiver.id
        self.point_1 = self.pointsale_suite.create_test_pointsale(name=u"ШШК", address=u"наб. Челны", is_central=True)
        self.point_1_id = self.point_1.id
        self.point_2 = self.pointsale_suite.create_test_pointsale(
            name=u"Одиссей", address=u"Наб. Челны, ул. Беляева, 75"
        )
        self.point_2_id = self.point_2.id
        self.point_3 = self.pointsale_suite.create_test_pointsale(
            name=u"Форт Диалог", address=u"Наб. Челны, Московский пр., 15"
        )
        self.point_3_id = self.point_3.id

        self.application_suite = ApplicationSuite(self.client, self.application)
        self.good_id = self.application_suite.good(u"XXL", "77", "114", 105.0, 86.0)
        self.good_2_id = self.application_suite.good(u"Машинка", None, None, 24.0, 21.0)
        self.good_3_id = self.application_suite.good(u"ЗОЖ", "4", "105", None, 9.5)
        self.good_4_id = self.application_suite.good(u"Мельница", None, None, 15.0, None)

        self.COUNT_GOOD_1 = 10
        self.COUNT_GOOD_4 = 5
        self.COUNT_GOOD_2 = 7

        self.items = [
            {GOOD_ATTR: self.good_id, COUNT_ATTR: self.COUNT_GOOD_1},
            {GOOD_ATTR: self.good_4_id, COUNT_ATTR: self.COUNT_GOOD_4},
        ]

        self.items_2 = [{GOOD_ATTR: self.good_2_id, COUNT_ATTR: self.COUNT_GOOD_2}]
class InventoryTest(BaseTestCase):

    def set_up(self):
        self.pointsale_suite = PointSaleSuite(self.client, self.application)
        self.inventory_suite = InventorySuite(self.client, self.application)
        self.application_suite = ApplicationSuite(self.client, self.application)

        with self.application.app_context():
            self.number_1 = Generator.generate_int()
            self.number_2 = Generator.generate_int()
            self.pointsale_id = self.pointsale_suite.create_test_pointsale("", "").id
            self.good_id_1 = self.application_suite.good(u"ЛТД", '1', '101', 8, 5.5)
            self.good_id_2 = self.application_suite.good(u"Вечерние Челны", '4', '402', 12.0, 9.7)
            self.good_id_3 = self.application_suite.good(u"WinX", '25', '107', 147.0, 123.0)
            self.good_id_4 = self.application_suite.good(u"Трансформеры", '4', '7', 120.0, 97.0)

    def get_pointsaleitem(self, pointsale_id, good_id):
        return PointSaleItem.query.filter(
            PointSaleItem.pointsale_id == pointsale_id,
            PointSaleItem.good_id == good_id).one()

    def get_inventoryitem(self, inventory_id, good_id):
        return InventoryItems.query.filter(
            InventoryItems.inventory_id == inventory_id,
            InventoryItems.good_id == good_id).one()

    def test_(self):
        #Кол-ва товара в накладную
        count_after_1 = 100
        count_after_2 = 67
        with self.application.app_context():
            response = self.inventory_suite.create_inventory(self.pointsale_id, self.number_1)

            self.assertEqual(response.status_code, 200)
            data = self._deserialize(response.data)
            inventory_id_1 = data['id']

            self.assertEqual(InventoryItems.query.filter(
                InventoryItems.inventory_id == inventory_id_1
            ).count(), 0)

            response = self.inventory_suite.inventory_status(inventory_id_1, IN_PROG)
            self.assertEqual(response.status_code, 200)

            self.assertEqual(InventoryItems.query.filter(
                InventoryItems.inventory_id == inventory_id_1
            ).count(), 0)

            items = [
                {COUNT_AFTER_ATTR: count_after_1, GOOD_ATTR: {GOOD_ID_ATTR: self.good_id_1}},
                {COUNT_AFTER_ATTR: count_after_2, GOOD_ATTR: {GOOD_ID_ATTR: self.good_id_2}}
            ]

            response = self.inventory_suite.update_inventory(inventory_id_1, items=items)
            self.assertEqual(response.status_code, 200)

            self.assertEqual(InventoryItems.query.filter(
                InventoryItems.inventory_id == inventory_id_1
            ).count(), 2)
            self.assertEqual(PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.pointsale_id
            ).count(), 0)

            response = self.inventory_suite.inventory_status(inventory_id_1, VALIDATED)
            self.assertEqual(response.status_code, 200)

            self.assertEqual(InventoryItems.query.filter(
                InventoryItems.inventory_id == inventory_id_1
            ).count(), 2)
            self.assertEqual(PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.pointsale_id
            ).count(), 2)
            pointsaleitem_1 = self.get_pointsaleitem(self.pointsale_id, self.good_id_1)
            pointsaleitem_2 = self.get_pointsaleitem(self.pointsale_id, self.good_id_2)
            self.assertEqual(pointsaleitem_1.count, count_after_1)
            self.assertEqual(pointsaleitem_2.count, count_after_2)


            response = self.inventory_suite.create_inventory(self.pointsale_id, self.number_2)
            self.assertEqual(response.status_code, 200)
            data = self._deserialize(response.data)
            inventory_id_2 = data['id']

            self.assertEqual(InventoryItems.query.filter(
                InventoryItems.inventory_id == inventory_id_2
            ).count(), 2)

            inventory_item_1 = self.get_inventoryitem(inventory_id_2, self.good_id_1)
            inventory_item_2 = self.get_inventoryitem(inventory_id_2, self.good_id_2)

            self.assertEqual(inventory_item_1.count_before, count_after_1)
            self.assertEqual(inventory_item_2.count_before, count_after_2)

            self.assertEqual(inventory_item_1.count_after, count_after_1)
            self.assertEqual(inventory_item_2.count_after, count_after_2)
class AcceptanceTest(BaseTestCase):
    def set_up(self):
        self.FILE_NAME = "20141020_2IAEW4.xlsx"

        self.acceptance_suite = AcceptanceSuite(self.client, self.application)

        self.pointsale_suite = PointSaleSuite(self.client, self.application)

        self.application_suite = ApplicationSuite(
            self.client, self.application)

        self.provider_suite = ProviderTestSuite(self.client, self.application)
        self.test_provider_id, _, _, _ = (
            self.provider_suite.create_test_provider())

        self.invoice_suite = MailInvoiceTestSuite(
            self.client, self.application)
        with self.application.app_context():
            pointsale = self.pointsale_suite.create_test_pointsale(
                name=u"ШШК", address=u"Наб. Челны")
            self.pointsale_id = pointsale.id

    def invoice_(self):
        """
        Принимаем накладную из файла FILE_NAME
        """
        self.invoice_suite.handle_invoice(
            datetime=datetime.now(), file_name=self.FILE_NAME, mail_id=1)
        return Invoice.query.first().id

    def price_to_good(self, good_id):
        return Good.query.filter(
            Good.id == good_id
        ).one().price

    def priceparish_to_good(self, good_id):
        good = Good.query.get(good_id)
        return PriceParish.query.filter(
            PriceParish.commodity_id == good.commodity_id,
            PriceParish.number_local_from == good.number_local,
            PriceParish.number_global_from == good.number_global
        )

    def invoice_count(self):
        return Invoice.query.count()

    def acceptance_count(self):
        return Acceptance.query.count()

    def acceptance_items(self, id):
        return AcceptanceItems.query.filter(
            AcceptanceItems.acceptance_id == id
        )

    def acceptance_item(self, id):
        return AcceptanceItems.query.filter(
            AcceptanceItems.id == id
        ).one()

    def pointsale_items(self, id):
        return PointSaleItem.query.filter(
            PointSaleItem.pointsale_id == id
        )

    def invoice_items(self, id):
        return InvoiceItem.query.filter(
            InvoiceItem.invoice_id == id
        )

    def success_stories_mail(self, date):
        invoice_id = self.invoice_()
        return invoice_id, self.acceptance_suite.create(
            date=date, type=MAIL, invoice_id=invoice_id,
            pointsale_id=self.pointsale_id)