コード例 #1
0
    def test_movement_open_close_dialog(self):
        warehouse_page = PageWarehouse()
        warehouse_page.open_movements_tab()

        movement_page = PageWarehouseMovement()
        opened = movement_page.open_movement_dialog()
        closed = movement_page.close_movement_dialog()

        assert all([opened, closed])
コード例 #2
0
    def test_create_movement(self):
        quantity_for_move = 2
        warehouse_page = PageWarehouse()
        warehouse_page.open_settings_tab()

        stock_page = PageWarehouseStock()
        default_stock = stock_page.default_stock
        new_local_stock = stock_page.create_local_stock()

        warehouse_page.open_posting_tab()
        posting_page = PageWarehousePosting()
        goods_data = posting_page.create_random_posting(stock=default_stock, goods_qty=1, serial=True)['goods'][0]

        movement_page = PageWarehouseMovement()
        movement_page.open_page()
        movement_page.open_movement_dialog()
        movement_page.select_stock_from(default_stock)
        movement_page.select_stock_to(new_local_stock)
        movement_page.select_goods_from_dropdown(goods_name=goods_data['title'])
        movement_page.set_quantity(quantity_for_move, serials=goods_data['serials'])
        movement_page.move()

        residue_page = PageWarehouseResidue()
        residue_page.open_page()
        residue_new = residue_page.get_current_residue(product_name=goods_data['title'], stock_name=new_local_stock)
        residue_default = residue_page.get_current_residue(product_name=goods_data['title'], stock_name=default_stock)

        assert residue_default == goods_data['quantity'] - quantity_for_move
        assert residue_new == quantity_for_move
コード例 #3
0
 def __init__(self):
     self.sales = PageSales()
     self.settings = PageSettings()
     self.warehouse = PageWarehouse()
     self.posting = PageWarehousePosting()
     self.refunds = PageWarehousePostingRefunds()
コード例 #4
0
class PageWarehousePosting(WarehousePostingHelper):
    warehouse_page = PageWarehouse()

    def __init__(self, page_url=None):
        super().__init__()
        if page_url:
            self.__page_url = page_url
        self._create_refund_dialog = s(REFUND_DIALOG)
        self.__page_url = WH_POSTING_URL
        self.__preloader = s(PRELOADER_SPINNER)
        self.__document = POSTING_DOCUMENT_LABEL_X
        self.__document_view_dialog = s(POSTING_VIEW_DIALOG)
        self.__document_close_button = s(POSTING_VIEW_DIALOG_CLOSE_BUTTON)
        self.__create_refund_button = CREATE_REFUND_BUTTON
        self.__close_refund_dialog_button = s(REFUND_DIALOG_CLOSE_BUTTON)
        self.__submit_button = s(POSTING_SUBMIT_BUTTON)
        self.__info_notifier = s(NOTIFIES['blue'])
        self.__dialog_mask_active = s(DIALOG_MASK_JS)

    def create_random_posting(
            self,
            supplier=None,
            stock: str = 'Склад',
            serial: bool = False,
            goods_qty: int = 1,
            comment=None,
            invoice=None,
            category=None,  # Should be 'parts' or 'store'. Default: 'parts'
            barcode=None,
            mixed: bool = False,
            # if mixed goods is True
            normal_goods_qty: int = 1,
            serial_goods_qty: int = 1,
            serial_numbers_qty: int = None):

        if mixed:
            data = get_mixed_random_goods_data(
                serial_goods_qty=serial_goods_qty,
                normal_goods_qty=normal_goods_qty,
                numbers_qty=serial_numbers_qty)
        else:
            data = get_random_goods_data(serial=serial,
                                         quantity=goods_qty,
                                         numbers_qty=serial_numbers_qty)

        if supplier:
            data['supplier']['name'] = supplier
        if stock:
            data['stock'] = stock
        if comment:
            data.update(dict(comment=comment))
        if invoice:
            data.update(dict(invoice=invoice))
        if category:
            data['category'] = category

        self._open_create_posting_dialog()
        self._fill_posting_data(supplier=data['supplier']['name'],
                                stock=data['stock'])
        for goods in data['goods']:
            self._add_document(product_data=goods)
        self.__submit_button.click().should(be.not_.visible)

        label = get_fresh_document_label()
        data.update({'label': label})

        return data

    def open_page(self):
        browser.open(self.__page_url)

    def open_document(self, label):
        sel = self.__document.format(label)
        target = s(by.xpath(sel))
        s(DIALOG_MASK_JS).should(be.not_.visible)
        target.should(be.clickable).click()
        self.__document_view_dialog.should(be.visible)
        return True

    def close_document_by_button(self):
        if is_element_displayed(self.__document_view_dialog):
            self.__document_close_button.should(be.visible).click()
        self.__document_view_dialog.should(be.not_.visible)
        return True

    def close_document_by_mask(self):
        if is_element_displayed(self.__document_view_dialog):
            self.__dialog_mask_active.should(be.visible).click()
        self.__document_view_dialog.should(be.not_.visible)
        return True

    def open_refund_dialog(self):
        element = s(self.__create_refund_button).should(be.clickable)()
        self.__click_by_chains(element)
        self._create_refund_dialog.should(be.visible)

    def close_refund_dialog(self):
        if is_element_displayed(self._create_refund_dialog):
            self.__close_refund_dialog_button.should(be.clickable).click()
        self._create_refund_dialog.should(be.not_.visible)
        return True

    @staticmethod
    def __click_by_chains(element):
        ActionChains(
            driver()).move_to_element(element).click().release().perform()
コード例 #5
0
 def test_wh_open_tabs(self, tab, warehouse=PageWarehouse()):
     opened = warehouse.open_tab(tab_selector=tab)
     assert opened
コード例 #6
0
class TestWarehousePage(FixturesSettings, FixturesRegister):

    @pytest.mark.parametrize('tab', PageWarehouse().tabs)
    def test_wh_open_tabs(self, tab, warehouse=PageWarehouse()):
        opened = warehouse.open_tab(tab_selector=tab)
        assert opened