def test_pedal_with_all_parts_in_stock_returns_empty_list(self): new_pedal = { 'parts': [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 2 }, ] } parts = [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 2 }, ] result = pedaltools.list_missing_parts([new_pedal], parts) self.assertEqual([], result)
def test_pedal_with_missing_parts_lists_parts(self): new_pedal = { 'parts': [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 2 }, ] } parts = [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, ] result = pedaltools.list_missing_parts([new_pedal], parts) expected = [ { 'category': 'resistor', 'value': '100k', 'qty': 2 }, ] self.assertEqual(expected, result)
def test_multiple_pedals_with_missing_qty_return_list(self): pedals = [ { 'parts': [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 2 }, ] }, { 'parts': [ { 'category': 'capacitor', 'value': '120u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 1 }, ] }, ] parts = [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 1 }, { 'category': 'capacitor', 'value': '120u', 'qty': 1 }, ] result = pedaltools.list_missing_parts(pedals, parts) expected = [{'category': 'resistor', 'value': '100k', 'qty': 2}] self.assertEqual(expected, result)
def test_multiple_pedals_with_in_stock_parts_return_empty_list(self): pedals = [ { 'parts': [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 2 }, ] }, { 'parts': [ { 'category': 'capacitor', 'value': '120u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 1 }, ] }, ] parts = [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 3 }, { 'category': 'capacitor', 'value': '120u', 'qty': 1 }, ] result = pedaltools.list_missing_parts(pedals, parts) self.assertEqual([], result)
def list_missing_parts(pedal_names): parts = parttools.load_all() all_pedals = pedaltools.load_all() pedals = [pedal for pedal in all_pedals if pedal['name'] in pedal_names] missing = pedaltools.list_missing_parts(pedals, parts) missing = sorted(missing, key=itemgetter('category')) grouped = groupby(missing, key=itemgetter('category')) for group_name, items in grouped: print(group_name) sorted_items = sorted(items, key=itemgetter('value')) for item in sorted_items: output = f"{item['value'].ljust(15)}(qty: {item['qty']})" print(output) print('')
def test_lower_qty_than_required_is_returned(self): new_pedal = { 'parts': [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 2 }, ] } parts = [ { 'category': 'capacitor', 'value': '10u', 'qty': 1 }, { 'category': 'resistor', 'value': '100k', 'qty': 1 }, ] result = pedaltools.list_missing_parts([new_pedal], parts) expected = [ { 'category': 'resistor', 'value': '100k', 'qty': 1 }, ] self.assertEqual(expected, result)