Ejemplo n.º 1
0
    def test_encode_wrong_order_id(self):
        # python test_edit_timetracks.py TestEditTimetracks.test_encode_wrong_order_id
        app = self.app
        widget = self.widget
        today = date.today()
        widget.set_employee_and_date(self.employee.employee_id, today)
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_F5, Qt.ShiftModifier) # modifier, delay
        app.processEvents()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_9) # modifier, delay
        app.processEvents()
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_9) # modifier, delay
        app.processEvents()
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_9) # modifier, delay
        app.processEvents()

        timer = QTimer()
        timer.timeout.connect(self._click_order_inexistant_box)
        timer.setSingleShot(True)
        timer.start(250)
        self.test_sucess = False

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)
        app.processEvents()

        assert self.test_sucess
Ejemplo n.º 2
0
    def test_encode_delivery_slip_without_quantity(self):
        self._pg_locks("on start")
        app = self.app
        widget = self.widget

        order = self._make_order()
        order.parts[0].qty = 10
        order.parts[0].sell_price = 10

        self.order_dao.change_order_parts_state(
            order.order_id, [order.parts[0].order_part_id],
            OrderPartStateType.ready_for_production)

        widget.set_data(order.order_id)
        widget.show()
        widget._start_edit()
        app.processEvents()

        self._pg_locks()

        # Finish editing
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)

        self.prepare_to_click_dialog("quantity_missing")

        # Submit form
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)

        assert self.dialog_test_result
        assert not session().query(DeliverySlip.delivery_slip_id).all()
Ejemplo n.º 3
0
    def test_print_preorder(self):
        # python test_integration.py TestEditOrderParts.test_print_preorder

        app = self.app
        widget = self.widget
        self._make_basic_preorder()
        self._encode_imputable_operation("Description2")
        self._encode_imputable_operation("Description3")
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        # We're going to have a modal dialog for the
        # preorder print. So we prepare to click on it.

        timer = QTimer()
        timer.timeout.connect(self._fill_preorder_print_dialog)
        timer.setSingleShot(True)
        timer.start(250)

        self.prepare_to_click_dialog("set_preorder_sent_state", 3)
        widget.preorderPrint()

        order = dao.order_dao.find_by_id(widget._current_order.order_id)
        self.assertEqual("ZuluHeader", order.preorder_print_note)
        self.assertEqual("ZuluFooter", order.preorder_print_note_footer)
Ejemplo n.º 4
0
    def _encode_part(self, order_part_human_identifier, nb_hours=2):
        widget = self.widget
        app = self.app

        k = [
            Qt.Key_0, Qt.Key_1, Qt.Key_2, Qt.Key_3, Qt.Key_4, Qt.Key_5,
            Qt.Key_6, Qt.Key_7, Qt.Key_8, Qt.Key_9, Qt.Key_A, Qt.Key_B,
            Qt.Key_C, Qt.Key_D, Qt.Key_E, Qt.Key_F, Qt.Key_G, Qt.Key_H,
            Qt.Key_I, Qt.Key_J, Qt.Key_K, Qt.Key_L, Qt.Key_M, Qt.Key_N,
            Qt.Key_O, Qt.Key_P, Qt.Key_Q, Qt.Key_R, Qt.Key_S, Qt.Key_T,
            Qt.Key_U, Qt.Key_V, Qt.Key_W, Qt.Key_X, Qt.Key_Y, Qt.Key_Z
        ]

        k = dict(
            list(
                zip([
                    "z{}".format(c)
                    for c in "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                ], k)))

        for digit in order_part_human_identifier:
            kdigit = "z{}".format(digit)
            QTest.keyEvent(QTest.Click, app.focusWidget(),
                           k[kdigit])  # modifier, delay
            app.processEvents()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)
        app.processEvents()
Ejemplo n.º 5
0
    def test_login(self):

        mainlog.debug("test_login")

        
        d = LoginDialog(None,user_session)
        d.show()
        mainlog.debug("test_login : shown")
        
        for i in range(100000):
            self.app.processEvents() # Linux needs a vrey long break

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_D) # modifier, delay
        self.app.processEvents()
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_K) # modifier, delay
        self.app.processEvents()

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Tab) # modifier, delay
        self.app.processEvents()

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_K) # modifier, delay
        self.app.processEvents()
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_K) # modifier, delay
        self.app.processEvents()

        d.buttons.button(QDialogButtonBox.Ok).click()
        self.app.processEvents()

        self.assertTrue(user_session.is_active())
Ejemplo n.º 6
0
    def test_encode_and_remove_unbillable(self):
        app = self.app
        widget = self.widget
        self._pg_locks("before init ")
        today = date.today()
        widget.set_employee_and_date(self.employee.employee_id, today)

        self._fix_focus(widget, widget.controller.view)
        self._encode_imputable_non_billable(nb_hours = 1)
        self._encode_imputable_non_billable(nb_hours = 2)
        self._encode_imputable_non_billable(nb_hours = 4)
        app.processEvents()

        widget.buttons.button(QDialogButtonBox.Ok).click()
        app.processEvents()

        tts = dao.timetrack_dao.all_work_for_employee_date(self.employee.employee_id,today)
        self.assertEqual(7.0, sum([tt.duration for tt in tts]))
        self.assertEqual(3,len(tts))

        widget.show()
        widget.set_employee_and_date(self.employee.employee_id, date.today())

        self._fix_focus(widget, widget.controller.view)
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_F8) # modifier, delay
        app.processEvents()

        widget.buttons.button(QDialogButtonBox.Ok).click()
        app.processEvents()

        tts = dao.timetrack_dao.all_work_for_employee_date(self.employee.employee_id,today)
        self.assertEqual(6.0, sum([tt.duration for tt in tts]))
        self.assertEqual(2,len(tts))
Ejemplo n.º 7
0
    def test_edit_order(self):

        app = self.app
        widget = self.widget
        mw = self.mw
        self._make_basic_preorder()

        m = widget.controller_part.view.model()
        widget.controller_part.view.setCurrentIndex(m.index(0, 0))

        widget.controller_part.view.setFocus(Qt.OtherFocusReason)
        QTest.keyEvent(QTest.Click, widget.controller_part.view,
                       Qt.Key_Up)  # modifier, delay
        QTest.keyEvent(QTest.Click, widget.controller_part.view,
                       Qt.Key_F5)  # modifier, delay
        app.processEvents()

        self._fill_order_part("Order part zero")

        QTest.keyEvent(QTest.Click, app.focusWidget(),
                       Qt.Key_Escape)  # modifier, delay
        QTest.keyEvent(QTest.Click, widget.controller_part.view, Qt.Key_F5,
                       Qt.ShiftModifier)  # modifier, delay
        app.processEvents()

        self._fill_order_part("Order part two")

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()
Ejemplo n.º 8
0
    def keyEvent(self, action, widget, key,
                 modifier=qt.Qt.NoModifier, delay=-1):
        """Sends a Qt key event.

        See QTest.keyEvent for details.
        """
        QTest.keyEvent(action, widget, key, modifier, delay)
        self.qWait(20)
Ejemplo n.º 9
0
    def keyEvent(self, action, widget, key,
                 modifier=qt.Qt.NoModifier, delay=-1):
        """Sends a Qt key event.

        See QTest.keyEvent for details.
        """
        QTest.keyEvent(action, widget, key, modifier, delay)
        self.qWait(20)
Ejemplo n.º 10
0
    def test_change_order_customer_cancelled(self):
        customer2 = self._customer_dao.make(
            "AAAA")  # Name chosen so it happens first int he customer dialog
        self._customer_dao.save(customer2)

        app = self.app
        widget = self.widget
        mw = self.mw
        self._make_basic_preorder()

        self._encode_imputable_operation("Description2")
        self._encode_imputable_operation("Description3")

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        # Make sure the test is set up correctly
        preorder = self.order_dao.find_by_id_frozen(
            widget._current_order.order_id)
        assert preorder.customer_id == self.customer.customer_id

        # We're going to have a modal dialog for the new
        # customer name. So we prepare to click on it.

        timer = QTimer()
        timer.timeout.connect(self._cancel_dialog)
        timer.setSingleShot(True)
        timer.start(1000)  # Had 250, my linux seems to prefer 1000

        widget.change_customer()  # blocks
        app.processEvents()
        # app.exec_() # Wait for the timer to shoot

        widget.setFocus(
            Qt.OtherFocusReason)  # This refocus was introduced for linux

        for i in range(1000):
            app.processEvents()  # Linux needs a break

        mainlog.debug("Pressing ctrl-S on this widget : {}".format(
            app.focusWidget()))
        # app.exec_()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        preorder = self.order_dao.find_by_id_frozen(
            widget._current_order.order_id)
        assert preorder.customer_id == self.customer.customer_id

        self.order_dao.delete(preorder.order_id)
        self.dao.customer_dao.delete(customer2.customer_id)
Ejemplo n.º 11
0
    def test_change_order_customer(self):
        customer2 = self._customer_dao.make(
            "AAAA")  # Name chosen so it happens first int he customer dialog
        self._customer_dao.save(customer2)

        app = self.app
        widget = self.widget
        mw = self.mw
        self._make_basic_preorder()

        self._encode_imputable_operation("Description2")
        self._encode_imputable_operation("Description3")

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        # Make sure the test is set up correctly
        preorder = self.order_dao.find_by_id_frozen(
            widget._current_order.order_id)
        assert preorder.customer_id == self.customer.customer_id

        # We're going to have a modal dialog for the new
        # customer name. So we prepare to click on it.

        timer = QTimer()
        timer.timeout.connect(self._lookup)
        timer.setSingleShot(True)
        timer.start(1000)

        widget.change_customer()
        # app.exec_() # Wait for the timer to shoot

        mainlog.debug("test_change_order_customer" * 10)
        mainlog.debug(app.focusWidget())

        widget.setFocus(
            Qt.OtherFocusReason)  # This refocus was introduced for linux
        app.processEvents()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        mainlog.debug("test_change_order_customer")

        preorder = self.order_dao.find_by_id_frozen(
            widget._current_order.order_id)
        assert preorder.customer_id == customer2.customer_id

        mainlog.debug("test_change_order_customer")

        self.order_dao.delete(preorder.order_id)
        self.dao.customer_dao.delete(customer2.customer_id)
Ejemplo n.º 12
0
    def test_edit_order_add_rename_documents(self):

        app = self.app
        widget = self.widget
        mw = self.mw

        widget.edit_new_order(self.customer_id)

        widget.controller_part.view.setFocus(Qt.OtherFocusReason)

        self._fill_order_part("Order part one")

        # Put the cursor back on the first line so the next document drop is tied to it.
        QTest.keyEvent(QTest.Click, widget.controller_part.view, Qt.Key_Up)
        app.processEvents()
        # app.exec_()

        # Drop a document
        tmp_file, tmp_path = self._make_tmp_file()
        mime_data = QMimeData()
        url = "file:///{}".format(os.path.abspath(tmp_path).replace('\\', '/'))
        mainlog.debug("Dropping at {}".format(QUrl(url).toString()))
        mime_data.setUrls([QUrl(url)])

        make_document_drop(widget.documents_widget.view, QPoint(10, 10),
                           mime_data)

        self._clear_tmp_file(tmp_file, tmp_path)

        # Now it has been dropped, rename it
        # (this tests things like non-delayed create, delayed rename)

        model = widget.documents_widget.model
        fn_ndx = model.prototype.index_of("filename")
        ndx = model.index(0, fn_ndx)
        model.setData(ndx, "New name", Qt.UserRole)

        #app.exec_()

        # Now save the whole order
        widget.setFocus()
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        order = dao.order_dao.find_by_id(widget._current_order.order_id)

        #app.exec_()
        self.assertEqual(1, len(order.parts[0].documents),
                         "One document was added on the first part")

        documents = [d for d in order.parts[0].documents]  # Set to array
        self.assertEqual("New name", documents[0].filename,
                         "Rename should've been applied")
Ejemplo n.º 13
0
    def test_happy(self):
        order = self._make_order()
        dao.order_dao.save(order)
        session().commit()
        order_id = order.order_id
        session().close()

        b = self.widget.buttons.button(QDialogButtonBox.Ok)

        self.widget.set_preorder( order_id)
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Enter)
        self.app.processEvents()
Ejemplo n.º 14
0
    def _scan(self,barcode):
        """ Simulate a real barcode scan.
        """

        bc = str(barcode) + str(BarCode(barcode)._checksum())

        mainlog.debug("Sending a scan : {}".format(bc))

        QTest.keyClicks(self.app.focusWidget(), bc) # modifier, delay
        self.app.processEvents()
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Enter) # modifier, delay
        self.app.processEvents()
Ejemplo n.º 15
0
    def test_create_order_and_report_on_operation(self):

        app = self.app
        widget = self.widget
        mw = self.mw
        self._make_basic_preorder()
        # add some more operation
        self._encode_not_imputable_operation()

        widget._set_state(OrderStatusType.order_ready_for_production)
        self.prepare_to_click_dialog("confirm_estimate_sent")

        # Save
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        order = dao.order_dao.find_by_id(widget._current_order.order_id)

        mainlog.debug(order)
        mainlog.debug(order.parts[0])
        mainlog.debug(order.parts[0].production_file[0])

        operation = order.parts[0].production_file[0].operations[0]
        employee_id = dao.employee_dao.any().employee_id
        d1 = datetime(2013, 0o5, 26, 8)

        self.server = JsonCallWrapper(ClockService(),
                                      JsonCallWrapper.IN_PROCESS_MODE)
        self.server.record_pointage_on_operation(
            operation.operation_id, employee_id, d1, "nostromo",
            TaskActionReportType.start_task, None)

        d2 = datetime(2013, 5, 26, 10, 54)
        self.server.record_pointage_on_operation(
            operation.operation_id, employee_id, d2, "nostromo",
            TaskActionReportType.stop_task, None)

        order = dao.order_dao.find_by_id(widget._current_order.order_id)
        operation = order.parts[0].production_file[0].operations[0]

        widget.edit_new_order(
            self.customer.customer_id)  # Force the order reset below
        app.processEvents()
        widget.reset_order(order.order_id, overwrite=True)
        widget.refresh_action()

        m = widget.controller_operation.model
        self.assertEqual(2.9, m.data(m.index(0, 4), Qt.UserRole))

        m = widget.controller_part.model
        self.assertEqual(80, m.data(m.index(0, 4), Qt.UserRole))
        self.assertEqual(111, m.data(m.index(0, 6), Qt.UserRole))
Ejemplo n.º 16
0
    def _fill_in_valid_credentials(self):
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_D) # modifier, delay
        self.app.processEvents()
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_K) # modifier, delay
        self.app.processEvents()

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Tab) # modifier, delay
        self.app.processEvents()

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_K) # modifier, delay
        self.app.processEvents()
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_K) # modifier, delay
        self.app.processEvents()
Ejemplo n.º 17
0
    def test_create_order_and_report_on_order(self):

        # python test_integration.py TestEditOrderParts.test_create_order_and_report_on_order

        app = self.app
        widget = self.widget
        mw = self.mw
        clock_server = ClockServer(dao)

        self._make_basic_preorder()
        app.processEvents()

        widget._set_state(OrderStatusType.order_ready_for_production)
        self.prepare_to_click_dialog("confirm_estimate_sent")

        # Save
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()
        app.processEvents()
        app.processEvents()

        self.assertTrue(widget._current_order.order_id > 0)

        order = dao.order_dao.find_by_id(widget._current_order.order_id)
        bc = BarCodeIdentifier.code_for(order, self.opdef_order)

        employee_id = dao.employee_dao.any().employee_id
        d1 = datetime(2013, 0o5, 26, 8)
        # clock_server.recordPointage(bc,employee_id, datetime.strftime(d1, "%Y%m%dT%H:%M:%S"),"Nostromo")
        d2 = datetime(2013, 0o5, 26, 10, 54)
        # clock_server.recordPointage(bc,employee_id, datetime.strftime(d2, "%Y%m%dT%H:%M:%S"),"Nostromo")

        self.server = JsonCallWrapper(ClockService(),
                                      JsonCallWrapper.IN_PROCESS_MODE)
        self.server.record_pointage_on_order(
            order.order_id, self.opdef_order.operation_definition_id,
            employee_id, d1, "nostromo", TaskActionReportType.start_task, None)

        self.server.record_pointage_on_order(
            order.order_id, self.opdef_order.operation_definition_id,
            employee_id, d2, "nostromo", TaskActionReportType.stop_task, None)

        order = dao.order_dao.find_by_id(widget._current_order.order_id)

        widget.edit_new_order(
            self.customer.customer_id)  # Force the order reset below
        app.processEvents()
        widget.reset_order(order.order_id, overwrite=True)
        app.processEvents()
Ejemplo n.º 18
0
    def _click_context_menu(self):
        mainlog.debug("hello " * 100)

        active_widget = self.app.activePopupWidget()
        mainlog.debug(active_widget)
        # active_widget = self.app.focusWidget()
        mainlog.debug(active_widget)
        active_widget.setFocus()

        #QApplication.
        for i in range(10):
            self.app.processEvents()

        QTest.keyEvent(QTest.Click, active_widget, Qt.Key_Down)  # enter menu
        for i in range(10):
            self.app.processEvents()
        QTest.keyEvent(QTest.Click, active_widget,
                       Qt.Key_Down)  # skip modify command
        self.app.processEvents()
        QTest.keyEvent(QTest.Click, active_widget,
                       Qt.Key_Down)  # Skip priority
        self.app.processEvents()

        import time
        for i in range(50):
            # time.sleep(0.1)
            self.app.processEvents()

        QTest.keyEvent(
            QTest.Click, active_widget,
            Qt.Key_Enter)  # At this point we're on "order part -> aborted"
        self.app.processEvents()
        mainlog.debug("_click_context_menu : done")
Ejemplo n.º 19
0
    def test_encode_supply_order(self):
        supplier = blank_dto(Supplier)
        supplier.fullname = "Tessier-Ashpool"
        supplier_id = supplier_service.save(supplier)
        supplier = supplier_service.find_by_id(supplier_id)

        self._pg_locks("on start")
        app = self.app
        widget = self.widget
        widget.edit_new(supplier)

        self.encode_text("PARTONE")
        app.processEvents()
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)
        app.processEvents()

        self.encode_text("11")
        app.processEvents()
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)
        app.processEvents()

        self.encode_text("22")
        app.processEvents()
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)
        app.processEvents()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()
Ejemplo n.º 20
0
    def test_encode_a_few_timetracks(self):

        # python test_integration.py TestEditTimetracks.test_create_order_and_report_on_order

        app = self.app
        widget = self.widget
        self._pg_locks("before init ")
        widget.set_employee_and_date(self.employee.employee_id, date.today())

        self._encode_imputable_operation(5)

        self._pg_locks("after encoding a row")

        widget.buttons.button(QDialogButtonBox.Ok).click()

        self._pg_locks("after OK click")

        # Now we check the time was actually reported

        session().refresh(self._order)
        self.assertEqual( 5.0, self._order.parts[0].total_hours)

        session().commit()
        self._pg_locks("after commit")

        # Now we reopen the dialog and make sure our work still appears
        # there.

        widget.set_employee_and_date(self.employee.employee_id, date.today())

        self._pg_locks("after set employee and before show")
        widget.show()
        self._pg_locks("After second show")

        app.processEvents()

        self._pg_locks("After process events")
        app.processEvents()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_F5, Qt.ShiftModifier) # modifier, delay
        app.processEvents()
        self._encode_imputable_operation()
        app.processEvents()

        widget.buttons.button(QDialogButtonBox.Ok).click()

        # app.exec_()

        self._pg_locks("when test finished")
Ejemplo n.º 21
0
    def test_encode_normal_delivery_slip(self):
        self._pg_locks("on start")
        app = self.app
        widget = self.widget

        order = self._make_order()
        order.parts[0].qty = 10
        order.parts[0].sell_price = 10

        self.order_dao.change_order_parts_state(
            order.order_id, [order.parts[0].order_part_id],
            OrderPartStateType.ready_for_production)

        self.show_order(order)

        widget.set_data(order.order_id)
        widget.show()
        widget._start_edit()
        app.processEvents()

        self._encode_part("5")

        self._pg_locks()

        for i in range(10000):
            # print(i)
            app.processEvents()

        self.prepare_to_click_dialog("confirmDSCreation")

        # from dialog_utils import confirmationBox
        # confirmationBox("uytyutyutyutyu","iyiuyuiyiuyuiy","teststetstetsets")
        # confirmationBox("uytyutyutyutyu","iyiuyuiyiuyuiy","teststetstetsets")

        mainlog.debug("submit form")
        for i in range(10000):
            # print(i)
            app.processEvents()
        # Submit form
        print((app.focusWidget()))
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Enter)

        last_slip_id = self.delivery_slip_dao.find_last_slip_id()
        ds = self.delivery_slip_dao.find_by_id(last_slip_id)

        assert ds.delivery_slip_parts[0].quantity_out == 5
        assert ds.delivery_slip_parts[0].order_part_id == order.parts[
            0].order_part_id
Ejemplo n.º 22
0
    def test_copy_paste_from_order_overview_to_order_edit(self):
        order = self._make_order()  # An order with one part
        order_part = self._order_part_dao.make(order)
        order_part.description = u"Part 2"
        order_part.notes = "Notes 2"
        order_part.position = 2
        self._order_part_dao.save(order_part)
        order_part = self._order_part_dao.make(order)
        order_part.description = u"Part 3"
        order_part.notes = "Notes 3"
        order_part.position = 3
        self._order_part_dao.save(order_part)

        self._order_dao.change_order_state(
            order.order_id, OrderStatusType.order_ready_for_production)
        # self._order_dao.recompute_position_labels(order)

        ops = self.dao.operation_dao.operations_for_order_parts_frozen(
            [1011, 1014, 1013])
        assert ops[1011]
        assert 1013 not in ops
        assert 1014 not in ops

        self.stack.setCurrentWidget(self.order_overview_widget)
        # self.order_overview_widget.month_today()
        self.order_overview_widget.refresh_action()
        self.order_overview_widget.retake_focus()

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_A,
                       Qt.ControlModifier)  # modifier, delay
        self.app.processEvents()

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_C,
                       Qt.ControlModifier)  # modifier, delay
        self.app.processEvents()

        # Now that we have copied, we'd like to paste !

        self.stack.setCurrentWidget(self.edit_order_widget)
        self.edit_order_widget.edit_new_order(self.customer.customer_id)
        self.edit_order_widget.controller_part.view.setFocus(
            Qt.OtherFocusReason)

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_V,
                       Qt.ControlModifier)  # modifier, delay
        self.app.processEvents()

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        self.app.processEvents()

        order = self.order_dao.find_by_id(order.order_id)
        self.assertEqual(3, len(order.parts))
        self.assertEqual(1, len(order.parts[0].operations))
        self.assertEqual(0, len(order.parts[1].operations))

        self.assertEqual(u"Notes 2", order.parts[1].notes)
        self.assertEqual(u"Notes 3", order.parts[2].notes)
Ejemplo n.º 23
0
    def test_edit_order_documents(self):

        app = self.app
        widget = self.widget
        mw = self.mw

        # order = self._make_order()
        # order_id = order.order_id
        # widget.reset_order(order.order_id)

        widget.edit_new_order(self.customer_id)

        widget.controller_part.view.setFocus(Qt.OtherFocusReason)

        # QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_Escape) # modifier, delay
        # QTest.keyEvent(QTest.Click, widget.controller_part.view, Qt.Key_F5, Qt.ShiftModifier) # modifier, delay
        # app.processEvents()

        self._fill_order_part("Order part two")

        # Put the cursor back on the first line so the next document drop is tied to it.
        QTest.keyEvent(QTest.Click, widget.controller_part.view, Qt.Key_Up)
        app.processEvents()
        # app.exec_()

        tmp_file, tmp_path = self._make_tmp_file()
        mime_data = QMimeData()
        url = "file:///{}".format(os.path.abspath(tmp_path).replace('\\', '/'))
        mainlog.debug("Dropping at {}".format(QUrl(url).toString()))
        mime_data.setUrls([QUrl(url)])
        make_document_drop(widget.documents_widget.view, QPoint(10, 10),
                           mime_data)

        self._clear_tmp_file(tmp_file, tmp_path)

        # That's fine, but I'll need to pilot the file chooser dialog, and that's hard :-(
        # But even if I find my way around that, I'll have to mock the file server... :-(
        # b.click()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        order = dao.order_dao.find_by_id(widget._current_order.order_id)

        #app.exec_()
        self.assertEqual(1, len(order.parts[0].documents),
                         "One document was added on the first part")
Ejemplo n.º 24
0
    def test_find_happy(self):
        order = self._make_order()
        dao.order_dao.save(order)
        session().commit()

        self.show_order(order)
        b = self.widget.buttons.button(QDialogButtonBox.Ok)

        mainlog.debug(str(order.preorder_label))

        self.widget.search_criteria.setText(str(order.accounting_label))

        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Enter)

        self.app.processEvents()
        self.assertEqual(1, self.widget.search_results_model.rowCount())
Ejemplo n.º 25
0
    def _accept_open_dialog(self):
        if self.timer_has_run_once:
            return
        else:
            self.timer_has_run_once = True

        self.timer.stop()

        dialog_object_name = self.dialog_to_click[0]
        self.dialog_to_click = self.dialog_to_click[1:len(self.dialog_to_click
                                                          )]

        trail = ""
        o = self.app.activeModalWidget()
        mainlog.debug(
            "Looking for {}. Currently focused widget is {} (name = {})".
            format(dialog_object_name, o, o.objectName()))

        while o and o.objectName() != dialog_object_name:
            trail += str(o.objectName()) + ","
            o = o.parent()

        if o:
            mainlog.debug("timer triggered the expected click on {}".format(
                dialog_object_name))
            self.dialog_test_result = True
            QTest.keyEvent(QTest.Click, self.app.activeModalWidget(),
                           Qt.Key_Enter)
            mainlog.debug("Clicked on {} !".format(dialog_object_name))

            if len(self.dialog_to_click) > 0:
                mainlog.debug("timer triggered again on {}".format(
                    self.dialog_to_click[0]))
                self.timer_has_run_once = False
                self.timer.start(1000)

        else:
            # You must assert on dialog_test_result otherwise the failure
            # won't be seen (even igf you do self.fail() down here...)
            # I think it's because PySide still catches exceptions even
            # after self.app.exit()
            self.dialog_test_result = False
            # self.app.exit()
            mainlog.error(
                "Didn't find the expected widget {}. The trail was {}".format(
                    dialog_object_name, trail))
Ejemplo n.º 26
0
    def test_new_order_is_a_preorder(self):  # passes
        app = self.app
        widget = self.widget
        mw = self.mw

        mainlog.debug(str(self.customer))

        widget.edit_new_order(self.customer.customer_id)

        #app.exec_()
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        order = dao.order_dao.find_by_id(widget._current_order.order_id)

        assert order.state == OrderStatusType.preorder_definition
        assert order.preorder_label is not None
        assert order.accounting_label == None
Ejemplo n.º 27
0
    def test_new_order_is_not_a_preorder(self):  # passes
        app = self.app
        widget = self.widget
        mw = self.mw

        widget.edit_new_order(self.customer.customer_id)
        widget.order_state_label.set_value(
            OrderStatusType.order_ready_for_production)
        self.prepare_to_click_dialog("confirm_estimate")

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        order = dao.order_dao.find_by_id(widget._current_order.order_id)

        assert order.state == OrderStatusType.order_ready_for_production
        assert order.preorder_label is None
        assert order.accounting_label is not None
Ejemplo n.º 28
0
    def test_find_fails(self):
        self._make_order()
        session().commit()
        self._make_order()
        session().commit()

        self.widget.search_criteria.setText("A")
        self.prepare_to_click_dialog("filter_is_too_short")
        print("1" * 10)
        self._fix_focus(self.widget, self.widget.search_criteria)
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Enter)

        print("2" * 10)
        self.widget.search_criteria.setText("")
        self.prepare_to_click_dialog("filter_is_empty")
        self._fix_focus(self.widget, self.widget.search_criteria)
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Enter)

        print("3" * 10)

        # Monkey patching !
        old_max = dao.order_part_dao.MAX_RESULTS
        dao.order_part_dao.MAX_RESULTS = 1
        self.widget.search_criteria.setText(self.customer.fullname)
        self.prepare_to_click_dialog("too_many_results")
        self._fix_focus(self.widget, self.widget.search_criteria)
        QTest.keyEvent(QTest.Click, self.app.focusWidget(), Qt.Key_Enter)
        self.assertEqual(1, self.widget.search_results_model.rowCount())

        dao.order_part_dao.MAX_RESULTS = old_max
Ejemplo n.º 29
0
    def encode_text(self, text):
        k = [
            Qt.Key_0, Qt.Key_1, Qt.Key_2, Qt.Key_3, Qt.Key_4, Qt.Key_5,
            Qt.Key_6, Qt.Key_7, Qt.Key_8, Qt.Key_9, Qt.Key_A, Qt.Key_B,
            Qt.Key_C, Qt.Key_D, Qt.Key_E, Qt.Key_F, Qt.Key_G, Qt.Key_H,
            Qt.Key_I, Qt.Key_J, Qt.Key_K, Qt.Key_L, Qt.Key_M, Qt.Key_N,
            Qt.Key_O, Qt.Key_P, Qt.Key_Q, Qt.Key_R, Qt.Key_S, Qt.Key_T,
            Qt.Key_U, Qt.Key_V, Qt.Key_W, Qt.Key_X, Qt.Key_Y, Qt.Key_Z
        ]

        k = dict(
            list(
                zip([
                    "z{}".format(c)
                    for c in "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                ], k)))
        app = self.app

        for digit in text:
            kdigit = "z{}".format(digit)
            QTest.keyEvent(QTest.Click, app.focusWidget(),
                           k[kdigit])  # modifier, delay
            app.processEvents()
Ejemplo n.º 30
0
    def test_mix_with_timetracks_managed_by_code(self):

        today = date.today()
        tt = dao.timetrack_dao.create(self.nb_task,self.employee,12,datetime.now(),today)
        tt.managed_by_code = True
        dao.timetrack_dao._recompute_presence_on_timetracks(self.employee.employee_id,today,[tt])
        session().commit()

        app = self.app
        widget = self.widget
        self._pg_locks("before init ")
        widget.set_employee_and_date(self.employee.employee_id, today)

        self._fix_focus(widget, widget.controller.view) 
        
        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_F5, Qt.ShiftModifier) # modifier, delay
        app.processEvents()
        self._encode_imputable_operation(5)
        widget.buttons.button(QDialogButtonBox.Ok).click()

        tts = dao.timetrack_dao.all_work_for_employee_date(self.employee.employee_id,today)
        self.assertEqual(12.0 + 5.0, sum([tt.duration for tt in tts]))
        self.assertEqual(2,len(tts))
Ejemplo n.º 31
0
    def test_delete_an_operation(self):
        # python test_integration.py TestEditOrderParts.test_delete_an_operation

        order = self._make_order()
        order_id = order.order_id

        app = self.app
        widget = self.widget
        widget.reset_order(order.order_id, overwrite=True)
        widget.refresh_action()

        session().close()

        widget.controller_operation.view.setFocus(Qt.OtherFocusReason)
        QTest.keyEvent(QTest.Click, app.focusWidget(),
                       Qt.Key_F8)  # modifier, delay
        app.processEvents()

        QTest.keyEvent(QTest.Click, app.focusWidget(), Qt.Key_S,
                       Qt.ControlModifier)  # modifier, delay
        app.processEvents()

        order = dao.order_dao.find_by_id(order_id)
        self.assertTrue(not order.parts[0].operations)