Exemplo n.º 1
0
    def test_to_json(self):

        data = json.dumps({
            'title': u"",
            "body": u"",
            "foot": u""
        })

        date_1 = Generator.generate_datetime()
        date_2 = Generator.generate_datetime()

        mock = Mock([
            EventService.create_instance(
                type=EventService.model.MAIL,
                datetime=date_1,
                user_id=1,
                data=data
            ),
            EventService.create_instance(
                type=EventService.model.MAIL,
                datetime=date_2,
                user_id=1,
                data=data
            ),
            EventService.create_instance(
                type=EventService.model.MAIL,
                datetime=date_1,
                user_id=1,
                data=data
            ),
        ])

        res = EventService.to_json(mock)

        self.assertEqual(len(res.keys()), 2)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    def testWaybillFromOnePointToOtherPoint(self):
        with self.application.app_context():
            self.init_relation_models()

            self.date = Generator.generate_date()
            self.date_2 = Generator.generate_date()
            self.items = [{GOOD_ATTR: self.good_id, COUNT_ATTR: 10}, {GOOD_ATTR: self.good_4_id, COUNT_ATTR: 5}]
            self.items_2 = [{GOOD_ATTR: self.good_2_id, COUNT_ATTR: 7}]
            self.crush()

            response = self.waybill_suite.create_waybill(
                date=unicode(self.date),
                pointsale_id=self.point_2_id,
                type=RETAIL,
                receiver_id=self.receiver_id,
                invoice_id=None,
                pointsale_from_id=self.point_1_id,
                items=self.items,
                typeRec=POINTSALE,
            )

            self.assertEqual(response.status_code, 200)
            data = self._deserialize(response.data)

            self.assertEqual(WayBill.query.count(), 1)
            waybill = WayBill.query.first()

            self.assertEqual(waybill.pointsale_id, self.point_2_id)
            self.assertEqual(waybill.pointsale_from_id, self.point_1_id)
            self.assertEqual(waybill.type, RETAIL)
            self.assertEqual(waybill.date, self.date)
            self.assertEqual(waybill.items.count(), len(self.items))
            self.assertIsNone(waybill.receiver)

            response = self.waybill_suite.get_waybill(waybill.id)
            self.assertEqual(response.status_code, 200)

            response = self.waybill_suite.update_waybill(waybill.id, date=unicode(self.date_2), items=self.items_2)
            self.assertEqual(response.status_code, 200)

            waybill = WayBill.query.get(waybill.id)
            self.assertEqual(waybill.date, self.date_2)
            self.assertEqual(waybill.items.count(), len(self.items_2))
Exemplo n.º 4
0
    def testWayBillStatus(self):
        with self.application.app_context():
            self.init_relation_models()

            self.date = Generator.generate_date()

            response = self.waybill_suite.create_waybill(
                date=unicode(self.date),
                pointsale_id=self.point_2_id,
                type=RETAIL,
                invoice_id=None,
                pointsale_from_id=self.point_1_id,
                items=self.items,
                typeRec=POINTSALE,
            )
            self.assertEqual(response.status_code, 200)
            id = self._deserialize(response.data)["id"]
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 0)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 0)

            response = self.waybill_suite.update_status(id, IN_PROG)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 0)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 0)

            response = self.waybill_suite.update_status(id, IN_DELIVERY)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 0)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 0)

            response = self.waybill_suite.update_status(id, FINISH)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 2)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 2)

            pointsale_item_1 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_1_id, PointSaleItem.good_id == self.good_id
            ).one()
            pointsale_item_2 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_1_id, PointSaleItem.good_id == self.good_4_id
            ).one()

            self.assertEqual(pointsale_item_1.count, self.COUNT_GOOD_1 * -1)
            self.assertEqual(pointsale_item_2.count, self.COUNT_GOOD_4 * -1)

            pointsale_item_1 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_2_id, PointSaleItem.good_id == self.good_id
            ).one()
            pointsale_item_2 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_2_id, PointSaleItem.good_id == self.good_4_id
            ).one()

            self.assertEqual(pointsale_item_1.count, self.COUNT_GOOD_1)
            self.assertEqual(pointsale_item_2.count, self.COUNT_GOOD_4)
Exemplo n.º 5
0
    def testItemsAcceptanceFromMail(self):
        date = Generator.generate_date()

        with self.application.app_context():
            invoice_id, resp = self.success_stories_mail(date)
            acc_id = 1
            inv_items = self.invoice_items(invoice_id)
            items = self.acceptance_items(acc_id)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(items.count(), 0)

            resp = self.acceptance_suite.acceptance_status(acc_id, IN_PROG)
            self.assertEqual(resp.status_code, 200)
            items = self.acceptance_items(acc_id)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(items.count(), 41)
            inv_items.session.autocommit = True
            inv_itemss = list(inv_items)
            inv_items.session.rollback()
            itemss = list(items)
            items.session.rollback()

            for item, inv_item in zip(itemss, inv_itemss):
                self.assertEqual(item.count, inv_item.count)
                self.assertIsNone(item.fact_count)

            items_acc = []
            for item in itemss[:10]:
                items_acc.append(
                    {ITEM_ID_ATTR: item.id, GOOD_ATTR: item.good_id,
                     COUNT_ATTR: item.count})

            items_acc.append({ITEM_ID_ATTR: itemss[10].id,
                              GOOD_ATTR: itemss[10].good_id,
                              COUNT_ATTR: itemss[10].count})

            resp = self.acceptance_suite.update_items(acc_id, items=items_acc)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_items(acc_id).count(), 41)

            resp = self.acceptance_suite.acceptance_status(acc_id, VALIDATED)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.pointsale_items(self.pointsale_id).count(),
                             11)

            for item_acc in items_acc:
                item = self.acceptance_item(item_acc['id'])
                self.assertEqual(item.count, item_acc[COUNT_ATTR])
Exemplo n.º 6
0
    def testCrushFromMail(self):
        date = Generator.generate_date()
        with self.application.app_context():
            count = self.acceptance_count()
            invoice_id = self.invoice_()
            # Не выбран Тип
            resp = self.acceptance_suite.create(
                date=date, invoice_id=invoice_id,
                pointsale_id=self.pointsale_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)

            resp = self.acceptance_suite.create(
                date=date, provider_id=self.test_provider_id,
                pointsale_id=self.pointsale_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)

            # Несуществующий тип
            resp = self.acceptance_suite.create(
                date=date, type=3, invoice_id=invoice_id,
                pointsale_id=self.pointsale_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)
            # Тип "Из почты", а накладная не выбрана
            resp = self.acceptance_suite.create(
                date=date, type=MAIL, pointsale_id=self.pointsale_id,
                provider_id=self.test_provider_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)
            # Тип "Новая", а поставщик не выбран
            resp = self.acceptance_suite.create(
                date=date, type=NEW, pointsale_id=self.pointsale_id,
                invoice_id=invoice_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)

            invoice_id, resp = self.success_stories_mail(date)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), count + 1)
Exemplo n.º 7
0
    def testFromCustom(self):
        PRICE_R_G_1 = 12.0
        PRICE_G_G_1 = 10.0
        PRICE_R_G_3 = 15.0
        PRICE_G_G_3 = 12.0
        good_id = self.application_suite.good(
            u"ЛТД", '1', '2', PRICE_R_G_1, PRICE_G_G_1)
        good_id_2 = self.application_suite.good(
            u"ЛТД", '2', '3', PRICE_R_G_1, PRICE_G_G_1)
        good_id_3 = self.application_suite.good(
            u"Вечерние Челны", '1', '2', PRICE_R_G_3, PRICE_G_G_3)
        date = Generator.generate_date()
        with self.application.app_context():

            count_pp_good_1 = self.priceparish_to_good(good_id).count()
            count_pp_good_2 = self.priceparish_to_good(good_id_2).count()
            count_pp_good_3 = self.priceparish_to_good(good_id_3).count()

            resp = self.acceptance_suite.create(
                date=date, pointsale_id=self.pointsale_id, type=NEW,
                provider_id=self.test_provider_id)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 0)

            acc_id = 1
            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)

            self.assertEqual(items.count(), 0)
            self.assertEqual(p_items.count(), 0)

            resp = self.acceptance_suite.acceptance_status(acc_id, IN_PROG)
            inv_id = 1
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 0)
            self.assertEqual(p_items.count(), 0)
            self.assertEqual(i_items.count(), 0)

            resp = self.acceptance_suite.update_new_items(acc_id, items=[
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id}, COUNT_ATTR: 15,
                 PRICE_POST_ATTR: 8.0,
                 PRICE_RETAIL_ATTR: PRICE_R_G_1 + 1.0, PRICE_GROSS_ATTR:
                     PRICE_G_G_1},
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id_3}, COUNT_ATTR: 5,
                 PRICE_POST_ATTR: 9.5, PRICE_RETAIL_ATTR: PRICE_R_G_3,
                 PRICE_GROSS_ATTR: PRICE_G_G_3}
            ])
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)
            self.assertEqual(self.priceparish_to_good(good_id).count(),
                             count_pp_good_1)
            self.assertEqual(self.priceparish_to_good(good_id_3).count(),
                             count_pp_good_3)
            self.assertEqual(self.price_to_good(good_id).price_retail,
                             PRICE_R_G_1)
            self.assertEqual(self.price_to_good(good_id).price_gross,
                             PRICE_G_G_1)
            self.assertEqual(self.price_to_good(good_id_3).price_retail,
                             PRICE_R_G_3)
            self.assertEqual(self.price_to_good(good_id_3).price_gross,
                             PRICE_G_G_3)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 2)
            self.assertEqual(p_items.count(), 0)
            self.assertEqual(i_items.count(), 2)

            resp = self.acceptance_suite.update_new_items(acc_id, items=[
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id}, COUNT_ATTR: 15,
                 PRICE_POST_ATTR: 8.0, PRICE_RETAIL_ATTR: PRICE_R_G_1 + 1.0,
                 PRICE_GROSS_ATTR: PRICE_G_G_1},
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id_3}, COUNT_ATTR: 5,
                 PRICE_POST_ATTR: 9.5, PRICE_RETAIL_ATTR: PRICE_R_G_3,
                 PRICE_GROSS_ATTR: PRICE_G_G_3}
            ])

            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)
            self.assertEqual(self.priceparish_to_good(good_id).count(),
                             count_pp_good_1)
            self.assertEqual(self.priceparish_to_good(good_id_3).count(),
                             count_pp_good_3)
            self.assertEqual(self.price_to_good(good_id).price_retail,
                             PRICE_R_G_1)
            self.assertEqual(self.price_to_good(good_id).price_gross,
                             PRICE_G_G_1)
            self.assertEqual(self.price_to_good(good_id_3).price_retail,
                             PRICE_R_G_3)
            self.assertEqual(self.price_to_good(good_id_3).price_gross,
                             PRICE_G_G_3)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 2)
            self.assertEqual(p_items.count(), 0)
            self.assertEqual(i_items.count(), 2)

            resp = self.acceptance_suite.acceptance_status(acc_id, VALIDATED)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)
            self.assertEqual(self.priceparish_to_good(good_id).count(),
                             count_pp_good_1 + 1)
            self.assertEqual(self.priceparish_to_good(good_id_3).count(),
                             count_pp_good_3 + 1)
            self.assertEqual(self.price_to_good(good_id).price_retail,
                             PRICE_R_G_1 + 1.0)
            self.assertEqual(self.price_to_good(good_id).price_gross,
                             PRICE_G_G_1)
            self.assertEqual(self.price_to_good(good_id_3).price_retail,
                             PRICE_R_G_3)
            self.assertEqual(self.price_to_good(good_id_3).price_gross,
                             PRICE_G_G_3)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 2)
            self.assertEqual(p_items.count(), 2)
            self.assertEqual(i_items.count(), 2)
Exemplo n.º 8
0
    def base_canon_item(self, url, resource):
        COUNT = 5
        attrs = resource.attr_json
        model = resource.model

        attr_relation = resource._get_attr_relation()

        ids = []

        for i in xrange(COUNT):
            data_json = Generator.generate_data(attrs)
            del data_json['id']

            response = self.base_canon_suite.put(url, data_json)
            self.assertEqual(response.status_code, 200)
            data = self._deserialize(response.data)
            ids.append(data['id'])

            instance = model.query.get(data['id'])

            for attr_n, att in attr_relation:
                attribute = att.attribute
                chain_models, _, at = attribute.rpartition(".")
                for chain_model in chain_models.split("."):
                    nest = getattr(instance, chain_model)
                    self.assertIsNone(nest)
                    break

            response = self.base_canon_suite.get(url, data['id'])
            self.assertEqual(response.status_code, 200)

            data = self._deserialize(response.data)

            for key, value in data_json.iteritems():
                self.assertEqual(data[key], value)

        self.assertEqual(model.query.count(), COUNT)
        response = self.base_canon_suite.get(url)

        self.assertEqual(response.status_code, 200)
        data = self._deserialize(response.data)
        self.assertEqual(data['count'], COUNT)

        for id in ids:
            data_json_update = Generator.generate_data(attrs)
            del data_json_update['id']

            response = self.base_canon_suite.post(url, id, data_json_update)
            self.assertEqual(response.status_code, 200)

            response = self.base_canon_suite.get(url, id)
            self.assertEqual(response.status_code, 200)
            data = self._deserialize(response.data)

            for key, value in data_json_update.iteritems():
                self.assertEqual(data[key], value)

        for id in ids:
            response = self.base_canon_suite.delete(url, id)
            self.assertEqual(response.status_code, 200)
            self.assertIsNone(model.query.get(id))