Passed
Branch master (5f1104)
by Oleksandr
01:13
created

tests.test_regiments.RegimentTestCase.test_unknown_verbose_name()   A

Complexity

Conditions 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nop 1
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
import unittest
2
3
from verboselib import drop_language
4
from verboselib import set_language
5
6
from il2fb.commons.air_forces import AIR_FORCE
7
8
from il2fb.regiments import Regiment
9
from il2fb.regiments import Regiments
10
from il2fb.regiments import RegimentInfoLoader
11
12
13
class RegimentTestCase(unittest.TestCase):
14
15
  def tearDown(self):
16
    drop_language()
17
18
  def test_create_regiment(self):
19
    testee = Regiment(AIR_FORCE.VVS_RKKA, "foo")
20
21
    self.assertEqual(testee.air_force, AIR_FORCE.VVS_RKKA)
22
    self.assertEqual(testee.code_name, "foo")
23
24
  def test_unknown_verbose_name(self):
25
    testee = Regiment(AIR_FORCE.VVS_RKKA, "foo")
26
27
    set_language("en")
28
    self.assertIsNone(testee.verbose_name)
29
30
    set_language("ru")
31
    self.assertIsNone(testee.verbose_name)
32
33
    set_language("ja")
34
    self.assertIsNone(testee.verbose_name)
35
36
  def test_valid_verbose_name(self):
37
    testee = Regiment(AIR_FORCE.VVS_RKKA, "1st_AE_1AR")
38
39
    set_language("en")
40
    self.assertEqual(testee.verbose_name, "OIR AE of 1st AG VVS")
41
42
    set_language("ru")
43
    self.assertEqual(testee.verbose_name, "ОИРАЭ 1-й АГ")
44
45
    set_language("ja")
46
    self.assertEqual(testee.verbose_name, "OIR AE of 1st AG VVS")
47
48
  def test_verbose_name_missing_translation(self):
49
    testee = Regiment(AIR_FORCE.USN, "USN_VT_9B")
50
51
    set_language("en")
52
    self.assertEqual(testee.verbose_name, "VT-9 USS Essex CV-9")
53
54
    set_language("ru")
55
    self.assertEqual(testee.verbose_name, "VT-9 USS Essex CV-9")
56
57
    set_language("ja")
58
    self.assertEqual(testee.verbose_name, "VT-9 USS Essex CV-9")
59
60
  def test_unknown_help_text(self):
61
    testee = Regiment(AIR_FORCE.VVS_RKKA, "foo")
62
63
    set_language("en")
64
    self.assertIsNone(testee.help_text)
65
66
    set_language("ru")
67
    self.assertIsNone(testee.help_text)
68
69
    set_language("ja")
70
    self.assertIsNone(testee.help_text)
71
72
  def test_valid_help_text(self):
73
    testee = Regiment(AIR_FORCE.VVS_RKKA, "1st_AE_1AR")
74
75
    set_language("en")
76
    self.assertEqual(testee.help_text, "OIR AE of 1st AG VVS")
77
78
    set_language("ru")
79
    self.assertEqual(
80
      testee.help_text,
81
      (
82
        "Отдельная Истребительно-Разведываетльния Авиаэскадрилья "
83
        "1-й Авиагруппы"
84
      ),
85
    )  # yes, there are mistakes in word 'Разведываетльния'
86
87
    set_language("ja")
88
    self.assertEqual(testee.help_text, "OIR AE of 1st AG VVS")
89
90
  def test_help_text_missing_translation(self):
91
    testee = Regiment(AIR_FORCE.USN, "USN_VT_9B")
92
93
    self.assertEqual(
94
      testee.help_text,
95
      "US Navy Torpedo Squadron 9 USS Essex CV-9",
96
    )
97
98
    set_language("en")
99
    self.assertEqual(
100
      testee.help_text,
101
      "US Navy Torpedo Squadron 9 USS Essex CV-9",
102
    )
103
104
    set_language("ru")
105
    self.assertEqual(
106
      testee.help_text,
107
      "US Navy Torpedo Squadron 9 USS Essex CV-9",
108
    )
109
110
    set_language("ja")
111
    self.assertEqual(
112
      testee.help_text,
113
      "US Navy Torpedo Squadron 9 USS Essex CV-9",
114
    )
115
116
  def test_unknown_attributes(self):
117
    testee = Regiment(AIR_FORCE.USN, "USN_VT_9B")
118
    self.assertRaises(AttributeError, getattr, testee, 'abracadabra')
119
120
  def test_repr(self):
121
    testee = Regiment(AIR_FORCE.USN, "USN_VT_9B")
122
    self.assertEqual(repr(testee), "<Regiment 'USN_VT_9B'>")
123
124
  def test_to_primitive(self):
125
    testee = Regiment(AIR_FORCE.USN, "USN_VT_9B")
126
    primitive = testee.to_primitive()
127
128
    self.assertEqual(primitive.pop("code_name"), "USN_VT_9B")
129
    self.assertEqual(primitive.pop("verbose_name"), "VT-9 USS Essex CV-9")
130
    self.assertEqual(primitive.pop("help_text"), "US Navy Torpedo Squadron 9 USS Essex CV-9")
131
132
    air_force = primitive.pop("air_force")
133
    self.assertEqual(air_force.pop("name"), "USN")
134
    self.assertEqual(air_force.pop("default_flight_prefix"), "UN_NN")
135
    self.assertEqual(air_force.pop("value"), "un")
136
    self.assertEqual(air_force.pop("verbose_name"), "USN")
137
    self.assertEqual(air_force.pop("help_text"), "United States Navy")
138
139
    country = air_force.pop("country")
140
    self.assertEqual(country.pop("name"), "US")
141
    self.assertEqual(country.pop("verbose_name"), "United States")
142
    self.assertIsNone(country.pop("help_text"))
143
144
    self.assertFalse(country)
145
    self.assertFalse(air_force)
146
    self.assertFalse(primitive)
147
148
149
class RegimentsTestCase(unittest.TestCase):
150
151
  def setUp(self):
152
    self.regiments = Regiments()
153
154
  def test_get_by_code_name(self):
155
    result = self.regiments.get_by_code_name("1GvIAP")
156
    self.assertEqual(result.air_force, AIR_FORCE.VVS_RKKA)
157
158
  def test_get_by_code_name_is_cached(self):
159
    regiment1 = self.regiments.get_by_code_name("1GvIAP")
160
    regiment2 = self.regiments.get_by_code_name("1GvIAP")
161
    self.assertEqual(id(regiment1), id(regiment2))
162
163
  def test_get_by_code_name_invalid(self):
164
    self.assertRaises(LookupError, self.regiments.get_by_code_name, "foo")
165
166
  def test_filter_by_air_force(self):
167
    regiments = self.regiments.filter_by_air_force(AIR_FORCE.ALA)
168
    self.assertEqual(len(regiments), 119)
169
170
    result = self.regiments.get_by_code_name("NN")
171
    self.assertEqual(regiments[0], result)
172
173
  def test_filter_by_air_force_is_cached(self):
174
    regiments1 = self.regiments.filter_by_air_force(AIR_FORCE.ALA)
175
    regiments2 = self.regiments.filter_by_air_force(AIR_FORCE.ALA)
176
177
    for regiment1, regiment2 in zip(regiments1, regiments2):
178
      self.assertEqual(id(regiment1), id(regiment2))
179