def test_button_click_should_activate(qtbot):
    # type: (qtbot) -> None
    subdiv_manager = MagicMock()
    ui = SubDivUI(subdiv_manager)
    qtbot.addWidget(ui)

    qtbot.mouseClick(ui._btn_apply_subdiv, QtCore.Qt.LeftButton)

    subdiv_manager.apply_subdiv_to_selection.assert_called_once()
def test_username_valid_password_invalid(botlogin):
    qtbot, widget = botlogin
    qtbot.keyClicks(widget.text_username, 'goanpeca')
    qtbot.keyClicks(widget.text_password, 'wrongpassword')
    with qtbot.waitSignal(signal=widget.sig_authentication_failed,
                          timeout=5000,
                          raising=True):
        qtbot.mouseClick(widget.button_login, Qt.LeftButton)
    assert widget.isVisible()
def test_username_invalid(botlogin):
    qtbot, widget = botlogin
    qtbot.keyClicks(widget.text_username, 'hopefully-not-an-existing-user')
    qtbot.keyClicks(widget.text_password, NAVIGATOR_TEST_PASSWORD)
    with qtbot.waitSignal(signal=widget.sig_authentication_failed,
                          timeout=5000,
                          raising=True):
        qtbot.mouseClick(widget.button_login, Qt.LeftButton)
    assert widget.isVisible()
def test_username_valid_password_valid(botlogin):
    qtbot, widget = botlogin
    qtbot.keyClicks(widget.text_username, NAVIGATOR_TEST_USERNAME)
    qtbot.keyClicks(widget.text_password, NAVIGATOR_TEST_PASSWORD)
    with qtbot.waitSignal(signal=widget.sig_authentication_succeeded,
                          timeout=5000,
                          raising=True):
        qtbot.mouseClick(widget.button_login, Qt.LeftButton)
    assert not widget.isVisible()
Beispiel #5
0
def test_deposit_jammed(qtbot):
    accounts, terminal_status = set_up_accounts_and_terminal_status()
    terminal_status.current_account = accounts[0]
    # monkey patch deposit slot to always be jammed
    terminal_status.is_deposit_slot_functional = lambda: False
    select_transaction_view = SelectTransactionView()
    qtbot.addWidget(select_transaction_view)

    qtbot.mouseClick(select_transaction_view.r2_btn, QtCore.Qt.LeftButton)
    assert_screen_shows_and_get_new_screen(MalfunctionView)
def test_registerEdit(register, qtbot):
    register.usernameLineEdit.clear()
    register.passwordLineEdit.clear()
    register.confirmPasswordLineEdit.clear()
    register.emailAddressLineEdit.clear()
    qtbot.keyClicks(register.usernameLineEdit, "username")
    qtbot.keyClicks(register.passwordLineEdit, "encryptp")
    qtbot.keyClicks(register.confirmPasswordLineEdit, "encryptp")
    qtbot.keyClicks(register.emailLineEdit, "encryptp")
    qtbot.mouseClick(register.registerButton, QtCore.Qt.LeftButton)
    assert True
Beispiel #7
0
def test_import_ticket_names(qtbot: qtbot.QtBot, mocker: MockerFixture):
    """Tests the import ticket names feature"""
    gui_manager.clear_windows()

    gui_manager.initialize()

    for window in gui_manager.window_list:
        qtbot.addWidget(window)

    # Import ticket names and prizes
    mocker.patch('PyQt5.QtWidgets.QFileDialog.exec')
    mocker.patch('PyQt5.QtWidgets.QFileDialog.selectedFiles',
                 return_value=['examples/ticket_names.txt'])
    gui_manager.window_list[0].import_ticket_names_action.trigger()
    mocker.patch('PyQt5.QtWidgets.QFileDialog.selectedFiles',
                 return_value=['examples/prizes.txt'])
    gui_manager.window_list[0].import_prizes_action.trigger()

    # Restart before starting
    raffle.restart()

    # Mock prize alerts
    mocker.patch('Ui.prize_alert.PrizeAlert')

    # Draw all of the tickets in a random order
    ticket_numbers = list(range(1, 226))
    shuffle(ticket_numbers)
    for ticket_number in ticket_numbers:
        qtbot.mouseClick(
            gui_manager.window_list[0].ticket_labels[ticket_number - 1],
            Qt.LeftButton)

        # Draw the next ticket
        QApplication.processEvents()
        sleep(0.01)

    # Export the results to a csv file
    mocker.patch('PyQt5.QtWidgets.QFileDialog.getSaveFileName',
                 return_value=['results.csv', 'CSV files (*.csv)'])
    gui_manager.window_list[0].export_results_action.trigger()
    QApplication.processEvents()

    with open("results.csv", 'r') as results:
        for i, ticket_number in enumerate(ticket_numbers):
            values = results.readline().strip().split(',')

            # Verify information is present in results
            assert values[0] == str(i + 1)
            assert values[1] == str(ticket_number)
            assert values[2] == raffle.tickets[ticket_number - 1].name

            if raffle.get_prize_from_number(i + 1):
                assert values[3] == raffle.get_prize_from_number(
                    i + 1).description.strip()
def test_registerEdit(forgot, qtbot):
    forgot.usernameLineEdit.clear()
    forgot.passwordLineEdit.clear()
    forgot.confirmPasswordLineEdit.clear()
    forgot.emailLineEdit.clear()
    qtbot.keyClicks(forgot.usernameLineEdit, "encrypt")
    qtbot.keyClicks(forgot.passwordLineEdit, "encryptp")
    qtbot.keyClicks(forgot.confirmPasswordLineEdit, "encryptp")
    qtbot.keyClicks(forgot.emailLineEdit, "*****@*****.**")
    qtbot.mouseClick(forgot.resetButton, QtCore.Qt.LeftButton)
    assert True
def test_addingUser_noUsername(setUp):
    controller, qtbot = setUp

    rows = controller.view.allStudentsTable.rowCount()

    qtbot.keyClicks(controller.view.addStudent_email, "*****@*****.**")
    qtbot.mouseClick(controller.view.addStudent_button, QtCore.Qt.LeftButton)

    time.sleep(0.5)

    assert(controller.view.allStudentsTable.rowCount() == rows)
def test_addingUser_noEmail(setUp):
    controller, qtbot = setUp

    rows = controller.view.allStudentsTable.rowCount()

    qtbot.keyClicks(controller.view.addStudent_username, "Mario Fentler")
    qtbot.mouseClick(controller.view.addStudent_button, QtCore.Qt.LeftButton)

    time.sleep(0.5)

    assert(controller.view.allStudentsTable.rowCount() == rows)
def test_editingUser_dataChanges(setUp):
    controller, qtbot = setUp

    controller.view.allStudentsTable.setItem(1, 1, QtWidgets.QTableWidgetItem("edited"))
    qtbot.mouseClick(controller.editButtons[1], QtCore.Qt.LeftButton)

    time.sleep(0.5)

    url = "http://localhost:5000/user/" + controller.view.allStudentsTable.item(1,0).text()
    response = requests.get(url).json()
    assert(response['username'] == "edited")
def test_deleteUser_guiChanges(setUp):
    controller, qtbot = setUp

    rows = controller.view.allStudentsTable.rowCount()

    id = controller.view.allStudentsTable.item(1,0).text()
    qtbot.mouseClick(controller.deleteButtons[1], QtCore.Qt.LeftButton)

    time.sleep(0.5)

    assert((rows-1) == controller.view.allStudentsTable.rowCount())
Beispiel #13
0
def test_input_frame(qtbot):
    app = QtWidgets.QApplication(sys.argv)
    screen = input_frame.InputFrame()
    screen.show()

    qtbot.mouseClick(screen.parse_button, QtCore.Qt.LeftButton)
    qtbot.mouseClick(screen.quit_button, QtCore.Qt.LeftButton)

    screen.close()
    QtWidgets.QApplication.instance().quit()
    assert screen.isVisible() is False
def test_deleteUser_dataChanges(setUp):
    controller, qtbot = setUp

    id = controller.view.allStudentsTable.item(1,0).text()
    qtbot.mouseClick(controller.deleteButtons[1], QtCore.Qt.LeftButton)

    time.sleep(0.5)

    url = "http://localhost:5000/user"
    response = requests.get(url).json()
    for user in response:
        assert (id != user['id'])
Beispiel #15
0
def test_valid_pin_entry(qtbot):
    _, terminal_status = set_up_accounts_and_terminal_status()
    terminal_status.current_pan = '1'
    pin_view = PINView(None)
    qtbot.addWidget(pin_view)

    qtbot.mouseClick(pin_view.btn_1, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.btn_2, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.btn_3, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.btn_4, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.enter_btn, QtCore.Qt.LeftButton)

    assert_screen_shows_and_get_new_screen(SelectTransactionView)
Beispiel #16
0
def test_invalid_pin_entry(qtbot):
    _, terminal_status = set_up_accounts_and_terminal_status()
    terminal_status.pin_attempts = 2
    pin_view = PINView(None)
    qtbot.addWidget(pin_view)

    qtbot.mouseClick(pin_view.btn_9, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.btn_9, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.btn_9, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.btn_9, QtCore.Qt.LeftButton)
    qtbot.mouseClick(pin_view.enter_btn, QtCore.Qt.LeftButton)

    assert_screen_shows_and_get_new_screen(WelcomeView)
def test_addingUser_allArgs(setUp):
    controller, qtbot = setUp

    rows = controller.view.allStudentsTable.rowCount()

    qtbot.keyClicks(controller.view.addStudent_username, "Mario Fentler")
    qtbot.keyClicks(controller.view.addStudent_email, "*****@*****.**")
    qtbot.keyClicks(controller.view.addStudent_picture, "http://cdn.ebaumsworld.com/mediaFiles/picture/2453506/85677232.jpg")
    qtbot.mouseClick(controller.view.addStudent_button, QtCore.Qt.LeftButton)

    time.sleep(0.5)

    assert(controller.view.allStudentsTable.rowCount() == rows+1)
def test_editingUser_emailEmpty(setUp):
    controller, qtbot = setUp

    oldUsername = controller.view.allStudentsTable.item(1,2).text()

    controller.view.allStudentsTable.setItem(1, 2, QtWidgets.QTableWidgetItem(""))
    qtbot.mouseClick(controller.editButtons[1], QtCore.Qt.LeftButton)

    time.sleep(0.5)

    url = "http://localhost:5000/user/" + controller.view.allStudentsTable.item(1,0).text()
    response = requests.get(url).json()
    assert(response['email'] == oldUsername)
Beispiel #19
0
def test_matplotlib_preview(qtbot):
    testdata = os.path.join(os.path.dirname(__file__), 'testdata', 'sample')
    otfdir = os.path.join(os.path.dirname(__file__), 'testdata', 'otfs')
    APP = QtWidgets.QApplication([])
    mainGUI = main_GUI()
    mainGUI.loadProgramDefaults()
    mainGUI.setOTFdirPath(otfdir)
    assert mainGUI.listbox.rowCount() == 0
    mainGUI.listbox.addPath(testdata)
    assert mainGUI.listbox.rowCount() == 1

    def preview_exists():
        assert len(mainGUI.spimwins)
    mainGUI.prevBackendMatplotlibRadio.setChecked(True)
    qtbot.mouseClick(mainGUI.previewButton, QtCore.Qt.LeftButton)
    qtbot.waitUntil(preview_exists, timeout=10000)
    mainGUI.close_all_previews()
    assert len(mainGUI.spimwins) == 0
    mainGUI.quitProgram(save=False)
Beispiel #20
0
def test_withdrawal_terminal_insufficient_funds(qtbot):
    accounts, terminal_status = set_up_accounts_and_terminal_status()
    terminal_status.current_account = accounts[0]
    # monkey patch withdrawal slot to always be functional
    terminal_status.is_withdrawal_slot_functional = lambda: True
    terminal_status.total_currency = lambda: 200
    select_transaction_view = SelectTransactionView()
    qtbot.addWidget(select_transaction_view)

    # choose withdrawal
    qtbot.mouseClick(select_transaction_view.r3_btn, QtCore.Qt.LeftButton)
    withdrawal_view = assert_screen_shows_and_get_new_screen(WithdrawalView)

    # enter amount of $300
    qtbot.addWidget(withdrawal_view)
    qtbot.mouseClick(withdrawal_view.btn_3, QtCore.Qt.LeftButton)
    qtbot.mouseClick(withdrawal_view.btn_0, QtCore.Qt.LeftButton)
    qtbot.mouseClick(withdrawal_view.btn_0, QtCore.Qt.LeftButton)
    qtbot.mouseClick(withdrawal_view.enter_btn, QtCore.Qt.LeftButton)
    assert_screen_shows_and_get_new_screen(WithdrawalFailedView)
def test_plot(qtbot):
    # create the MVP components
    services, views, presenter = create_mvp()
    main_widget = views['main_widget']
    main_widget.show()  # show widget to test label visibility
    qtbot.addWidget(main_widget)

    # aliases for ui elements
    func_input = main_widget.func_widget.func_input
    plot_button = main_widget.func_widget.plot_button
    syntax_error_label = main_widget.syntax_error_label
    range_error_label = main_widget.range_error_label
    plot_widget = main_widget.plot_widget

    # user interaction
    func_input.setText("x^2")
    qtbot.mouseClick(plot_button, QtCore.Qt.LeftButton)

    assert not syntax_error_label.isVisible()
    assert not range_error_label.isVisible()
    assert plot_widget.axes.lines  # check if there's a plot
Beispiel #22
0
def test_first_splash_enable_analytics(botfirstsplash):
    qtbot, widget = botfirstsplash
    qtbot.mouseClick(widget.checkbox_track, Qt.LeftButton)
    qtbot.mouseClick(widget.checkbox_track, Qt.LeftButton)
    qtbot.mouseClick(widget.button_ok, Qt.LeftButton)
    provide_analytics = widget.config.get('main', 'provide_analytics')
    assert provide_analytics
Beispiel #23
0
def test_deposit(qtbot):
    accounts, terminal_status = set_up_accounts_and_terminal_status()
    terminal_status.current_account = accounts[0]
    # monkey patch deposit slot to always be functional
    terminal_status.is_deposit_slot_functional = lambda: True
    select_transaction_view = SelectTransactionView()
    qtbot.addWidget(select_transaction_view)

    # choose deposit
    qtbot.mouseClick(select_transaction_view.r2_btn, QtCore.Qt.LeftButton)
    deposit_view = assert_screen_shows_and_get_new_screen(DepositView)

    # enter amount of $10
    qtbot.addWidget(deposit_view)
    qtbot.mouseClick(deposit_view.btn_1, QtCore.Qt.LeftButton)
    qtbot.mouseClick(deposit_view.btn_0, QtCore.Qt.LeftButton)
    qtbot.mouseClick(deposit_view.enter_btn, QtCore.Qt.LeftButton)
    insert_deposit_view = assert_screen_shows_and_get_new_screen(
        InsertDepositView)

    # put money in slot
    qtbot.addWidget(insert_deposit_view)
    qtbot.mouseClick(insert_deposit_view.deposit_slot, QtCore.Qt.LeftButton)
    assert_screen_shows_and_get_new_screen(BalancePrintingView)
Beispiel #24
0
def test_withdrawal(qtbot):
    accounts, terminal_status = set_up_accounts_and_terminal_status()
    terminal_status.current_account = accounts[0]
    # monkey patch withdrawal slot to always be functional
    terminal_status.is_withdrawal_slot_functional = lambda: True
    select_transaction_view = SelectTransactionView()
    qtbot.addWidget(select_transaction_view)

    # choose withdrawal
    qtbot.mouseClick(select_transaction_view.r3_btn, QtCore.Qt.LeftButton)
    withdrawal_view = assert_screen_shows_and_get_new_screen(WithdrawalView)

    # enter amount of $10
    qtbot.addWidget(withdrawal_view)
    qtbot.mouseClick(withdrawal_view.btn_1, QtCore.Qt.LeftButton)
    qtbot.mouseClick(withdrawal_view.btn_0, QtCore.Qt.LeftButton)
    qtbot.mouseClick(withdrawal_view.enter_btn, QtCore.Qt.LeftButton)
    withdrawal_processed_view = assert_screen_shows_and_get_new_screen(
        WithdrawalProcessedView)

    # exit
    qtbot.addWidget(withdrawal_processed_view)
    qtbot.mouseClick(withdrawal_processed_view.r2_btn, QtCore.Qt.LeftButton)
    assert_screen_shows_and_get_new_screen(ExitView)
Beispiel #25
0
def test_advanced_search_fields(qtbot):
    # Initially, the number of fields should be zero
    assert (prog.searchForm.advancedSearchLayout.count() == 0)

    # Adding a new condition should add 3 widgets into the layout
    qtbot.mouseClick(prog.searchForm.addConditionBtn, QtCore.Qt.LeftButton)
    assert (prog.searchForm.advancedSearchLayout.count() == 3)

    # Adding another
    qtbot.mouseClick(prog.searchForm.addConditionBtn, QtCore.Qt.LeftButton)
    assert (prog.searchForm.advancedSearchLayout.count() == 6)

    # Removing a condition
    qtbot.mouseClick(prog.searchForm.removeConditionBtn, QtCore.Qt.LeftButton)
    assert (prog.searchForm.advancedSearchLayout.count() == 3)

    # Back to our initial state
    qtbot.mouseClick(prog.searchForm.removeConditionBtn, QtCore.Qt.LeftButton)
    assert (prog.searchForm.advancedSearchLayout.count() == 0)
Beispiel #26
0
def test_gui(qtbot):
    app = QApplication(sys.argv)
    screen = gui.MainWindow()
    screen.show()

    file = open("QL_output.txt", "w")
    file.write("hi")
    file.close()

    screen.qlInput.setText('form Box1HouseOwning {\
    "Did you sell a house in 2010?" hasSoldHouse: boolean\
    "Did you by a house in 2010?" hasBoughtHouse: boolean\
    "Did you enter a loan for maintenance/reconstruction?" hasMaintLoan: boolean\
}')
    qtbot.mouseClick(screen.parsebutton, QtCore.Qt.LeftButton)
    qtbot.mouseClick(screen.submit_button, QtCore.Qt.LeftButton)
    qtbot.mouseClick(screen.quitbutton, QtCore.Qt.LeftButton)

    file = open("QL_output.txt")
    testtext = file.read()
    file.close()
    # os.remove("QL_output.txt")

    assert testtext == 'Did you sell a house in 2010?undefined\nDid you by a house in 2010?undefined\nDid you enter a loan for maintenance/reconstruction?undefined\n'
Beispiel #27
0
    async def user(task_status):
        async with qtrio._core.wait_signal_context(dialog.shown):
            task_status.started()

        qtbot.keyClicks(dialog.edit_widget, "abc")
        qtbot.mouseClick(dialog.accept_button, QtCore.Qt.LeftButton)
Beispiel #28
0
def test_first_splash_ok_dont_show(botfirstsplash):
    qtbot, widget = botfirstsplash
    qtbot.mouseClick(widget.button_ok_dont_show, Qt.LeftButton)
    show_startup = widget.config.get('main', 'show_startup')
    assert not show_startup
def test_import_ticket_names(qtbot: qtbot.QtBot, mocker: MockerFixture):
    """Tests the import ticket names feature"""
    gui_manager.clear_windows()

    gui_manager.initialize()
    gui_manager.create_window(WindowType.CONTROL_PANEL)

    for window in gui_manager.window_list:
        qtbot.addWidget(window)

    # Import ticket names and prizes
    mocker.patch('PyQt5.QtWidgets.QFileDialog.exec')
    mocker.patch('PyQt5.QtWidgets.QFileDialog.selectedFiles',
                 return_value=['examples/ticket_names.txt'])
    gui_manager.window_list[0].import_ticket_names_action.trigger()
    mocker.patch('PyQt5.QtWidgets.QFileDialog.selectedFiles',
                 return_value=['examples/prizes.txt'])
    gui_manager.window_list[0].import_prizes_action.trigger()

    # Restart before starting
    raffle.restart()

    # Mock prize alerts
    mocker.patch('Ui.prize_alert.PrizeAlert')

    control_panel = gui_manager.window_list[1]

    ticket_numbers = list(range(1, 226))
    shuffle(ticket_numbers)
    for i, ticket_number in enumerate(ticket_numbers):
        # Draw the next ticket
        control_panel.ticket_number_line_edit.clear()
        qtbot.keyClicks(control_panel.ticket_number_line_edit,
                        str(ticket_number))
        qtbot.mouseClick(control_panel.draw_ticket_button, Qt.LeftButton)
        QApplication.processEvents()
        sleep(0.05)

        # Check the header info
        assert "Tickets Remaining: {}".format(len(ticket_numbers) - (i + 1)) == \
                control_panel.tickets_remaining_label.text()
        assert "Tickets Drawn: {}".format(
            i + 1) == control_panel.tickets_drawn_label.text()
        assert "Last Ticket Drawn: {}".format(ticket_number) == \
                control_panel.last_ticket_drawn_label.text()

        # Go through the tickets and do some checks
        for j, _ in enumerate(ticket_numbers):
            # Enter the ticket number
            control_panel.ticket_number_line_edit.clear()
            qtbot.keyClicks(control_panel.ticket_number_line_edit,
                            str(ticket_numbers[j]))
            # If this ticket has been drawn
            if j <= i:
                assert str(j + 1) in control_panel.number_drawn_label.text()
            else:
                assert 'Not Drawn Yet' in control_panel.number_drawn_label.text(
                )

        # Check the prize that is displayed
        next_prize = None
        for j in range(i + 2, len(ticket_numbers) + 1):
            next_prize = raffle.get_prize_from_number(j)
            if next_prize is not None:
                break

        if next_prize is not None:
            assert str(next_prize.number
                       ) in control_panel.next_prize_number_label.text()
            assert str(next_prize.description
                       ) in control_panel.next_prize_description_label.text()
        else:
            assert control_panel.next_prize_number_label.text() == "-"
            assert control_panel.next_prize_description_label.text() == "-"
def test_forgotReturnMainButton(forgot, qtbot):
    qtbot.mouseClick(forgot.returnButton, QtCore.Qt.LeftButton)
    assert True