from __future__ import absolute_import

import pytest
import warnings
from qtpy import PYQT4, PYSIDE, PYSIDE2

"""Test QDesktopServices split in Qt5."""

@pytest.mark.skipif(PYSIDE2, reason="It fails on PySide2")
def test_qstandarpath():
    """Test the qtpy.QStandardPaths namespace"""
    from qtpy.QtCore import QStandardPaths

    assert QStandardPaths.StandardLocation is not None

    # Attributes from QDesktopServices shouldn't be in QStandardPaths
    with pytest.raises(AttributeError) as excinfo:
        QStandardPaths.setUrlHandler

@pytest.mark.skipif(PYSIDE2, reason="It fails on PySide2")
def test_qdesktopservice():
    """Test the qtpy.QDesktopServices namespace"""
    from qtpy.QtGui import QDesktopServices

    assert QDesktopServices.setUrlHandler is not None


@pytest.mark.skipif(not (PYQT4 or PYSIDE), reason="Warning is only raised in old bindings")
def test_qdesktopservice_qt4_pyside():
    from qtpy.QtGui import QDesktopServices
    # Attributes from QStandardPaths should raise a warning when imported
    # from QDesktopServices
    with warnings.catch_warnings(record=True) as w:
        # Cause all warnings to always be triggered.
        warnings.simplefilter("always")
        # Try to  import QtHelp.
        QDesktopServices.StandardLocation

        assert len(w) == 1
        assert issubclass(w[-1].category, DeprecationWarning)
        assert "deprecated" in str(w[-1].message)
