aboutsummaryrefslogtreecommitdiff
path: root/tests/wxet/models/test_definitions.py
blob: 543b9f1113f27d2a4a88233ecd3fc1ba51629664 (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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import pytest


class TestWXETStatusCode1:

    def test_is_pre_task_entry_fail_pre(self):
        from generalresearch.wxet.models.definitions import (
            WXETStatusCode1,
        )

        assert WXETStatusCode1.UNKNOWN.is_pre_task_entry_fail
        assert WXETStatusCode1.WXET_FAIL.is_pre_task_entry_fail
        assert WXETStatusCode1.WXET_ABANDON.is_pre_task_entry_fail

    def test_is_pre_task_entry_fail_post(self):
        from generalresearch.wxet.models.definitions import (
            WXETStatusCode1,
        )

        assert not WXETStatusCode1.BUYER_OVER_QUOTA.is_pre_task_entry_fail
        assert not WXETStatusCode1.BUYER_DUPLICATE.is_pre_task_entry_fail
        assert not WXETStatusCode1.BUYER_TASK_NOT_AVAILABLE.is_pre_task_entry_fail

        assert not WXETStatusCode1.BUYER_ABANDON.is_pre_task_entry_fail
        assert not WXETStatusCode1.BUYER_FAIL.is_pre_task_entry_fail
        assert not WXETStatusCode1.BUYER_QUALITY_FAIL.is_pre_task_entry_fail
        assert not WXETStatusCode1.BUYER_POSTBACK_NOT_RECEIVED.is_pre_task_entry_fail
        assert not WXETStatusCode1.COMPLETE.is_pre_task_entry_fail


class TestCheckWXETStatusConsistent:

    def test_completes(self):

        from generalresearch.wxet.models.definitions import (
            WXETStatus,
            WXETStatusCode1,
            check_wxet_status_consistent,
        )

        with pytest.raises(AssertionError) as cm:
            check_wxet_status_consistent(
                status=WXETStatus.COMPLETE,
                status_code_1=WXETStatusCode1.UNKNOWN,
                status_code_2=None,
            )

        assert (
            "Invalid StatusCode1 when Status=COMPLETE. Use WXETStatusCode1.COMPLETE"
            == str(cm.value)
        )

    def test_abandon(self):

        from generalresearch.wxet.models.definitions import (
            WXETStatus,
            WXETStatusCode1,
            check_wxet_status_consistent,
        )

        with pytest.raises(AssertionError) as cm:
            check_wxet_status_consistent(
                status=WXETStatus.ABANDON,
                status_code_1=WXETStatusCode1.COMPLETE,
                status_code_2=None,
            )
        assert (
            "Invalid StatusCode1 when Status=ABANDON. Use WXET_ABANDON or BUYER_ABANDON"
            == str(cm.value)
        )

    def test_fail(self):

        from generalresearch.wxet.models.definitions import (
            WXETStatus,
            WXETStatusCode1,
            check_wxet_status_consistent,
        )

        for sc1 in [
            WXETStatusCode1.COMPLETE,
            WXETStatusCode1.WXET_ABANDON,
            WXETStatusCode1.WXET_ABANDON,
        ]:
            with pytest.raises(AssertionError) as cm:
                check_wxet_status_consistent(
                    status=WXETStatus.FAIL,
                    status_code_1=sc1,
                    status_code_2=None,
                )
            assert "Invalid StatusCode1 when Status=FAIL." == str(cm.value)

    def test_status_code_2(self):
        """Any StatusCode2 should fail if the StatusCode1 isn't
        StatusCode1.WXET_FAIL
        """

        from generalresearch.wxet.models.definitions import (
            WXETStatus,
            WXETStatusCode1,
            WXETStatusCode2,
            check_wxet_status_consistent,
        )

        for sc2 in WXETStatusCode2:
            with pytest.raises(AssertionError) as cm:
                check_wxet_status_consistent(
                    status=WXETStatus.FAIL,
                    status_code_1=WXETStatusCode1.COMPLETE,
                    status_code_2=sc2,
                )

            assert "Invalid StatusCode1 when Status=FAIL." == str(cm.value)