import pytest

from ..tab_pool import (
    register_tab,
    get_tab,
    clear_tabs,
    MissingTabError,
)


def setup_function(function):
    clear_tabs()


class TestTab(object):
    pass


@pytest.fixture
def tab():
    return TestTab()


def test_tab_is_registered(tab):
    register_tab('test-tab', tab)
    assert get_tab('test-tab') == tab


def test_exception_when_tab_not_registered(tab):
    with pytest.raises(MissingTabError):
        get_tab('test-tab')


def test_registering_twice_overrides_existing_tab(tab):
    register_tab('test-tab', tab)

    tab2 = TestTab()
    register_tab('test-tab', tab2)

    assert get_tab('test-tab') == tab2