def test_list(self): repository = MongoKitRepository(self.mongo_db) first_kit_products = [ KitProduct(product_sku='FASD-498', quantity=2, discount_percentage=10.5), KitProduct(product_sku='FASD-14891', quantity=1, discount_percentage=10.5) ] first_kit = Kit(name='Sony Gaming Pack', sku='FASD-789', kit_products=first_kit_products) second_kit_products = [ KitProduct(product_sku='FASD-498', quantity=9, discount_percentage=10.5), KitProduct(product_sku='FASD-1479', quantity=1, discount_percentage=10.5) ] second_kit = Kit(name='Sony Gaming Pack II', sku='FASD-7894', kit_products=second_kit_products) first_kit_id = repository.add(first_kit) second_kit_id = repository.add(second_kit) created_kits = repository.list() self.assertIsInstance(created_kits, list) self.assertEqual(2, len(created_kits)) self.assertEqual(first_kit_id, created_kits[0].id) self.assertEqual(first_kit.sku, created_kits[0].sku) self.assertEqual(first_kit.name, created_kits[0].name) self.assertEqual(first_kit.kit_products[0], created_kits[0].kit_products[0]) self.assertEqual(first_kit.kit_products[1], created_kits[0].kit_products[1]) self.assertEqual(second_kit_id, created_kits[1].id) self.assertEqual(second_kit.sku, created_kits[1].sku) self.assertEqual(second_kit.name, created_kits[1].name) self.assertEqual(second_kit.kit_products[0], created_kits[1].kit_products[0]) self.assertEqual(second_kit.kit_products[1], created_kits[1].kit_products[1])
def test_update_should_raise_not_found_when_cant_find_product(self): repository = MongoKitRepository(self.mongo_db) kit_products = [ KitProduct(product_sku='FASD-498', quantity=2, discount_percentage=10.5), KitProduct(product_sku='FASD-1489', quantity=1, discount_percentage=10.5) ] kit = Kit(id='5f566e9c1022bd08188d674b', name='Sony Gaming Pack', sku='FASD-789', kit_products=kit_products) with self.assertRaises(NotFound): repository.update(kit)
def test_add(self): repository = MongoKitRepository(self.mongo_db) kit_products = [ KitProduct(product_sku='FASD-498', quantity=2, discount_percentage=10.5), KitProduct(product_sku='FASD-1489', quantity=1, discount_percentage=10.5) ] kit = Kit(name='Sony Gaming Pack', sku='FASD-789', kit_products=kit_products) kit_id = repository.add(kit) created_kit = repository.get_by_id(kit_id) self.assertIsInstance(kit_id, str) self.assertEqual(kit_id, created_kit.id) self.assertEqual(kit.sku, created_kit.sku) self.assertEqual(kit.name, created_kit.name) self.assertEqual(kit.kit_products[0], created_kit.kit_products[0]) self.assertEqual(kit.kit_products[1], created_kit.kit_products[1])
def test_update(self): repository = MongoKitRepository(self.mongo_db) kit_products = [ KitProduct(product_sku='FASD-498', quantity=2, discount_percentage=10.5), KitProduct(product_sku='FASD-1489', quantity=1, discount_percentage=10.5) ] kit = Kit(name='Sony Gaming Pack', sku='FASD-789', kit_products=kit_products) kit_id = repository.add(kit) kit.define_id(kit_id) repository.add( Kit(name='Sony Gaming Pack II', sku='FASD-7894', kit_products=[ KitProduct(product_sku='FASD-4988', quantity=9, discount_percentage=10.5), KitProduct(product_sku='FASD-1489', quantity=1, discount_percentage=10.5) ])) kit.update_infos(name='Sony Gaming Pack I', kit_products=[ KitProduct(product_sku='FASD-498', quantity=7, discount_percentage=80.5), KitProduct(product_sku='FASD-1429', quantity=5, discount_percentage=72.5) ]) repository.update(kit) kit = repository.get_by_id(kit_id) self.assertEqual(kit.name, 'Sony Gaming Pack I') self.assertEqual(kit.kit_products[0], kit.kit_products[0]) self.assertEqual(kit.kit_products[1], kit.kit_products[1])
def test_remove(self): repository = MongoKitRepository(self.mongo_db) kit_products = [ KitProduct(product_sku='FASD-498', quantity=2, discount_percentage=10.5), KitProduct(product_sku='FASD-1489', quantity=1, discount_percentage=10.5) ] kit = Kit(name='Sony Gaming Pack', sku='FASD-789', kit_products=kit_products) kit_id = repository.add(kit) repository.remove(kit_id) with self.assertRaises(NotFound): repository.get_by_id(kit_id)
def test_add_should_raise_skuExistsError_when_another_kit_has_the_same_sku( self): repository = MongoKitRepository(self.mongo_db) kit_products = [ KitProduct(product_sku='FASD-498', quantity=2, discount_percentage=10.5), KitProduct(product_sku='FASD-1489', quantity=1, discount_percentage=10.5) ] kit = Kit(name='Sony Gaming Pack', sku='FASD-789', kit_products=kit_products) repository.add(kit) with self.assertRaises(skuExistsError): repository.add(kit)
# -*- coding: utf-8 -*- from src import configurations, web_app as web_app_module from src import connections from src.kitmanagement import endpoints as kitmanagement_endpoints from src.kitmanagement.application_services import ProductsService, KitsService, CalculatedKitsService from src.kitmanagement.repositories import InMemoryProductRepository, InMemoryKitRepository, MongoProductRepository, MongoKitRepository config = configurations.get_config() web_app = web_app_module.get_web_app() api = web_app_module.get_api() connections.register(web_app) # INFO: If you dont like databases, just use an inmemory repository # product_repository = InMemoryProductRepository() # kit_repository = InMemoryKitRepository() product_repository = MongoProductRepository(connections.mongo_kit_db) kit_repository = MongoKitRepository(connections.mongo_kit_db) products_service = ProductsService(product_repository, kit_repository) kits_service = KitsService(kit_repository, product_repository) calculated_kits_service = CalculatedKitsService(kit_repository, product_repository) kitmanagement_endpoints.register( products_service=products_service, kits_service=kits_service, calculated_kits_service=calculated_kits_service)
def test_remove_should_raise_not_found_when_cant_find_kit(self): repository = MongoKitRepository(self.mongo_db) with self.assertRaises(NotFound): repository.remove('5f566e9c1022bd08188d674b')