def test_document_view(qtbot: QtBot): from genial.views.documentview import DocumentView document_view = DocumentView() assert document_view is not None qtbot.add_widget(document_view) document_view.show() assert document_view.isVisible()
def test_properties_questions_view(qtbot: QtBot): from genial.views.propertiesquestiontypeview import PropertiesQuestionTypeView properties_questions_view = PropertiesQuestionTypeView() assert properties_questions_view is not None qtbot.add_widget(properties_questions_view) properties_questions_view.show() assert properties_questions_view.isVisible()
def test_main_view(qtbot: QtBot): from genial.views.mainview import MainView main_view = MainView() assert main_view is not None qtbot.add_widget(main_view) main_view.show() assert main_view.isVisible()
def test_questions_view(qtbot:QtBot): from genial.views.questionsview import QuestionsView questions_view = QuestionsView() assert questions_view is not None qtbot.add_widget(questions_view) questions_view.show() assert questions_view.isVisible()
def test_document_view(qtbot:QtBot): from genial.views.documentview import DocumentView document_view = DocumentView() assert document_view is not None qtbot.add_widget(document_view) document_view.show() assert document_view.isVisible()
def test_main_view(qtbot:QtBot): from genial.views.mainview import MainView main_view = MainView() assert main_view is not None qtbot.add_widget(main_view) main_view.show() assert main_view.isVisible()
def test_questions_view(qtbot: QtBot): from genial.views.questionsview import QuestionsView questions_view = QuestionsView() assert questions_view is not None qtbot.add_widget(questions_view) questions_view.show() assert questions_view.isVisible()
def test_properties_questions_view(qtbot:QtBot): from genial.views.propertiesquestiontypeview import PropertiesQuestionTypeView properties_questions_view = PropertiesQuestionTypeView() assert properties_questions_view is not None qtbot.add_widget(properties_questions_view) properties_questions_view.show() assert properties_questions_view.isVisible()
def window(model: Model, qtbot: QtBot, mocker: MockFixture): """the window.""" message_box = 'usc_lr_timer.app.QtWidgets.QMessageBox.{}' mocker.patch(message_box.format('question'), return_value=QtWidgets.QMessageBox.Yes) mocker.patch(message_box.format('information')) window = MainWindow(model) qtbot.add_widget(window) return window
def test_figure_registration(app: Mockautodidaqt, qtbot: QtBot): panel = Panel(FauxParent(), "test", app) qtbot.add_widget(panel) fig = panel.register_figure("plot") assert len(panel.canvases) == 1 assert len(panel.figures) == 1 assert isinstance(fig, Figure)
def test_dataclass_bindings(qtbot: QtBot): data = Data() gated = Data() ui = {} with CollectUI(ui): g = group( "Dataclass Binding", layout_dataclass(Data, prefix="data"), layout_dataclass(Data, prefix="gated", submit="Submit"), ) bind_dataclass(data, prefix="data", ui=ui) bind_dataclass(gated, prefix="gated", ui=ui) qtbot.add_widget(g) # check keys are generated appropriately assert set(ui.keys()).issuperset({("data", k) for k in ["x", "y", "z", "choice"]}) # this only gives one way binding assert data == Data() # directly plug into the observables ui[("data", "x")].on_next(5) assert data == Data(x=5) ui[("data", "choice")].on_next(AorB.B) assert data == Data(x=5, choice=AorB.B) # check that the gated option does not update until submitted ui[("gated", "x")].on_next(5) assert gated == Data() ui[("gated", "y")].on_next(-1) assert gated == Data() qtbot.mouseClick(ui[("gated", "submit!")], QtCore.Qt.LeftButton) assert gated == Data(x=5, y=-1) # check field types with pytest.raises(TypeError) as exc: ui[("data", "z")].on_next(10) assert "unexpected type 'int'" in str(exc.value) expected_classes = [ DoubleSpinBox, SpinBox, LineEdit, ComboBox, ] for partial_id, cls in zip(["x", "y", "z", "choice"], expected_classes): assert isinstance(ui[("data", partial_id)], cls)
def test_reactive_button(qtbot: QtBot): b = button("My Button Text") events = [] b.subscribe(events.append) qtbot.add_widget(b) qtbot.mouseClick(b, QtCore.Qt.LeftButton) qtbot.mouseClick(b, QtCore.Qt.LeftButton) assert events == [True, True] qtbot.mouseClick(b, QtCore.Qt.LeftButton) assert events == [True, True, True]
def test_reactive_slider(qtbot: QtBot): w = slider() qtbot.add_widget(w) events = [] w.subscribe(events.append) w.setValue(5) w.setValue(-1) # below minimum w.setValue(11) # above maximum w.setValue(6.6) # should be coerced to int and rounded down assert events == [0, 5, 0, 10, 6]
def test_reactive_line_edit(qtbot: QtBot): start_text = "Start." edit = line_edit(start_text) qtbot.add_widget(edit) events = [] edit.subscribe(events.append) will_type = "Test." qtbot.keyClicks(edit, will_type) assert events == [ start_text + will_type[:i] for i in range(len(will_type) + 1) ]
def test_reactive_combo_box(qtbot: QtBot): combo = combo_box(["A", "B", "C"]) qtbot.add_widget(combo) events = [] combo.subscribe(events.append) combo.setCurrentIndex(0) combo.setCurrentIndex(1) combo.setCurrentIndex(2) combo.setCurrentIndex(2) combo.setCurrentIndex(0) assert events == ["A", "B", "C", "A"]
def test_reactive_check_box(qtbot: QtBot): cb = check_box("Checkbox") events = [] cb.subscribe(events.append) qtbot.add_widget(cb) cb.setCheckState(False) cb.setCheckState(False) cb.setCheckState(True) cb.setCheckState(False) cb.setCheckState(True) cb.setCheckState(True) assert events == [0, 1, 0, 1]
def test_submit_gating(qtbot: QtBot): ui = {} with CollectUI(ui): top_level = vertical( "Some reactive inputs", radio_button("Radio button", id="radio"), line_edit("!", id="edit"), button("Submit", id="submit"), ) qtbot.add_widget(top_level) edit_events = [] radio_events = [] ui["radio"].subscribe(radio_events.append) ui["edit"].subscribe(edit_events.append) # collect into a small form form_events = [] submit("submit", ["radio", "edit"], ui=ui).subscribe(form_events.append) ui["radio"].setChecked(True) ui["radio"].setChecked(True) ui["radio"].setChecked(False) qtbot.keyClicks(ui["edit"], "Text") qtbot.mouseClick(ui["submit"], QtCore.Qt.LeftButton) ui["radio"].setChecked(True) qtbot.keyClicks(ui["edit"], "B") qtbot.mouseClick(ui["submit"], QtCore.Qt.LeftButton) assert edit_events == [f"!{'TextB'[:i]}" for i in range(len("TextB") + 1)] assert radio_events == [False, True, False, True] assert form_events == [ { "edit": "!Text", "radio": False }, { "edit": "!TextB", "radio": True }, ]
def test_reactive_spinbox(qtbot: QtBot): sb = spin_box() qtbot.add_widget(sb) # by default we get an integer spinbox events = [] sb.subscribe(events.append) for v in [-1, 3, 3.5, 4, 9, 12]: sb.setValue(v) assert events == [0, 3, 4, 9, 10] # check floats dsb = spin_box(kind=float) qtbot.add_widget(dsb) events = [] dsb.subscribe(events.append) for v in [-1, 3, 3.5, 4, 9, 12]: dsb.setValue(v) assert events == [0, 3, 3.5, 4, 9, 10]
def window(model: Model, qtbot: QtBot): window = MainWindow(model) qtbot.add_widget(window) return window
def test_panel_creation(app: Mockautodidaqt, qtbot: QtBot): panel = Panel(FauxParent(), "test", app) qtbot.add_widget(panel) assert panel
def the_window(dialog: LoginDialog, qtbot: QtBot): """The window.""" qtbot.add_widget(dialog)