Skip to content

Commit 3db723d

Browse files
committed
Update tests to account for API changes
1 parent 176f9fc commit 3db723d

1 file changed

Lines changed: 64 additions & 40 deletions

File tree

test/test_skill.py

Lines changed: 64 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
from neon_minerva.tests.skill_unit_test_base import SkillTestCase
3939

4040
from skill_date_time import TimeSkill
41+
from skill_date_time.api_data_models import TimeInLocationRequest
4142

4243
environ['TEST_SKILL_ENTRYPOINT'] = 'skill-date_time.neongeckocom'
4344

@@ -82,35 +83,40 @@ def clear():
8283

8384
self.skill.gui = real_gui
8485

85-
def test_get_display_date(self):
86+
@patch('skill_date_time.dig_for_message')
87+
@patch.object(TimeSkill, 'get_local_datetime')
88+
def test_get_display_date(self, get_time, dig_for_message):
8689
from neon_utils.user_utils import get_default_user_config
8790
config = get_default_user_config()
8891
config['user']['username'] = 'test_user'
8992
config['units']['date'] = "MDY"
9093
test_message = Message("test", {}, {"username": "test_user",
9194
"user_profiles": [config]})
95+
dig_for_message.return_value = test_message
9296

9397
test_date = dt.datetime(month=1, day=2, year=2000)
98+
get_time.return_value = test_date
9499

95-
date_str = self.skill.get_display_date(test_date, message=test_message)
100+
date_str = self.skill.get_display_date()
96101
self.assertEqual(date_str, "1/2/2000")
97102

98103
config['units']['date'] = "DMY"
99104
test_message = Message("test", {}, {"username": "test_user",
100105
"user_profiles": [config]})
101-
date_str = self.skill.get_display_date(test_date, message=test_message)
106+
dig_for_message.return_value = test_message
107+
108+
date_str = self.skill.get_display_date()
102109
self.assertEqual(date_str, "2/1/2000")
103110

104111
config['units']['date'] = "YMD"
105112
test_message = Message("test", {}, {"username": "test_user",
106113
"user_profiles": [config]})
107-
date_str = self.skill.get_display_date(test_date, message=test_message)
114+
dig_for_message.return_value = test_message
115+
date_str = self.skill.get_display_date()
108116
self.assertEqual(date_str, "2000/1/2")
109117

110-
now_date_str = self.skill.get_display_date()
111-
self.assertNotEqual(date_str, now_date_str)
112-
113-
def test_get_display_current_time(self):
118+
@patch('skill_date_time.dig_for_message')
119+
def test_get_display_current_time(self, dig_for_message):
114120
from neon_utils.user_utils import get_default_user_config
115121
config = get_default_user_config()
116122
config['user']['username'] = 'test_user'
@@ -121,7 +127,7 @@ def test_get_display_current_time(self):
121127
self.assertEqual(len(current_time.split(':')), 2)
122128

123129
# Specify location
124-
current_time_honolulu = self.skill.get_display_current_time("honolulu")
130+
current_time_honolulu = self.skill.get_display_current_time(TimeInLocationRequest(location="honolulu"))
125131
self.assertIsInstance(current_time_honolulu, str)
126132
self.assertEqual(len(current_time_honolulu.split(':')), 2)
127133
self.assertIn('m', current_time_honolulu.lower())
@@ -130,54 +136,65 @@ def test_get_display_current_time(self):
130136
config['units']['time'] = 24
131137
test_message = Message("test", {}, {"username": "test_user",
132138
"user_profiles": [config]})
139+
dig_for_message.return_value = test_message
133140

134141
# Default location, specify time 24h
135-
dt_utc = dt.datetime.now(dt.timezone.utc).replace(hour=23, minute=30)
136-
utc_time = self.skill.get_display_current_time(dt_utc=dt_utc,
137-
message=test_message)
138-
self.assertEqual(utc_time, "23:30")
142+
#dt_utc = dt.datetime.now(dt.timezone.utc).replace(hour=23, minute=30)
143+
utc_time = self.skill.get_display_current_time()
144+
self.assertEqual(len(utc_time.split()), 1) # "23:30"
139145

140-
# Specify location, 24h
141-
az_time = self.skill.get_display_current_time("phoenix", dt_utc,
142-
message=test_message)
143-
self.assertEqual(az_time, "16:30")
146+
## Specify location, 24h
147+
#az_time = self.skill.get_display_current_time("phoenix", dt_utc,
148+
# message=test_message)
149+
#self.assertEqual(az_time, "16:30")
144150

145151
self.skill.settings['use_ampm'] = True
146152
config['units']['time'] = 12
147153

148154
# Default location with AM/PM
149155
test_message = Message("test", {}, {"username": "test_user",
150156
"user_profiles": [config]})
151-
utc_time = self.skill.get_display_current_time(dt_utc=dt_utc,
152-
message=test_message)
153-
self.assertEqual(utc_time, "11:30 PM")
157+
dig_for_message.return_value = test_message
154158

155-
# Specify location with AM/PM
156-
az_time = self.skill.get_display_current_time("phoenix", dt_utc,
157-
message=test_message)
158-
self.assertEqual(az_time, "4:30 PM")
159+
utc_time = self.skill.get_display_current_time()
160+
self.assertEqual(len(utc_time.split()), 2) # "11:30 PM"
161+
162+
# # Specify location with AM/PM
163+
# az_time = self.skill.get_display_current_time("phoenix", dt_utc,
164+
# message=test_message)
165+
# self.assertEqual(az_time, "4:30 PM")
159166

160167
self.skill.settings['use_ampm'] = False
161168
# Default location, no AM/PM
162-
utc_time = self.skill.get_display_current_time(dt_utc=dt_utc,
163-
message=test_message)
164-
self.assertEqual(utc_time, "11:30")
169+
utc_time = self.skill.get_display_current_time()
170+
self.assertEqual(len(utc_time.split()), 1) # "23:30"
165171
# Specify location, always shows AM/PM
166-
az_time = self.skill.get_display_current_time("phoenix", dt_utc,
167-
message=test_message)
168-
self.assertEqual(az_time, "4:30 PM")
172+
az_time = self.skill.get_display_current_time(TimeInLocationRequest(location="phoenix"))
173+
self.assertEqual(len(az_time.split()), 2) # "4:30 PM"
169174

170-
def test_get_weekday(self):
175+
@patch.object(TimeSkill, 'get_local_datetime')
176+
def test_get_weekday(self, get_local_datetime):
177+
# Simple case
178+
get_local_datetime.return_value = dt.datetime.now(dt.timezone.utc)
171179
self.assertIsInstance(self.skill.get_weekday(), str)
180+
181+
# Relative day change
172182
today = dt.datetime.now(dt.timezone.utc)
183+
get_local_datetime.return_value = today
184+
today_day = self.skill.get_weekday()
173185
tomorrow = dt.datetime.now(dt.timezone.utc) + dt.timedelta(days=1)
174-
self.assertNotEqual(self.skill.get_weekday(today),
175-
self.skill.get_weekday(tomorrow))
176-
self.assertEqual(self.skill.get_weekday(location="Seattle"),
177-
self.skill.get_weekday(location="Portland"))
186+
get_local_datetime.return_value = tomorrow
187+
tomorrow_day = self.skill.get_weekday()
188+
self.assertNotEqual(today_day, tomorrow_day)
189+
190+
# With Location
191+
self.assertEqual(self.skill.get_weekday(TimeInLocationRequest(location="Seattle")),
192+
self.skill.get_weekday(TimeInLocationRequest(location="Portland")))
178193

194+
# Specific known case
179195
known_day = dt.datetime(day=1, month=1, year=2000)
180-
self.assertEqual(self.skill.get_weekday(known_day), "Saturday")
196+
get_local_datetime.return_value = known_day
197+
self.assertEqual(self.skill.get_weekday(), "Saturday")
181198

182199
@patch('skill_date_time.dig_for_message')
183200
@patch.object(TimeSkill, 'get_local_datetime')
@@ -212,12 +229,19 @@ def test_get_month_date(self, get_local_datetime, dig_for_message):
212229

213230
# TODO: Validate with non-mocked get_local_datetime and location input
214231

215-
def test_get_year(self):
232+
@patch.object(TimeSkill, 'get_local_datetime')
233+
def test_get_year(self, get_local_datetime):
234+
# Test simple case
235+
get_local_datetime.return_value = dt.datetime.now(dt.timezone.utc)
216236
self.assertIsInstance(self.skill.get_year(), str)
237+
238+
# Test known case
217239
date = datetime.datetime(month=1, day=1, year=2000)
218-
self.assertEqual(self.skill.get_year(date), "2000")
219-
self.assertEqual(self.skill.get_year(date, "Seattle"), "2000")
220-
self.assertIsInstance(self.skill.get_year(location="Seattle"), str)
240+
get_local_datetime.return_value = date
241+
self.assertEqual(self.skill.get_year(), "2000")
242+
# Test with location input
243+
self.assertEqual(self.skill.get_year(TimeInLocationRequest(location="Seattle")),
244+
"2000")
221245

222246
def test_get_next_leap_year(self):
223247
for year in (2000, 2001, 2002, 2003):

0 commit comments

Comments
 (0)