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)
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 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))
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)
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])
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)
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)
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))