Add Elegoo printers to ESPHome fleet display
This commit is contained in:
@@ -20,20 +20,57 @@ class FleetTests(unittest.TestCase):
|
||||
for entry in package[domain]}
|
||||
self.assertFalse(subscribed - known)
|
||||
|
||||
def test_seven_printers_have_independent_pages_and_metrics(self):
|
||||
for index in (6, 7):
|
||||
def test_fleet_can_expand_beyond_configured_printers(self):
|
||||
expected_count = len(self.printers) + 2
|
||||
for index in (8, 9):
|
||||
extra = copy.deepcopy(self.printers[0])
|
||||
extra.update(id=f'printer_{index}', entity_prefix=f'new_printer_{index}')
|
||||
self.printers.append(extra)
|
||||
package = generate(self.printers)
|
||||
self.assertEqual(len([page for page in package['lvgl']['pages'] if not page.get('skip')]), 7)
|
||||
self.assertEqual(len(package['script']), 7)
|
||||
self.assertEqual(len([page for page in package['lvgl']['pages'] if not page.get('skip')]), expected_count)
|
||||
self.assertEqual(len(package['script']), expected_count)
|
||||
subscriptions = {entry['id']: entry['entity_id'] for entry in package['sensor']}
|
||||
self.assertEqual(subscriptions['printer_7_progress'], 'sensor.new_printer_7_print_progress')
|
||||
self.assertEqual(subscriptions['printer_9_progress'], 'sensor.new_printer_9_print_progress')
|
||||
for page in package['lvgl']['pages']:
|
||||
self.assertIn('lvgl.page.next', page['on_swipe_left'][-1])
|
||||
self.assertIn('lvgl.page.previous', page['on_swipe_right'][-1])
|
||||
|
||||
def test_elegoo_profiles_use_available_metrics_and_domains(self):
|
||||
package = generate(self.printers)
|
||||
subscriptions = {entry['id']: entry for domain in ('sensor', 'text_sensor')
|
||||
for entry in package[domain]}
|
||||
self.assertEqual(subscriptions['centauri_carbon_nozzle_target']['entity_id'],
|
||||
'number.centauri_carbon_target_nozzle_temp')
|
||||
self.assertEqual(subscriptions['centauri_carbon_fan']['entity_id'],
|
||||
'sensor.centauri_carbon_model_fan_speed')
|
||||
for pid in ('centauri_carbon', 'saturn'):
|
||||
self.assertEqual(subscriptions[f'{pid}_online']['entity_id'], f'binary_sensor.{pid}_sdcp_status')
|
||||
self.assertEqual(subscriptions[f'{pid}_remaining_unit']['entity_id'], f'sensor.{pid}_remaining_print_time')
|
||||
self.assertEqual(subscriptions[f'{pid}_print_error']['entity_id'], f'sensor.{pid}_print_error')
|
||||
self.assertEqual(subscriptions[f'{pid}_print_error_reason']['entity_id'], f'sensor.{pid}_error_status_reason')
|
||||
self.assertNotIn(f'{pid}_hms_error', subscriptions)
|
||||
self.assertNotIn('saturn_nozzle', subscriptions)
|
||||
self.assertNotIn('saturn_fan', subscriptions)
|
||||
self.assertEqual(subscriptions['saturn_uv_unit']['entity_id'], 'sensor.saturn_uv_led_temp')
|
||||
self.assertEqual(subscriptions['saturn_elapsed_unit']['entity_id'], 'sensor.saturn_current_print_time')
|
||||
|
||||
def test_resin_page_contains_only_resin_gauges(self):
|
||||
package = generate(self.printers)
|
||||
page = next(page for page in package['lvgl']['pages'] if page['id'] == 'saturn_page')
|
||||
arcs = {widget['arc']['id'] for widget in page['widgets'] if 'arc' in widget}
|
||||
self.assertEqual(arcs, {'saturn_progress_arc', 'saturn_uv_arc', 'saturn_layer_arc'})
|
||||
|
||||
def test_number_overrides_are_supported(self):
|
||||
self.printers[-2]['entities'] = {'nozzle_target': 'number.custom_target'}
|
||||
package = generate(self.printers)
|
||||
entry = next(row for row in package['sensor'] if row['id'] == 'centauri_carbon_nozzle_target')
|
||||
self.assertEqual(entry['entity_id'], 'number.custom_target')
|
||||
|
||||
def test_reject_unknown_profiles(self):
|
||||
self.printers[0]['profile'] = 'unsupported'
|
||||
with self.assertRaisesRegex(ValueError, 'unsupported profile'):
|
||||
generate(self.printers)
|
||||
|
||||
def test_overrides_apply_to_values_and_unit_subscriptions(self):
|
||||
self.printers[0]['entities'] = {'time_left': 'sensor.custom_remaining'}
|
||||
package = generate(self.printers)
|
||||
|
||||
Reference in New Issue
Block a user