from wagtail_personalisation.utils import impersonate_other_page


class Page(object):
    def __init__(self, path, depth, url_path, title):
        self.path = path
        self.depth = depth
        self.url_path = url_path
        self.title = title

    def __eq__(self, other):
        return self.__dict__ == other.__dict__


def test_impersonate_other_page():
    page = Page(path="/", depth=0, url_path="/", title="Hoi")
    other_page = Page(path="/other", depth=1, url_path="/other", title="Doei")

    impersonate_other_page(page, other_page)

    assert page == other_page

from wagtail_personalisation.utils import impersonate_other_page, exclude_variants


class Page(object):
    def __init__(self, path, depth, url_path, title):
        self.path = path
        self.depth = depth
        self.url_path = url_path
        self.title = title

    def __eq__(self, other):
        return self.__dict__ == other.__dict__


def test_impersonate_other_page():
    page = Page(path="/", depth=0, url_path="/", title="Hoi")
    other_page = Page(path="/other", depth=1, url_path="/other", title="Doei")

    impersonate_other_page(page, other_page)

    assert page == other_page


class Metadata(object):
    def __init__(self, is_canonical=True):
        self.is_canonical = is_canonical


class PersonalisationMetadataPage(object):
    def __init__(self):
        self.personalisation_metadata = Metadata()


def test_exclude_variants_includes_pages_with_no_metadata_property():
    page = PersonalisationMetadataPage()
    del page.personalisation_metadata
    result = exclude_variants([page])
    assert result == [page]


def test_exclude_variants_includes_pages_with_metadata_none():
    page = PersonalisationMetadataPage()
    page.personalisation_metadata = None
    result = exclude_variants([page])
    assert result == [page]


def test_exclude_variants_includes_pages_with_metadata_canonical():
    page = PersonalisationMetadataPage()
    result = exclude_variants([page])
    assert result == [page]


def test_exclude_variants_excludes_pages_with_metadata_not_canonical():
    page = PersonalisationMetadataPage()
    page.personalisation_metadata.is_canonical = False
    result = exclude_variants([page])
    assert result == []

Add tests for exclude_variants