|
5 | 5 | from django.conf import settings
|
6 | 6 | from articletrack import models
|
7 | 7 | from . import modelfactories
|
| 8 | +from scielomanager.utils import misc |
8 | 9 |
|
9 | 10 |
|
10 | 11 | class CommentTests(TestCase):
|
@@ -203,6 +204,20 @@ def test_if_expiration_date_is_today_then_checkin_is_expirable(self):
|
203 | 204 | self.assertEqual(checkin.expiration_at.date(), now.date())
|
204 | 205 | self.assertTrue(checkin.is_expirable)
|
205 | 206 |
|
| 207 | + def test_validate_sequence_function(self): |
| 208 | + sequences = ( |
| 209 | + (True, ["SERV_BEGIN", "SERV_END", "SERV_BEGIN", "SERV_END"]), |
| 210 | + (True, ["SERV_BEGIN", "SERV_BEGIN", "SERV_END", "SERV_END"]), |
| 211 | + (False, ["SERV_BEGIN", "SERV_BEGIN", "SERV_END", "ANOTHER_SYMBOL"]), |
| 212 | + (False, ["SERV_BEGIN", "SERV_BEGIN", "SERV_END"]), |
| 213 | + (False, ["SERV_BEGIN", "SERV_END", "SERV_END"]), |
| 214 | + (False, ["SERV_BEGIN", "SERV_BEGIN", "SERV_BEGIN", "SERV_BEGIN", ]), |
| 215 | + (False, ["SERV_END", "SERV_END", "SERV_END", "SERV_END", ]), |
| 216 | + ) |
| 217 | + for expected_result, sequence in sequences: |
| 218 | + validation_result = misc.validate_sequence(sequence) |
| 219 | + self.assertEqual(expected_result, validation_result) |
| 220 | + |
206 | 221 |
|
207 | 222 | class ArticleTests(TestCase):
|
208 | 223 |
|
@@ -360,3 +375,68 @@ def test_do_expires_generate_log_entry(self):
|
360 | 375 | self.assertIsNone(logs[0].user)
|
361 | 376 | self.assertEqual(logs[0].status, 'expired')
|
362 | 377 | self.assertEqual(logs[0].description, models.MSG_WORKFLOW_EXPIRED)
|
| 378 | + |
| 379 | + def test_checkin_with_notices_incomplete_service_status_must_be_in_progress(self): |
| 380 | + """ |
| 381 | + For one checkin, generate various notices like incomplete processing, such as only one SERV_BEGIN |
| 382 | + """ |
| 383 | + checkin = modelfactories.CheckinFactory() |
| 384 | + modelfactories.NoticeFactory( |
| 385 | + checkin=checkin, |
| 386 | + stage=" ", message=" ", status="SERV_BEGIN", |
| 387 | + created_at=datetime.datetime.now()) |
| 388 | + |
| 389 | + self.assertFalse(checkin.is_serv_status_completed) |
| 390 | + self.assertEqual('in progress', checkin.get_error_level) |
| 391 | + |
| 392 | + def test_checkin_notices_with_less_serv_status_than_SERVICE_STATUS_MAX_STAGES_is_incompleted(self): |
| 393 | + """ |
| 394 | + If a checkin's notices, are less than SERVICE_STATUS_MAX_STAGES service status (SERV_END), is incomplete |
| 395 | + """ |
| 396 | + checkin = modelfactories.CheckinFactory() |
| 397 | + serv_status_count = models.SERVICE_STATUS_MAX_STAGES - 1 |
| 398 | + for step in xrange(0, serv_status_count): |
| 399 | + modelfactories.NoticeFactory( |
| 400 | + checkin=checkin, |
| 401 | + stage=" ", message=" ", status="SERV_END", |
| 402 | + created_at=datetime.datetime.now()) |
| 403 | + |
| 404 | + self.assertFalse(checkin.is_serv_status_completed) |
| 405 | + self.assertEqual('in progress', checkin.get_error_level) |
| 406 | + |
| 407 | + def test_checkin_notices_with_equal_serv_status_than_SERVICE_STATUS_MAX_STAGES_is_incompleted(self): |
| 408 | + """ |
| 409 | + If a checkin's notices, are equal to SERVICE_STATUS_MAX_STAGES service status (SERV_END), still incomplete |
| 410 | + because only have: "SERV_END" as service status. |
| 411 | + """ |
| 412 | + checkin = modelfactories.CheckinFactory() |
| 413 | + serv_status_count = models.SERVICE_STATUS_MAX_STAGES |
| 414 | + for step in xrange(0, serv_status_count): |
| 415 | + modelfactories.NoticeFactory( |
| 416 | + checkin=checkin, |
| 417 | + stage=" ", message=" ", status="SERV_END", |
| 418 | + created_at=datetime.datetime.now()) |
| 419 | + |
| 420 | + self.assertFalse(checkin.is_serv_status_completed) |
| 421 | + self.assertEqual('in progress', checkin.get_error_level) |
| 422 | + |
| 423 | + def test_checkin_notices_with_correct_pair_of_service_status_is_completed(self): |
| 424 | + """ |
| 425 | + If checkin's notices, are equal to SERVICE_STATUS_MAX_STAGES service status (SERV_END), is complete |
| 426 | + because each service status has a pair: "SERV_BEGIN"/"SERV_END" as service status, and checkin.error_level |
| 427 | + is 'ok' because has no "error"/"warning" notices |
| 428 | + """ |
| 429 | + checkin = modelfactories.CheckinFactory() |
| 430 | + serv_status_count = models.SERVICE_STATUS_MAX_STAGES |
| 431 | + for step in xrange(0, serv_status_count): |
| 432 | + notice_serv_begin = modelfactories.NoticeFactory( |
| 433 | + checkin=checkin, |
| 434 | + stage=" ", message=" ", status="SERV_BEGIN", |
| 435 | + created_at=datetime.datetime.now()) |
| 436 | + notice_serv_end = modelfactories.NoticeFactory( |
| 437 | + checkin=checkin, |
| 438 | + stage=" ", message=" ", status="SERV_END", |
| 439 | + created_at=datetime.datetime.now()) |
| 440 | + self.assertTrue(checkin.is_serv_status_completed) |
| 441 | + self.assertEqual('ok', checkin.get_error_level) |
| 442 | + |
0 commit comments