Пример #1
0
    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])
Пример #2
0
 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)
Пример #3
0
    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])
Пример #4
0
    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])
Пример #5
0
 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)
Пример #6
0
 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)
Пример #7
0
# -*- 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)
Пример #8
0
 def test_remove_should_raise_not_found_when_cant_find_kit(self):
     repository = MongoKitRepository(self.mongo_db)
     with self.assertRaises(NotFound):
         repository.remove('5f566e9c1022bd08188d674b')