mirror of
https://github.com/RunLit/Bambu-Run.git
synced 2026-06-22 14:09:04 +01:00
79 lines
2.7 KiB
Python
79 lines
2.7 KiB
Python
import pytest
|
|
|
|
from bambu_run.management.commands.bambu_collector import resolve_printer_device
|
|
from bambu_run.models import Printer
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_creates_new_printer_keyed_by_serial():
|
|
printer = resolve_printer_device(
|
|
"0309DA123456", {"name": "RNL-H2C", "dev_product_name": "H2C"}
|
|
)
|
|
|
|
assert printer.serial_number == "0309DA123456"
|
|
assert printer.name == "RNL-H2C"
|
|
assert printer.model == "H2C"
|
|
assert printer.is_active is True
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_second_call_with_same_serial_does_not_create_duplicate():
|
|
first = resolve_printer_device("SERIAL-A", {"name": "Printer A", "dev_product_name": "H2C"})
|
|
second = resolve_printer_device("SERIAL-A", {"name": "Printer A", "dev_product_name": "H2C"})
|
|
|
|
assert first.pk == second.pk
|
|
assert Printer.objects.filter(serial_number="SERIAL-A").count() == 1
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_two_different_serials_create_two_printers():
|
|
a = resolve_printer_device("SERIAL-A", {"name": "Printer A", "dev_product_name": "H2C"})
|
|
b = resolve_printer_device("SERIAL-B", {"name": "Printer B", "dev_product_name": "X1C"})
|
|
|
|
assert a.pk != b.pk
|
|
assert Printer.objects.count() == 2
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_backfills_single_legacy_printer_with_null_serial():
|
|
legacy = Printer.objects.create(
|
|
name="Bambu Lab Printer", model="Bambu Lab", manufacturer="Bambu Lab", is_active=True
|
|
)
|
|
|
|
resolved = resolve_printer_device("SERIAL-A", {"name": "RNL-H2C", "dev_product_name": "H2C"})
|
|
|
|
legacy.refresh_from_db()
|
|
assert resolved.pk == legacy.pk
|
|
assert legacy.serial_number == "SERIAL-A"
|
|
assert Printer.objects.count() == 1
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_does_not_guess_when_multiple_legacy_printers_exist():
|
|
Printer.objects.create(name="Legacy 1", model="Bambu Lab")
|
|
Printer.objects.create(name="Legacy 2", model="Bambu Lab")
|
|
|
|
resolved = resolve_printer_device("SERIAL-A", {"name": "RNL-H2C", "dev_product_name": "H2C"})
|
|
|
|
assert resolved.serial_number == "SERIAL-A"
|
|
assert Printer.objects.count() == 3
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_falls_back_to_generic_defaults_without_device_info():
|
|
printer = resolve_printer_device("SERIAL-A", None)
|
|
|
|
assert printer.serial_number == "SERIAL-A"
|
|
assert printer.name == "Bambu Lab Printer"
|
|
assert printer.model == "Bambu Lab"
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_updates_name_and_model_on_existing_printer_when_changed():
|
|
resolve_printer_device("SERIAL-A", {"name": "Old Name", "dev_product_name": "H2C"})
|
|
|
|
updated = resolve_printer_device("SERIAL-A", {"name": "New Name", "dev_product_name": "H2C"})
|
|
|
|
assert updated.name == "New Name"
|
|
assert Printer.objects.filter(serial_number="SERIAL-A").count() == 1
|