channel-app 0.0.146__py3-none-any.whl → 0.0.148__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -162,16 +162,19 @@ class GetOrCreateAddress(OmnitronCommandInterface):
162
162
  district_pk = district.pk
163
163
  return country_pk, city_pk, township_pk, district_pk
164
164
 
165
- def get_mapping_object(self, code, endpoint):
165
+ def get_mapping_object(self, code, endpoint, extra_filters=None):
166
166
  """
167
167
  :param code: Identifier code for the City and Country on the Sales Channel. This is
168
168
  prefix with channel_id as integration_code
169
169
  :param endpoint: omnitron sdk endpoint
170
+ :param extra_filters: extra filters for the endpoint, dict or None
170
171
  :return: mapped objects E.g (City, Country)
171
172
  """
172
173
  integration_code = f"{self.integration.channel_id}_{code}"
173
174
  params = {"mapping__code__exact": integration_code,
174
175
  "mapping__integration_type": INTEGRATION_TYPE}
176
+ if extra_filters:
177
+ params.update(extra_filters)
175
178
  objects = endpoint.list(params=params)
176
179
  if len(objects) != 1:
177
180
  raise IntegrationMappingException(params={"code": integration_code})
@@ -235,7 +238,8 @@ class GetOrCreateAddress(OmnitronCommandInterface):
235
238
  if len(townships) == 1:
236
239
  return townships[0]
237
240
  try:
238
- townships = self.get_mapping_object(township_name, endpoint)
241
+ extra_filters = {"city": city.pk, "is_active": True}
242
+ townships = self.get_mapping_object(township_name, endpoint, extra_filters)
239
243
  except IntegrationMappingException as exc:
240
244
  raise TownshipException(
241
245
  params={"type": ErrorType.township.value,
@@ -264,7 +268,8 @@ class GetOrCreateAddress(OmnitronCommandInterface):
264
268
  if len(districts) == 1:
265
269
  return districts[0]
266
270
  try:
267
- districts = self.get_mapping_object(district_name, endpoint)
271
+ extra_filters = {"city": city.pk, "township": township.pk, "is_active": True}
272
+ districts = self.get_mapping_object(district_name, endpoint, extra_filters)
268
273
  except IntegrationMappingException as exc:
269
274
  raise DistrictException(
270
275
  params={"type": ErrorType.district.value,
@@ -2,15 +2,16 @@ from dataclasses import asdict
2
2
  from unittest.mock import MagicMock, patch
3
3
  from omnisdk.base_client import BaseClient
4
4
  from omnisdk.omnitron.endpoints import (
5
- ChannelOrderEndpoint,
6
5
  ChannelCargoEndpoint,
7
6
  ChannelCustomerEndpoint,
7
+ ChannelOrderEndpoint,
8
+ ChannelOrderItemEndpoint,
8
9
  )
9
10
  from channel_app.core.data import CustomerDto, OrderBatchRequestResponseDto
10
11
  from channel_app.core.tests import BaseTestCaseMixin
11
12
  from channel_app.omnitron.commands.orders.cargo_companies import GetCargoCompany
12
13
  from channel_app.omnitron.commands.orders.customers import GetOrCreateCustomer
13
- from channel_app.omnitron.commands.orders.orders import ProcessOrderBatchRequests
14
+ from channel_app.omnitron.commands.orders.orders import GetOrderItems, GetOrderItemsWithOrder, ProcessOrderBatchRequests
14
15
  from channel_app.omnitron.constants import BatchRequestStatus, CustomerIdentifierField
15
16
 
16
17
 
@@ -389,4 +390,95 @@ class TestGetCargoCompany(BaseTestCaseMixin):
389
390
  cargo_company.erp_code,
390
391
  self.channel_cargo_endpoint_response_data['erp_code']
391
392
  )
392
-
393
+
394
+
395
+ class TestGetOrderItems(BaseTestCaseMixin):
396
+ """
397
+ Test case for GetOrderItems
398
+ run: python -m unittest channel_app.omnitron.commands.tests.test_orders.TestGetOrderItems
399
+ """
400
+ def setUp(self) -> None:
401
+ self.instance = GetOrderItems(
402
+ integration=self.mock_integration,
403
+ )
404
+ self.order = MagicMock(
405
+ pk=1,
406
+ )
407
+ self.order_items = [
408
+ MagicMock(
409
+ pk=7,
410
+ order=1,
411
+ content_type='orderitem'
412
+ ),
413
+ MagicMock(
414
+ pk=8,
415
+ order=1,
416
+ content_type='orderitem'
417
+ )
418
+ ]
419
+ self.instance.objects = self.order
420
+
421
+ @patch.object(GetOrderItems, 'get_order_items')
422
+ def test_get_data(self, mock_get_order_items):
423
+ mock_get_order_items.return_value = self.order_items
424
+ order_items = self.instance.get_data()
425
+
426
+ self.assertEqual(len(order_items), 2)
427
+
428
+ for order_item in order_items:
429
+ self.assertEqual(order_item.order, self.order.pk)
430
+ self.assertEqual(order_item.content_type, 'orderitem')
431
+
432
+ def test_get_order_items(self):
433
+ response = MagicMock()
434
+ response.list.return_value = self.order_items
435
+
436
+ with patch.object(
437
+ ChannelOrderItemEndpoint,
438
+ '__new__',
439
+ return_value=response
440
+ ):
441
+ order_items = self.instance.get_order_items(self.order)
442
+ self.assertEqual(len(order_items), 2)
443
+
444
+ for order_item in order_items:
445
+ self.assertEqual(order_item.order, self.order.pk)
446
+ self.assertEqual(order_item.content_type, 'orderitem')
447
+
448
+
449
+ class TestGetOrderItemsWithOrder(BaseTestCaseMixin):
450
+ """
451
+ Test case for GetOrderItems
452
+ run: python -m unittest channel_app.omnitron.commands.tests.test_orders.TestGetOrderItemsWithOrder
453
+ """
454
+ def setUp(self) -> None:
455
+ self.instance = GetOrderItemsWithOrder(
456
+ integration=self.mock_integration,
457
+ )
458
+ self.orders = [
459
+ MagicMock(
460
+ pk=1,
461
+ orderitem_set=[],
462
+ ),
463
+ ]
464
+ self.order_items = [
465
+ MagicMock(
466
+ pk=7,
467
+ order=1,
468
+ content_type='orderitem'
469
+ ),
470
+ MagicMock(
471
+ pk=8,
472
+ order=1,
473
+ content_type='orderitem'
474
+ ),
475
+ ]
476
+ self.instance.objects = self.orders
477
+
478
+ @patch.object(GetOrderItemsWithOrder, 'get_order_items')
479
+ def test_get_data(self, mock_get_order_items):
480
+ mock_get_order_items.return_value = self.order_items
481
+ orders = self.instance.get_data()
482
+
483
+ self.assertEqual(len(orders), 1)
484
+ self.assertEqual(len(orders[0].orderitem_set), 2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: channel_app
3
- Version: 0.0.146
3
+ Version: 0.0.148
4
4
  Summary: Channel app for Sales Channels
5
5
  Home-page: https://github.com/akinon/channel_app
6
6
  Author: akinonteam
@@ -48,17 +48,17 @@ channel_app/omnitron/commands/product_stocks.py,sha256=va2LbTtFMLe99kJr5aFceYLi2
48
48
  channel_app/omnitron/commands/products.py,sha256=As8Hnw3h6dOfPdxPBPUs-Hdip_9IaQXQyLAMsAylMTs,32098
49
49
  channel_app/omnitron/commands/setup.py,sha256=dcbvvIFDKKeDVziwR2qWJhVd92IlVLEoYIbMrxKjWDE,35220
50
50
  channel_app/omnitron/commands/orders/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
- channel_app/omnitron/commands/orders/addresses.py,sha256=b_2mqb0-6KUf-DgQNf3-o1p03SDNraMsxn-WjxyDbDQ,12011
51
+ channel_app/omnitron/commands/orders/addresses.py,sha256=FS63zncxP1hHjObq0Yjr9mq1voixzL52YdKt17Q0uV0,12358
52
52
  channel_app/omnitron/commands/orders/cargo_companies.py,sha256=pTyOgsoIBLHUIj7F2eB_y3NXS8p8Qi0rsqjIZ7AZiWs,1308
53
53
  channel_app/omnitron/commands/orders/customers.py,sha256=bBE5o3KFyReaMQm4dTrcZm7u0FEq3u-_YpVt5ru3_B8,3446
54
54
  channel_app/omnitron/commands/orders/orders.py,sha256=MJP3nAhBqOYfe028tjn7TOzxrjojcFNAIUScTxm2zXw,22755
55
55
  channel_app/omnitron/commands/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- channel_app/omnitron/commands/tests/test_orders.py,sha256=qX0g4fB5mI7jnHuQqPTE1ttf7GCyl-zV-6yhl0JvjZY,13465
56
+ channel_app/omnitron/commands/tests/test_orders.py,sha256=mG2o4hftXFoYvTfWmgP9QrGtgMUPudoFRYKRZLku0l0,16345
57
57
  channel_app/omnitron/commands/tests/test_product_images.py,sha256=y6tmiJ00kd2GTqSv4MOCjUnXFFSAKhhAwsqQ0l0ccNk,3492
58
58
  channel_app/omnitron/commands/tests/test_product_prices.py,sha256=5HPX9PmjGw6gk3oNrwtWLqdrOkfeNx1mYP-pYwOesZU,3496
59
59
  channel_app/omnitron/commands/tests/test_product_stocks.py,sha256=q4RGlrCNUUJyN5CBL1fzrvdd4Q3xt816mbMRQT0XEd0,3496
60
60
  channel_app/omnitron/commands/tests/test_products.py,sha256=DUUdB7pKe-wj8H1N-otKhR-97z37Q3Mh0QgROlnrKTQ,102028
61
- channel_app-0.0.146.dist-info/METADATA,sha256=EOk4_YtmPrKvOoi0q5sbxKwNQRCJacn4CavLKSDb2QI,309
62
- channel_app-0.0.146.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
63
- channel_app-0.0.146.dist-info/top_level.txt,sha256=JT-gM6L5Cwxr1xEoN7NHrREDs-d6iGFGfRnK-NrJ3tU,12
64
- channel_app-0.0.146.dist-info/RECORD,,
61
+ channel_app-0.0.148.dist-info/METADATA,sha256=4z7ZPV0_H7HL_j3rZjKgc6ROo4azRlDW26c_m339WWw,309
62
+ channel_app-0.0.148.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
63
+ channel_app-0.0.148.dist-info/top_level.txt,sha256=JT-gM6L5Cwxr1xEoN7NHrREDs-d6iGFGfRnK-NrJ3tU,12
64
+ channel_app-0.0.148.dist-info/RECORD,,