Esempio n. 1
0
    def test_create_sale(self):
        sale_items = [SaleItem(1, 1, 110500.99), SaleItem(4, 1, 65198.90)]
        sale = Sale(1, sale_items, 'John H. Patterson')

        self.assertEqual(1, sale.sale_id)
        self.assertEqual(sale_items, sale.items)
        self.assertEqual('John H. Patterson', sale.salesman_name)
    def test_analyze_data(self):
        salesmen = [
            Salesman('12312312312', 'John H. Patterson', 192000.00),
            Salesman('45645645645', 'David Ogilvy', 167500.00),
        ]

        customers = [
            Customer('12312312312312', 'Dale Carnegie', 'Farming'),
            Customer('45645645645645', 'Joe Girard', 'Automotive Retail'),
        ]

        sales = [
            Sale(1, [SaleItem(1, 1, 110500.99)], 'John H. Patterson'),
            Sale(2, [SaleItem(2, 25, 230.45)], 'David Ogilvy'),
            Sale(4, [SaleItem(4, 1, 65198.90)], 'John H. Patterson'),
            Sale(5, [SaleItem(5, 5, 470.10)], 'David Ogilvy'),
        ]

        data_summary: DataSummary = analyze_data({
                                                     'salesmen': salesmen,
                                                     'customers': customers,
                                                     'sales': sales,
                                                 })

        expected_data_summary: DataSummary = {
            'customers_amount': 2,
            'salesmen_amount': 2,
            'most_expensive_sale_id': 1,
            'worst_salesman_name': 'David Ogilvy',
        }

        self.assertDictEqual(expected_data_summary, data_summary)
    def test_get_most_expensive_sale(self):
        sale = get_most_expensive_sale([
            Sale(1, [SaleItem(1, 1, 110500.99)], 'John H. Patterson'),
            Sale(2, [SaleItem(2, 25, 230.45)], 'David Ogilvy'),
        ])

        self.assertEqual(1, sale.sale_id)
        self.assertEqual(1, sale.items[0].item_id)
        self.assertEqual(1, sale.items[0].quantity)
        self.assertEqual(110500.99, sale.items[0].price)
        self.assertEqual('John H. Patterson', sale.salesman_name)
Esempio n. 4
0
def parse_sale_item(item: str) -> SaleItem:
    """Parses a string containing raw sale item data and returns a
    SaleItem object. Raises WrongNumberOfFieldsError if the string
    contains a number of fields different than expected for the
    SaleItem object.
    Validated fields:
    item_id: raises InvalidItemIdPatternError
    quantity: raises InvalidQuantityPatternError
    price: raises InvalidPricePatternError
    """
    try:
        item_id, quantity, price = item.split(ITEM_FIELD_SEPARATOR)
    except ValueError:
        raise WrongNumberOfFieldsError(f'"{item}" (expected '
                                       f'"<item_id>-<quantity>-<price>")')

    if re.fullmatch(ITEM_ID_PATTERN, item_id) is None:
        raise InvalidItemIdPatternError(f'"{item_id}" (expected int)')

    if re.fullmatch(QUANTITY_PATTERN, quantity) is None:
        raise InvalidQuantityPatternError(f'"{quantity}" (expected int)')

    if re.fullmatch(PRICE_PATTERN, price) is None:
        raise InvalidPricePatternError(f'"{price}" (expected float)')

    return SaleItem(int(item_id), int(quantity), float(price))
    def test_get_worst_salesman(self):
        salesman = get_worst_salesman([
                                          Salesman('12312312312',
                                                   'John H. Patterson',
                                                   192000.00),
                                          Salesman('45645645645',
                                                   'David Ogilvy', 167500.00),
                                      ],
                                      [
                                            Sale(1,
                                                 [SaleItem(1, 1, 110500.99)],
                                                 'John H. Patterson'),
                                            Sale(2,
                                                 [SaleItem(2, 25, 230.45)],
                                                 'David Ogilvy'),
                                      ],
                                      )

        self.assertEqual(Salesman('45645645645', 'David Ogilvy', 167500.00),
                         salesman)
    def test_parse_data(self):
        data = parse_data([
            '001ç12312312312çJohn H. Pattersonç192000.00',
            '002ç12312312312312çDale CarnegieçFarming',
            '003ç001ç[01-1-110500.99]çJohn H. Patterson',
        ])

        self.assertEqual(
            {
                'salesmen': [
                    Salesman('12312312312', 'John H. Patterson', 192000.00),
                ],
                'customers': [
                    Customer('12312312312312', 'Dale Carnegie', 'Farming'),
                ],
                'sales': [
                    Sale(1, [SaleItem(1, 1, 110500.99)], 'John H. Patterson'),
                ],
            }, data)
Esempio n. 7
0
    def test_create_sale_item(self):
        sale_item = SaleItem(1, 1, 110500.99)

        self.assertEqual(1, sale_item.item_id)
        self.assertEqual(1, sale_item.quantity)
        self.assertEqual(110500.99, sale_item.price)
Esempio n. 8
0
    def test_parse_sale_items_list(self):
        sale_items = parse_sale_items_list('[04-1-65198.90,07-2-7200.00]')

        self.assertEqual([SaleItem(4, 1, 65198.90), SaleItem(7, 2, 7200.00)],
                         sale_items)
Esempio n. 9
0
    def test_parse_sale(self):
        sale = parse_sale('003ç001ç[01-1-110500.99]çJohn H. Patterson')

        self.assertEqual(
            Sale(1, [SaleItem(1, 1, 110500.99)], 'John H. Patterson'), sale)
    def test_parse_sale_item(self):
        sale_item = parse_sale_item('01-1-110500.99')

        self.assertEqual(SaleItem(1, 1, 110500.99), sale_item)