import sys

from qtpy import QtWidgets

from pyqtribbon import RibbonBar, RibbonCategoryStyle


def test_filemenu():
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        # Central widget
        window = QtWidgets.QMainWindow()

        # Ribbon bar
        ribbonbar = RibbonBar()
        window.setMenuBar(ribbonbar)

        categories1 = ribbonbar.addCategoriesBy({
            'Category 6': {
                "style": RibbonCategoryStyle.Normal,
                "panels": {
                    "Panel 1": {
                        "showPanelOptionButton": True,
                        "widgets": {
                            "Button 1": {
                                "type": "Button",
                                "arguments": {
                                    "text": "Button",
                                    "tooltip": "This is a tooltip",
                                }
                            },
                            "Button 2": {
                                "type": "Button",
                                "arguments": {
                                    "text": "Button 2",
                                    "tooltip": "This is a tooltip",
                                }
                            },
                        }
                    },
                    "Panel 2": {
                        "showPanelOptionButton": False,
                        "widgets": {
                            "Button 3": {
                                "type": "Button",
                                "arguments": {
                                    "text": "Button 3",
                                    "tooltip": "This is a tooltip",
                                }
                            },
                            "Button 4": {
                                "type": "Button",
                                "arguments": {
                                    "text": "Button 4",
                                    "tooltip": "This is a tooltip",
                                }
                            },
                        }
                    },
                }
            }
        })

        assert categories1['Category 6'].title() == "Category 6"
        assert categories1['Category 6'].categoryStyle() == RibbonCategoryStyle.Normal
        assert categories1['Category 6'].panels()['Panel 1'].title() == "Panel 1"
        assert categories1['Category 6'].panels()['Panel 1']._showPanelOptionButton
        assert categories1['Category 6'].panels()['Panel 1'].widgets()[0].text() == "Button"
        assert categories1['Category 6'].panels()['Panel 1'].widgets()[0].toolTip() == "This is a tooltip"
        assert categories1['Category 6'].panels()['Panel 1'].widgets()[1].text() == "Button 2"
        assert categories1['Category 6'].panels()['Panel 1'].widgets()[1].toolTip() == "This is a tooltip"
        assert categories1['Category 6'].panels()['Panel 2'].title() == "Panel 2"
        assert not categories1['Category 6'].panels()['Panel 2']._showPanelOptionButton
        assert categories1['Category 6'].panels()['Panel 2'].widgets()[0].text() == "Button 3"
        assert categories1['Category 6'].panels()['Panel 2'].widgets()[0].toolTip() == "This is a tooltip"
        assert categories1['Category 6'].panels()['Panel 2'].widgets()[1].text() == "Button 4"
        assert categories1['Category 6'].panels()['Panel 2'].widgets()[1].toolTip() == "This is a tooltip"

        # Show the window
        window.resize(1800, 350)
        window.show()
        sys.exit(app.exec_())
