nepali 0.5.5__py3-none-any.whl → 1.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. nepali/__init__.py +1 -1
  2. nepali/char.py +102 -81
  3. nepali/constants.py +66 -0
  4. nepali/date_converter.py +334 -0
  5. nepali/datetime/__init__.py +13 -14
  6. nepali/datetime/_datetime.py +391 -402
  7. nepali/datetime/_formatter.py +325 -0
  8. nepali/datetime/_humanize.py +117 -132
  9. nepali/datetime/_nepalimonth.py +118 -0
  10. nepali/datetime/_nepaliweek.py +125 -0
  11. nepali/datetime/parser/__init__.py +4 -4
  12. nepali/datetime/parser/_parser.py +59 -50
  13. nepali/datetime/parser/validators.py +249 -159
  14. nepali/datetime/utils.py +38 -0
  15. nepali/exceptions.py +8 -3
  16. nepali/locations/__init__.py +3 -0
  17. nepali/locations/_data.py +4271 -0
  18. nepali/locations/_locations.py +38 -0
  19. nepali/locations/models.py +104 -0
  20. nepali/locations/utils.py +54 -0
  21. nepali/number/__init__.py +19 -0
  22. nepali/number/_nepalinumber.py +563 -0
  23. nepali/number/_number.py +53 -0
  24. nepali/number/utils.py +72 -0
  25. nepali/phone_number.py +183 -0
  26. nepali/templatetags/__init__.py +0 -0
  27. nepali/templatetags/nepalidatetime.py +194 -24
  28. nepali/templatetags/nepalinumber.py +97 -7
  29. nepali/tests/test_date_converter.py +148 -0
  30. nepali/tests/test_datetime.py +275 -29
  31. nepali/tests/test_humanize.py +78 -7
  32. nepali/tests/test_locations.py +154 -0
  33. nepali/tests/test_nepalimonth.py +152 -0
  34. nepali/tests/test_nepaliweek.py +154 -0
  35. nepali/tests/test_number.py +3152 -0
  36. nepali/tests/test_parser.py +82 -69
  37. nepali/tests/test_phone_number.py +254 -0
  38. nepali/tests/test_timezone.py +192 -0
  39. nepali/timezone.py +50 -7
  40. nepali/utils.py +9 -68
  41. nepali-1.2.0.dist-info/METADATA +476 -0
  42. nepali-1.2.0.dist-info/RECORD +46 -0
  43. {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info}/WHEEL +1 -1
  44. {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info/licenses}/LICENSE +1 -1
  45. {nepali-0.5.5.dist-info → nepali-1.2.0.dist-info}/top_level.txt +0 -0
  46. nepali/datetime/_converter.py +0 -394
  47. nepali/datetime/_formarter.py +0 -314
  48. nepali/datetime.py +0 -1169
  49. nepali/number.py +0 -51
  50. nepali-0.5.5.dist-info/METADATA +0 -220
  51. nepali-0.5.5.dist-info/RECORD +0 -27
@@ -1,32 +1,112 @@
1
1
  import datetime
2
2
  import unittest
3
3
 
4
- from nepali.datetime import nepalidate, nepalitime, nepalidatetime
4
+ from nepali.datetime import nepalidate, nepalidatetime, nepalitime
5
+ from nepali.datetime.utils import to_nepalidate, to_nepalidatetime
6
+ from nepali.exceptions import InvalidNepaliDateTimeObjectException
5
7
  from nepali.timezone import NepaliTimeZone
6
- from nepali.utils import to_nepali_timezone
7
8
 
8
- class TestNepaliDateTime(unittest.TestCase):
9
9
 
10
+ class TestNepaliDateTime(unittest.TestCase):
10
11
  #
11
12
  # nepalidate
12
13
 
13
14
  def test_nepalidate_now_and_today(self):
14
15
  today = nepalidate.today()
15
16
  now = nepalidate.now()
16
- self.assertEqual(today, now, msg='nepalidate today is not equals to now.')
17
+ self.assertEqual(today, now, msg="nepalidate today is not equals to now.")
17
18
 
18
- def test_nepalidate_comparision(self):
19
+ def test_nepalidate_comparison(self):
19
20
  nepalidate_obj1 = nepalidate(year=2051, month=4, day=28)
20
21
 
21
22
  # test equal date
22
23
  nepalidate_obj2 = nepalidate(year=2051, month=4, day=28)
23
- self.assertEqual(nepalidate_obj1, nepalidate_obj2, 'Same nepali date are not checked equals.')
24
+ self.assertEqual(
25
+ nepalidate_obj1, nepalidate_obj2, "Same nepali date are not checked equals."
26
+ )
24
27
 
25
28
  # test different date
26
29
  nepalidate_obj3 = nepalidate(year=2051, month=4, day=29)
27
- self.assertNotEqual(nepalidate_obj1, nepalidate_obj3, 'Different nepali date are checked as equal.')
30
+ self.assertNotEqual(
31
+ nepalidate_obj1,
32
+ nepalidate_obj3,
33
+ "Different nepali date are checked as equal.",
34
+ )
35
+
36
+ #
37
+ # test addition
38
+
39
+ # test with timedelta
40
+ nt = nepalidate(year=2051, month=4, day=29)
41
+ nt = nt + datetime.timedelta(days=1)
42
+ self.assertEqual((nt.year, nt.month, nt.day), (2051, 4, 30))
43
+
44
+ # test without timedelta
45
+ with self.assertRaises(TypeError):
46
+ nt = nt + 1
47
+
48
+ #
49
+ # test subtraction
50
+
51
+ # test with nepali date
52
+ td = nepalidate(year=2051, month=4, day=30) - nepalidate(
53
+ year=2051, month=4, day=29
54
+ )
55
+ self.assertEqual(td.days, 1)
56
+
57
+ # test with python date
58
+ td = nepalidate(year=2051, month=4, day=30) - datetime.date(
59
+ year=1994, month=8, day=13
60
+ )
61
+ self.assertEqual(td.days, 1)
62
+
63
+ # test with timedelta
64
+ nt = nepalidate(year=2051, month=4, day=30) - datetime.timedelta(days=1)
65
+ self.assertEqual((nt.year, nt.month, nt.day), (2051, 4, 29))
66
+
67
+ # test without timedelta
68
+ with self.assertRaises(TypeError):
69
+ nt = nt - 1
70
+
71
+ #
72
+ # test less than
73
+ self.assertEqual(nepalidate(2051, 4, 29) < nepalidate(2051, 4, 30), True)
74
+ self.assertEqual(nepalidate(2051, 4, 29) < nepalidate(2051, 4, 29), False)
75
+ self.assertEqual(nepalidate(2051, 4, 29) < datetime.date(1994, 8, 14), True)
76
+ self.assertEqual(nepalidate(2051, 4, 29) < datetime.date(1994, 8, 13), False)
77
+ with self.assertRaises(TypeError):
78
+ _ = nepalidate(2051, 4, 29) < 0
79
+
80
+ #
81
+ # test less than equal
82
+ self.assertEqual(nepalidate(2051, 4, 29) <= nepalidate(2051, 4, 30), True)
83
+ self.assertEqual(nepalidate(2051, 4, 29) <= nepalidate(2051, 4, 29), True)
84
+ self.assertEqual(nepalidate(2051, 4, 30) <= nepalidate(2051, 4, 29), False)
85
+ self.assertEqual(nepalidate(2051, 4, 29) <= datetime.date(1994, 8, 14), True)
86
+ self.assertEqual(nepalidate(2051, 4, 29) <= datetime.date(1994, 8, 13), True)
87
+ self.assertEqual(nepalidate(2051, 4, 30) <= datetime.date(1994, 8, 13), False)
88
+ with self.assertRaises(TypeError):
89
+ _ = nepalidate(2051, 4, 29) <= 0
90
+
91
+ #
92
+ # test greater than
93
+ self.assertEqual(nepalidate(2051, 4, 30) > nepalidate(2051, 4, 29), True)
94
+ self.assertEqual(nepalidate(2051, 4, 30) > nepalidate(2051, 4, 30), False)
95
+ self.assertEqual(nepalidate(2051, 4, 30) > datetime.date(1994, 8, 14), False)
96
+ self.assertEqual(nepalidate(2051, 4, 30) > datetime.date(1994, 8, 13), True)
97
+ with self.assertRaises(TypeError):
98
+ _ = nepalidate(2051, 4, 29) > 0
28
99
 
29
- # TODO: check other comparisions (later)
100
+ #
101
+ # test greater than equal
102
+ self.assertEqual(nepalidate(2051, 4, 30) >= nepalidate(2051, 4, 30), True)
103
+ self.assertEqual(nepalidate(2051, 4, 30) >= nepalidate(2051, 4, 29), True)
104
+ self.assertEqual(nepalidate(2051, 4, 29) >= nepalidate(2051, 4, 30), False)
105
+ self.assertEqual(nepalidate(2051, 4, 30) >= datetime.date(1994, 8, 14), True)
106
+ self.assertEqual(nepalidate(2051, 4, 30) >= datetime.date(1994, 8, 13), True)
107
+ self.assertEqual(nepalidate(2051, 4, 29) >= datetime.date(1994, 8, 14), False)
108
+ with self.assertRaises(TypeError):
109
+ _ = nepalidate(2051, 4, 29) >= 0
30
110
 
31
111
  def test_nepalidate_year_month_day(self):
32
112
  nepalidate_obj = nepalidate(year=2051, month=4, day=28)
@@ -38,29 +118,50 @@ class TestNepaliDateTime(unittest.TestCase):
38
118
  def test_nepalidate_from_date(self):
39
119
  python_date_obj = datetime.date(year=1994, month=8, day=12)
40
120
  nepalidate_obj = nepalidate.from_date(python_date_obj)
41
- self.assertEqual(python_date_obj, nepalidate_obj.to_date(), 'nepalidate from_date and to_date are not equal.')
121
+ self.assertEqual(
122
+ python_date_obj,
123
+ nepalidate_obj.to_date(),
124
+ "nepalidate from_date and to_date are not equal.",
125
+ )
42
126
 
43
127
  def test_nepalidate_from_datetime(self):
44
- python_datetime_obj = datetime.datetime(year=1994, month=8, day=12, hour=4, minute=8, second=12)
128
+ python_datetime_obj = datetime.datetime(
129
+ year=1994, month=8, day=12, hour=4, minute=8, second=12
130
+ )
45
131
  nepalidate_obj = nepalidate.from_datetime(python_datetime_obj)
46
- self.assertEqual(python_datetime_obj.date(), nepalidate_obj.to_date(), 'nepalidate from_datetime and to_datetime are not equal.')
132
+ self.assertEqual(
133
+ python_datetime_obj.date(),
134
+ nepalidate_obj.to_date(),
135
+ "nepalidate from_datetime and to_datetime are not equal.",
136
+ )
47
137
 
48
138
  def test_nepalidate_strftime(self):
49
139
  nepalidate_obj = nepalidate(year=2051, month=4, day=28)
50
- self.assertEqual(nepalidate_obj.strftime('%Y-%m-%d'), '२०५१-०४-२८')
51
- self.assertEqual(nepalidate_obj.strftime('%a %A %w %d %b %B %m %y %Y'), 'शुक्र शुक्रबार ५ २८ साउन साउन ०४ ५१ २०५१')
52
- self.assertEqual(nepalidate_obj.strftime_en('%Y-%m-%d'), '2051-04-28')
53
- self.assertEqual(nepalidate_obj.strftime_en('%a %A %w %d %b %B %m %y %Y'), 'Fri Friday 5 28 Sharwan Sharwan 04 51 2051')
140
+ self.assertEqual(nepalidate_obj.strftime("%Y-%m-%d"), "2051-04-28")
141
+ self.assertEqual(
142
+ nepalidate_obj.strftime("%a %A %w %d %b %B %m %y %Y"),
143
+ "Fri Friday 5 28 Sharwan Sharwan 04 51 2051",
144
+ )
145
+ self.assertEqual(nepalidate_obj.strftime_en("%Y-%m-%d"), "2051-04-28")
146
+ self.assertEqual(
147
+ nepalidate_obj.strftime_en("%a %A %w %d %b %B %m %y %Y"),
148
+ "Fri Friday 5 28 Sharwan Sharwan 04 51 2051",
149
+ )
150
+ self.assertEqual(nepalidate_obj.strftime_ne("%Y-%m-%d"), "२०५१-०४-२८")
151
+ self.assertEqual(
152
+ nepalidate_obj.strftime_ne("%a %A %w %d %b %B %m %y %Y"),
153
+ "शुक्र शुक्रबार ५ २८ साउन साउन ०४ ५१ २०५१",
154
+ )
54
155
 
55
156
  def test_nepalidate_strptime(self):
56
- nepalidatetime_obj = nepalidate.strptime('2078-01-12', format='%Y-%m-%d')
157
+ nepalidatetime_obj = nepalidate.strptime("2078-01-12", format="%Y-%m-%d")
57
158
  self.assertEqual(nepalidatetime_obj.year, 2078)
58
159
  self.assertEqual(nepalidatetime_obj.month, 1)
59
160
  self.assertEqual(nepalidatetime_obj.day, 12)
60
161
 
61
162
  #
62
163
  # nepalitime
63
-
164
+
64
165
  def test_nepalitime_now(self):
65
166
  nepalitime_obj, dt_now = nepalitime.now(), datetime.datetime.now()
66
167
  self.assertEqual(nepalitime_obj.hour, dt_now.hour)
@@ -71,24 +172,67 @@ class TestNepaliDateTime(unittest.TestCase):
71
172
  # nepalidatetime
72
173
 
73
174
  def test_nepalidatetime_from_date(self):
74
- python_datetime_obj = datetime.datetime(year=1994, month=8, day=12, hour=5, minute=28, second=23)
175
+ python_datetime_obj = datetime.datetime(
176
+ year=1994, month=8, day=12, hour=5, minute=28, second=23
177
+ )
75
178
  nepalidatetime_obj = nepalidatetime.from_date(python_datetime_obj)
76
179
  self.assertEqual(python_datetime_obj.date(), nepalidatetime_obj.to_date())
77
180
 
78
181
  def test_nepalidatetime_from_datetime(self):
79
- python_datetime_obj = datetime.datetime(year=1994, month=8, day=12, hour=5, minute=28, second=23, tzinfo=NepaliTimeZone())
182
+ python_datetime_obj = datetime.datetime(
183
+ year=1994,
184
+ month=8,
185
+ day=12,
186
+ hour=5,
187
+ minute=28,
188
+ second=23,
189
+ tzinfo=NepaliTimeZone(),
190
+ )
80
191
  nepalidatetime_obj = nepalidatetime.from_datetime(python_datetime_obj)
81
- self.assertEqual(python_datetime_obj, nepalidatetime_obj.to_datetime(), msg="{} and {} are not equal.".format(python_datetime_obj, nepalidatetime_obj.to_datetime()))
192
+ self.assertEqual(
193
+ python_datetime_obj,
194
+ nepalidatetime_obj.to_datetime(),
195
+ msg="{} and {} are not equal.".format(
196
+ python_datetime_obj, nepalidatetime_obj.to_datetime()
197
+ ),
198
+ )
82
199
 
83
200
  def test_nepalidatetime_strftime(self):
84
- nepalidatetime_obj = nepalidatetime(year=2051, month=4, day=28, hour=5, minute=28, second=23)
85
- self.assertEqual(nepalidatetime_obj.strftime('%Y-%m-%d %H:%M:%S'), '२०५१-०४-२८ ०५:२८:२३')
86
- self.assertEqual(nepalidatetime_obj.strftime('%a %A %w %d %b %B %m %y %Y %H %I %p %M %S'), 'शुक्र शुक्रबार ५ २८ साउन साउन ०४ ५१ २०५१ ०५ ०५ शुभप्रभात २८ २३')
87
- self.assertEqual(nepalidatetime_obj.strftime_en('%Y-%m-%d %H:%M:%S'), '2051-04-28 05:28:23')
88
- self.assertEqual(nepalidatetime_obj.strftime_en('%a %A %w %d %b %B %m %y %Y %H %I %p %M %S'), 'Fri Friday 5 28 Sharwan Sharwan 04 51 2051 05 05 AM 28 23')
201
+ nepalidatetime_obj = nepalidatetime(
202
+ year=2051, month=4, day=28, hour=5, minute=28, second=23
203
+ )
204
+ self.assertEqual(
205
+ nepalidatetime_obj.strftime("%Y-%m-%d %H:%M:%S"), "2051-04-28 05:28:23"
206
+ )
207
+ self.assertEqual(
208
+ nepalidatetime_obj.strftime("%a %A %w %d %b %B %m %y %Y %H %I %p %M %S"),
209
+ "Fri Friday 5 28 Sharwan Sharwan 04 51 2051 05 05 AM 28 23",
210
+ )
211
+ self.assertEqual(
212
+ nepalidatetime_obj.strftime_en("%Y-%m-%d %H:%M:%S"), "2051-04-28 05:28:23"
213
+ )
214
+ self.assertEqual(
215
+ nepalidatetime_obj.strftime_en("%a %A %w %d %b %B %m %y %Y %H %I %p %M %S"),
216
+ "Fri Friday 5 28 Sharwan Sharwan 04 51 2051 05 05 AM 28 23",
217
+ )
218
+ self.assertEqual(
219
+ nepalidatetime_obj.strftime_en(
220
+ "%a %A %w %d %-d %b %B %m %-m %y %Y %H %-H %I %-I %p %M %-M %S %-S %%"
221
+ ),
222
+ "Fri Friday 5 28 28 Sharwan Sharwan 04 4 51 2051 05 5 05 5 AM 28 28 23 23 %",
223
+ )
224
+ self.assertEqual(
225
+ nepalidatetime_obj.strftime_ne("%Y-%m-%d %H:%M:%S"), "२०५१-०४-२८ ०५:२८:२३"
226
+ )
227
+ self.assertEqual(
228
+ nepalidatetime_obj.strftime_ne("%a %A %w %d %b %B %m %y %Y %H %I %p %M %S"),
229
+ "शुक्र शुक्रबार ५ २८ साउन साउन ०४ ५१ २०५१ ०५ ०५ शुभप्रभात २८ २३",
230
+ )
89
231
 
90
232
  def test_nepalidatetime_strptime(self):
91
- nepalidatetime_obj = nepalidatetime.strptime('2078-01-12 13:12', format='%Y-%m-%d %H:%M')
233
+ nepalidatetime_obj = nepalidatetime.strptime(
234
+ "2078-01-12 13:12", format="%Y-%m-%d %H:%M"
235
+ )
92
236
  self.assertEqual(nepalidatetime_obj.year, 2078)
93
237
  self.assertEqual(nepalidatetime_obj.month, 1)
94
238
  self.assertEqual(nepalidatetime_obj.day, 12)
@@ -96,7 +240,109 @@ class TestNepaliDateTime(unittest.TestCase):
96
240
  self.assertEqual(nepalidatetime_obj.minute, 12)
97
241
 
98
242
  def test_nepalidatetime_timedelta(self):
99
- nepalidatetime_obj1 = nepalidatetime(year=2051, month=4, day=28, hour=5, minute=28, second=23)
100
- nepalidatetime_obj2 = nepalidatetime(year=2051, month=4, day=29, hour=5, minute=28, second=23)
243
+ nepalidatetime_obj1 = nepalidatetime(
244
+ year=2051, month=4, day=28, hour=5, minute=28, second=23
245
+ )
246
+ nepalidatetime_obj2 = nepalidatetime(
247
+ year=2051, month=4, day=29, hour=5, minute=28, second=23
248
+ )
101
249
  nepalidatetime_obj1 = nepalidatetime_obj1 + datetime.timedelta(days=1)
102
- self.assertEqual(nepalidatetime_obj1, nepalidatetime_obj2, msg='{} and {} are not equal'.format(nepalidatetime_obj1, nepalidatetime_obj2))
250
+ self.assertEqual(
251
+ nepalidatetime_obj1,
252
+ nepalidatetime_obj2,
253
+ msg=f"{nepalidatetime_obj1} and {nepalidatetime_obj2} are not equal",
254
+ )
255
+
256
+
257
+ class TestDatetimeUtils(unittest.TestCase):
258
+ # to_nepalidate
259
+ def test_to_nepalidate_raises_exception_on_invalid_input(self):
260
+ with self.assertRaises(InvalidNepaliDateTimeObjectException):
261
+ to_nepalidate("Invalid input")
262
+
263
+ def test_to_nepalidate_from_python_date(self):
264
+ np_date = to_nepalidate(datetime.date(2023, 2, 26))
265
+ self.assertSequenceEqual(
266
+ (np_date.year, np_date.month, np_date.day), (2079, 11, 14)
267
+ )
268
+
269
+ def test_to_nepalidate_from_python_datetime(self):
270
+ np_date = to_nepalidate(datetime.datetime(2023, 2, 26, 1, 12, 13))
271
+ self.assertSequenceEqual(
272
+ (np_date.year, np_date.month, np_date.day), (2079, 11, 14)
273
+ )
274
+
275
+ def test_to_nepalidate_from_nepalidate(self):
276
+ np_date = to_nepalidate(nepalidate(2079, 11, 14))
277
+ self.assertSequenceEqual(
278
+ (np_date.year, np_date.month, np_date.day), (2079, 11, 14)
279
+ )
280
+
281
+ def test_to_nepalidate_from_nepalidatetime(self):
282
+ np_date = to_nepalidate(nepalidatetime(2079, 11, 14, 1, 12, 13))
283
+ self.assertSequenceEqual(
284
+ (np_date.year, np_date.month, np_date.day), (2079, 11, 14)
285
+ )
286
+
287
+ # to_nepalidatetime
288
+ def test_to_nepalidatetime_raises_exception_on_invalid_input(self):
289
+ with self.assertRaises(InvalidNepaliDateTimeObjectException):
290
+ to_nepalidatetime("Invalid input")
291
+
292
+ def test_to_nepalidatetime_from_python_date(self):
293
+ np_date = to_nepalidatetime(datetime.date(2023, 2, 26))
294
+ self.assertSequenceEqual(
295
+ (
296
+ np_date.year,
297
+ np_date.month,
298
+ np_date.day,
299
+ np_date.hour,
300
+ np_date.minute,
301
+ np_date.second,
302
+ ),
303
+ (2079, 11, 14, 0, 0, 0),
304
+ )
305
+
306
+ def test_to_nepalidatetime_from_python_datetime(self):
307
+ np_date = to_nepalidatetime(
308
+ datetime.datetime(2023, 2, 26, 4, 30, 13, tzinfo=datetime.timezone.utc)
309
+ )
310
+ self.assertSequenceEqual(
311
+ (
312
+ np_date.year,
313
+ np_date.month,
314
+ np_date.day,
315
+ np_date.hour,
316
+ np_date.minute,
317
+ np_date.second,
318
+ ),
319
+ (2079, 11, 14, 10, 15, 13),
320
+ )
321
+
322
+ def test_to_nepalidatetime_from_nepalidate(self):
323
+ np_date = to_nepalidatetime(nepalidate(2079, 11, 14))
324
+ self.assertSequenceEqual(
325
+ (
326
+ np_date.year,
327
+ np_date.month,
328
+ np_date.day,
329
+ np_date.hour,
330
+ np_date.minute,
331
+ np_date.second,
332
+ ),
333
+ (2079, 11, 14, 0, 0, 0),
334
+ )
335
+
336
+ def test_to_nepalidatetime_from_nepalidatetime(self):
337
+ np_date = to_nepalidatetime(nepalidatetime(2079, 11, 14, 1, 12, 13))
338
+ self.assertSequenceEqual(
339
+ (
340
+ np_date.year,
341
+ np_date.month,
342
+ np_date.day,
343
+ np_date.hour,
344
+ np_date.minute,
345
+ np_date.second,
346
+ ),
347
+ (2079, 11, 14, 1, 12, 13),
348
+ )
@@ -1,13 +1,84 @@
1
1
  import datetime
2
2
  import unittest
3
+ from unittest.mock import patch
3
4
 
4
- from nepali.datetime import nepalihumanize
5
+ from nepali.datetime import HumanizeDateTime, nepalidate, nepalidatetime, nepalihumanize
6
+ from nepali.exceptions import InvalidNepaliDateTimeObjectException
7
+ from nepali.timezone import NepaliTimeZone
5
8
 
6
- class TestNepaliDateTime(unittest.TestCase):
9
+ REF_TIME = datetime.datetime(2015, 1, 1, 10, 15, tzinfo=NepaliTimeZone())
7
10
 
8
- def test_nepalihumanize_basic(self):
9
- humanize_str = nepalihumanize(datetime.datetime(2022, 2, 15), threshold=0)
10
- self.assertNotEqual(humanize_str, None, msg='Invalid nepali humanize str.')
11
11
 
12
- humanize_str = nepalihumanize(datetime.datetime(2022, 2, 15), threshold=600000000)
13
- self.assertNotEqual(humanize_str, None, msg='Invalid nepali humanize str with threshold.')
12
+ @patch("nepali.datetime._humanize.now", return_value=REF_TIME)
13
+ class TestNepaliHumanizeFunction(unittest.TestCase):
14
+ def test_nepalihumanize_for_just_now(self, *_):
15
+ humanize_str = nepalihumanize(REF_TIME)
16
+ self.assertEqual(humanize_str, "भर्खरै")
17
+
18
+ def test_nepalihumanize_for_seconds(self, *_):
19
+ humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(seconds=10))
20
+ self.assertEqual(humanize_str, "१० सेकेन्ड अघि")
21
+
22
+ def test_nepalihumanize_for_minutes(self, *_):
23
+ humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(minutes=10))
24
+ self.assertEqual(humanize_str, "१० मिनेट अघि")
25
+
26
+ def test_nepalihumanize_for_hours(self, *_):
27
+ humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(hours=10))
28
+ self.assertEqual(humanize_str, "१० घण्टा अघि")
29
+
30
+ def test_nepalihumanize_for_days(self, *_):
31
+ humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(days=10))
32
+ self.assertEqual(humanize_str, "१० दिन अघि")
33
+
34
+ def test_nepalihumanize_for_months(self, *_):
35
+ humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(days=32))
36
+ self.assertEqual(humanize_str, "१ महिना अघि")
37
+
38
+ def test_nepalihumanize_for_years(self, *_):
39
+ humanize_str = nepalihumanize(REF_TIME - datetime.timedelta(days=366))
40
+ self.assertEqual(humanize_str, "१ वर्ष अघि")
41
+
42
+ def test_nepalihumanize_for_future(self, *_):
43
+ humanize_str = nepalihumanize(REF_TIME + datetime.timedelta(days=10))
44
+ self.assertEqual(humanize_str, "१० दिन पछि")
45
+
46
+ def test_nepalihumanize_returns_date_after_threshold(self, *_):
47
+ humanize_str = nepalihumanize(
48
+ REF_TIME - datetime.timedelta(seconds=10), threshold=10
49
+ )
50
+ self.assertEqual(humanize_str, "पुस १७, २०७१")
51
+
52
+
53
+ class TestHumanizeDateTimeClass(unittest.TestCase):
54
+ def test_nepali_humanize_raise_exception_on_invalid_input(self, *_):
55
+ with self.assertRaises(InvalidNepaliDateTimeObjectException):
56
+ HumanizeDateTime("test")
57
+
58
+ with self.assertRaises(InvalidNepaliDateTimeObjectException):
59
+ HumanizeDateTime(None)
60
+
61
+ with self.assertRaises(InvalidNepaliDateTimeObjectException):
62
+ HumanizeDateTime("2017-12-04")
63
+
64
+ def test_nepali_humanize_supports_python_date(self, *_):
65
+ humanize_obj = HumanizeDateTime(datetime.date.today())
66
+ self.assertEqual(type(humanize_obj.to_str()), str)
67
+
68
+ def test_nepali_humanize_supports_python_datetime(self, *_):
69
+ humanize_obj = HumanizeDateTime(datetime.datetime.now())
70
+ self.assertEqual(type(humanize_obj.to_str()), str)
71
+
72
+ def test_nepali_humanize_supports_nepalidate(self, *_):
73
+ humanize_obj = HumanizeDateTime(nepalidate.today())
74
+ self.assertEqual(type(humanize_obj.to_str()), str)
75
+
76
+ def test_nepali_humanize_supports_nepalidatetime(self, *_):
77
+ humanize_obj = HumanizeDateTime(nepalidatetime.now())
78
+ self.assertEqual(type(humanize_obj.to_str()), str)
79
+
80
+ @patch("nepali.datetime._humanize.now", return_value=REF_TIME)
81
+ def test_test_nepali_humanize_str_and_repr(self, *_):
82
+ humanize_obj = HumanizeDateTime(REF_TIME + datetime.timedelta(days=10))
83
+ self.assertEqual(str(humanize_obj), "१० दिन पछि")
84
+ self.assertEqual(repr(humanize_obj), "१० दिन पछि")
@@ -0,0 +1,154 @@
1
+ import unittest
2
+
3
+ from nepali import locations
4
+ from nepali.locations.models import (
5
+ District,
6
+ Location,
7
+ Municipality,
8
+ MunicipalityType,
9
+ Province,
10
+ )
11
+ from nepali.locations.utils import (
12
+ _filter_location,
13
+ get_district,
14
+ get_municipality,
15
+ get_province,
16
+ )
17
+
18
+
19
+ class TestLocations(unittest.TestCase):
20
+ def test_locations_count(self):
21
+ self.assertEqual(len(locations.provinces), 7)
22
+ self.assertEqual(len(locations.districts), 77)
23
+ self.assertEqual(len(locations.municipalities), 753)
24
+
25
+ def test_utils_filter_location(self):
26
+ # checking if no argument is passed
27
+ with self.assertRaises(ValueError):
28
+ _filter_location(locations=locations.provinces)
29
+
30
+ # checking pattern match
31
+ province = _filter_location(locations=locations.provinces, name="Bagmati")
32
+ self.assertEqual(province.name, "Bagmati Province")
33
+
34
+ # checking ignore-case match
35
+ province = _filter_location(locations=locations.provinces, name="bagmati")
36
+ self.assertEqual(province.name, "Bagmati Province")
37
+
38
+ # checking with invalid name
39
+ province = _filter_location(locations=locations.provinces, name="invalid")
40
+ self.assertEqual(province, None)
41
+
42
+ # checking using exact True with invalid match
43
+ province = _filter_location(
44
+ locations=locations.provinces, name="Bagmati", exact=True
45
+ )
46
+ self.assertEqual(province, None)
47
+
48
+ # checking using exact True with a valid match
49
+ province = _filter_location(
50
+ locations=locations.provinces, name="Bagmati Province", exact=True
51
+ )
52
+ self.assertEqual(province.name, "Bagmati Province")
53
+
54
+ # checking assertion if exact and multiple is passes together
55
+ with self.assertRaises(ValueError):
56
+ _filter_location(
57
+ locations=locations.provinces,
58
+ name="Bagmati Province",
59
+ exact=True,
60
+ multiple=True,
61
+ )
62
+
63
+ # checking multiple value match
64
+ provinces = _filter_location(
65
+ locations=locations.provinces, name="Province", multiple=True
66
+ )
67
+ self.assertEqual(type(provinces), list)
68
+ self.assertEqual(len(provinces), 7)
69
+
70
+ # checking multiple value with invalid match
71
+ provinces = _filter_location(
72
+ locations=locations.provinces, name="invalid", multiple=True
73
+ )
74
+ self.assertEqual(len(provinces), 0)
75
+
76
+ # checking pattern match with nepali name
77
+ province = _filter_location(locations=locations.provinces, name_nepali="बागमती")
78
+ self.assertEqual(province.name_nepali, "बागमती प्रदेश")
79
+
80
+ # checking using exact True with a valid nepali match
81
+ province = _filter_location(
82
+ locations=locations.provinces, name_nepali="बागमती प्रदेश", exact=True
83
+ )
84
+ self.assertEqual(province.name_nepali, "बागमती प्रदेश")
85
+
86
+
87
+ class TestLocationsUtils(unittest.TestCase):
88
+ def test_utils_get_province(self):
89
+ province = get_province(name="Bagmati")
90
+ self.assertEqual(province.name, "Bagmati Province")
91
+
92
+ def test_utils_get_district(self):
93
+ district = get_district(name="Kathmandu")
94
+ self.assertEqual(district.name, "Kathmandu")
95
+
96
+ def test_utils_get_municipality(self):
97
+ municipality = get_municipality(name="Kathmandu")
98
+ self.assertEqual(municipality.name, "Kathmandu Metropolitan City")
99
+
100
+
101
+ class TestLocationsModels(unittest.TestCase):
102
+ def test_location_data(self):
103
+ location = Location("test_en", "test_ne")
104
+ self.assertEqual(location.name, "test_en")
105
+ self.assertEqual(location.name_nepali, "test_ne")
106
+
107
+ def test_location_str(self):
108
+ location = Location("test_en", "test_ne")
109
+ self.assertEqual(str(location), "test_en")
110
+
111
+ def test_location_repr(self):
112
+ location = Location("test_en", "test_ne")
113
+ self.assertEqual(repr(location), "test_en")
114
+
115
+ def test_districts_from_province(self):
116
+ province = Province("Province1", "Province1")
117
+ district = District(province, "District1", "District1")
118
+ self.assertListEqual(province.districts, [district])
119
+
120
+ def test_municipalities_from_province_and_district(self):
121
+ province = Province("Province1", "Province1")
122
+ district = District(province, "District1", "District1")
123
+ municipality = Municipality(
124
+ district, "Municipality1", "Municipality1", MunicipalityType.METROPOLITAN
125
+ )
126
+ self.assertListEqual(province.municipalities, [municipality])
127
+ self.assertListEqual(district.municipalities, [municipality])
128
+
129
+ def test_municipality_province_district_and_type(self):
130
+ province = Province("Province1", "Province1")
131
+ district = District(province, "District1", "District1")
132
+ municipality = Municipality(
133
+ district, "Municipality1", "Municipality1", MunicipalityType.METROPOLITAN
134
+ )
135
+ self.assertEqual(municipality.province, province)
136
+ self.assertEqual(municipality.district, district)
137
+ self.assertEqual(municipality.municipality_type, MunicipalityType.METROPOLITAN)
138
+
139
+ # MunicipalityType
140
+ def test_municipality_type_with_invalid_data(self):
141
+ with self.assertRaises(ValueError):
142
+ MunicipalityType("Hello")
143
+
144
+ def test_municipality_type_with_valid_data(self):
145
+ municipality_type = MunicipalityType("Metropolitan City")
146
+ self.assertEqual(municipality_type, MunicipalityType.METROPOLITAN)
147
+
148
+ def test_municipality_type_str(self):
149
+ municipality_type = MunicipalityType.RURAL_MUNICIPALITY
150
+ self.assertEqual(str(municipality_type), municipality_type.value)
151
+
152
+ def test_municipality_type_repr(self):
153
+ municipality_type = MunicipalityType.SUB_METROPOLITAN
154
+ self.assertEqual(repr(municipality_type), municipality_type.value)