2024-07-24 17:15:46 +03:00
|
|
|
from __future__ import annotations
|
2024-07-24 17:15:46 +03:00
|
|
|
from unittest.mock import MagicMock
|
|
|
|
|
|
|
|
import octoprint.settings
|
2024-07-24 17:15:46 +03:00
|
|
|
|
|
|
|
from octoprint_bambu_printer.bambu_print_plugin import BambuPrintPlugin
|
|
|
|
from octoprint_bambu_printer.printer.bambu_virtual_printer import BambuVirtualPrinter
|
|
|
|
from octoprint_bambu_printer.printer.states.idle_state import IdleState
|
|
|
|
from octoprint_bambu_printer.printer.states.paused_state import PausedState
|
|
|
|
from octoprint_bambu_printer.printer.states.print_finished_state import (
|
|
|
|
PrintFinishedState,
|
|
|
|
)
|
|
|
|
from octoprint_bambu_printer.printer.states.printing_state import PrintingState
|
|
|
|
from pytest import fixture
|
|
|
|
|
|
|
|
|
|
|
|
@fixture
|
2024-07-24 17:15:46 +03:00
|
|
|
def plugin():
|
|
|
|
plugin = BambuPrintPlugin()
|
|
|
|
plugin._settings = MagicMock()
|
|
|
|
plugin._settings.get(["serial"]).return_value = "login"
|
|
|
|
plugin._settings.get(["access_code"]).return_value = "token"
|
|
|
|
plugin._settings.get(["host"]).return_value = "192.168.0.20"
|
|
|
|
plugin._settings.get_plugin_logfile_path(["host"]).return_value = "./test_log.log"
|
|
|
|
return plugin
|
|
|
|
|
|
|
|
|
|
|
|
@fixture
|
|
|
|
def printer(plugin):
|
|
|
|
printer = plugin.virtual_printer_factory(None, "BAMBU", 115200, 5)
|
2024-07-24 17:15:46 +03:00
|
|
|
assert printer is not None
|
|
|
|
return printer
|
|
|
|
|
|
|
|
|
|
|
|
def test_initial_state(printer: BambuVirtualPrinter):
|
|
|
|
assert isinstance(printer.current_state, IdleState)
|
|
|
|
|
|
|
|
|
|
|
|
def test_list_sd_card(printer: BambuVirtualPrinter):
|
|
|
|
printer.write(b"M20\n") # GCode for listing SD card
|
|
|
|
result = printer.readline()
|
|
|
|
assert result == "" # Replace with the actual expected result
|
|
|
|
|
|
|
|
|
|
|
|
def test_start_print(printer: BambuVirtualPrinter):
|
|
|
|
gcode = b"G28\nG1 X10 Y10\n"
|
|
|
|
printer.write(gcode)
|
|
|
|
result = printer.readline()
|
|
|
|
assert isinstance(printer.current_state, PrintingState)
|
|
|
|
|
|
|
|
|
|
|
|
def test_pause_print(printer: BambuVirtualPrinter):
|
|
|
|
gcode = b"G28\nG1 X10 Y10\n"
|
|
|
|
printer.write(gcode)
|
|
|
|
printer.write(b"M25\n") # GCode for pausing the print
|
|
|
|
result = printer.readline()
|
|
|
|
assert isinstance(printer.current_state, PausedState)
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_printing_info(printer: BambuVirtualPrinter):
|
|
|
|
gcode = b"G28\nG1 X10 Y10\n"
|
|
|
|
printer.write(gcode)
|
|
|
|
printer.write(b"M27\n") # GCode for getting printing info
|
|
|
|
result = printer.readline()
|
|
|
|
assert result == ""
|
|
|
|
|
|
|
|
|
|
|
|
def test_abort_print(printer: BambuVirtualPrinter):
|
|
|
|
gcode = b"G28\nG1 X10 Y10\n"
|
|
|
|
printer.write(gcode)
|
|
|
|
printer.write(b"M26\n") # GCode for aborting the print
|
|
|
|
result = printer.readline()
|
|
|
|
assert isinstance(printer.current_state, IdleState)
|
|
|
|
|
|
|
|
|
|
|
|
def test_print_finished(printer: BambuVirtualPrinter):
|
|
|
|
gcode = b"G28\nG1 X10 Y10\n"
|
|
|
|
printer.write(gcode)
|
|
|
|
result = printer.readline()
|
|
|
|
assert isinstance(printer.current_state, PrintFinishedState)
|