aboutsummaryrefslogtreecommitdiff
path: root/tests/incite/collections/test_df_collection_item_base.py
blob: 7a8793ddcf9d29ffa453ea8acd97d01a79b53d5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from __future__ import annotations

from datetime import UTC, datetime
from typing import TYPE_CHECKING

import pytest

from generalresearch.incite.collections.base import (
    MYSQL_ALLOWED_COLL_TYPES,
    DFCollection,
    DFCollectionItem,
    DFCollectionType,
)

if TYPE_CHECKING:
    from generalresearch.incite.base import GRLDatasets
    from generalresearch.pg_helper import PostgresConfig


@pytest.mark.parametrize("df_coll_type", MYSQL_ALLOWED_COLL_TYPES)
class TestDFCollectionItemBase:
    def test_init(self, mnt_filepath: GRLDatasets, df_coll_type: DFCollectionType):
        collection = DFCollection(
            data_type=df_coll_type,
            offset="100D",
            start=datetime(year=1800, month=1, day=1, tzinfo=UTC),
            finished=datetime(year=1900, month=1, day=1, tzinfo=UTC),
            archive_path=mnt_filepath.archive_path(enum_type=df_coll_type),
        )

        item = DFCollectionItem()
        item._collection = collection

        assert isinstance(item, DFCollectionItem)


@pytest.mark.parametrize("df_coll_type", MYSQL_ALLOWED_COLL_TYPES)
class TestDFCollectionItemProperties:
    @pytest.mark.skip
    def test_filename(self, df_coll_type: DFCollectionType):
        pass


@pytest.mark.parametrize("df_coll_type", MYSQL_ALLOWED_COLL_TYPES)
class TestDFCollectionItemMethods:
    def test_has_mysql_false(
        self, mnt_filepath: GRLDatasets, df_coll_type: DFCollectionType
    ):
        collection = DFCollection(
            data_type=df_coll_type,
            offset="100D",
            start=datetime(year=1800, month=1, day=1, tzinfo=UTC),
            finished=datetime(year=1900, month=1, day=1, tzinfo=UTC),
            archive_path=mnt_filepath.archive_path(enum_type=df_coll_type),
        )

        instance1: DFCollectionItem = collection.items[0]
        assert not instance1.has_mysql()

    def test_has_mysql_true(
        self,
        thl_web_rr: PostgresConfig,
        mnt_filepath: GRLDatasets,
        df_coll_type: DFCollectionType,
    ):
        collection = DFCollection(
            data_type=df_coll_type,
            offset="100D",
            start=datetime(year=1800, month=1, day=1, tzinfo=UTC),
            finished=datetime(year=1900, month=1, day=1, tzinfo=UTC),
            archive_path=mnt_filepath.archive_path(enum_type=df_coll_type),
            pg_config=thl_web_rr,
        )

        # Has RR, assume unittest server is online
        instance2: DFCollectionItem = collection.items[0]
        assert instance2.has_mysql()

    @pytest.mark.skip
    def test_update_partial_archive(self, df_coll_type: DFCollectionType):
        pass