No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_regex.py 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #
  2. # This file is part of Lodel 2 (https://github.com/OpenEdition)
  3. #
  4. # Copyright (C) 2015-2017 Cléo UMS-3287
  5. #
  6. # This program is free software: you can redistribute it and/or modify
  7. # it under the terms of the GNU Affero General Public License as published
  8. # by the Free Software Foundation, either version 3 of the License, or
  9. # (at your option) any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. # GNU Affero General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU Affero General Public License
  17. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. #
  19. import unittest
  20. from lodel.exceptions import *
  21. from lodel.leapi.datahandlers.datas import Regex, Varchar, Integer, UniqID
  22. from lodel.leapi.datahandlers.base_classes import DataHandler
  23. from unittest.mock import Mock
  24. import re
  25. class RegexTestCase(unittest.TestCase):
  26. def test_invalid_regex_throws_TypeError(self):
  27. self.assertRaises(TypeError, Regex().__init__, object)
  28. def test_compiled_re_property_is_set(self):
  29. self.assertIs(self.testee.compiled_re, re.compile(self.testee.regex))
  30. def test_exceeding_value_length_throws_FieldValidationError(self):
  31. self.assertRaises(
  32. FieldValidationError,
  33. self.testee._check_data_value,
  34. self.valid_value*self.max_length
  35. )
  36. def test_invalid_field_value_throws_FieldValidationError(self):
  37. self.assertRaises(
  38. FieldValidationError,
  39. self.testee._check_data_value,
  40. ''
  41. )
  42. def test_valid_field_value_is_returned(self):
  43. self.assertEqual(self.valid_value, self.testee._check_data_value(self.valid_value))
  44. def test_can_override_returns_false_if_different_datahandler_base_type(self):
  45. mock = self._get_datahandler_mock()
  46. mock.__class__.base_type = self.testee.base_type*2
  47. self.assertFalse(self.testee.can_override(mock))
  48. def test_can_override_returns_false_if_different_datahandler_maxlen(self):
  49. mock = self._get_datahandler_mock()
  50. mock.__class__.max_length = self.max_length*2
  51. self.assertFalse(self.testee.can_override(mock))
  52. def test_can_override_returns_true_if_overridable(self):
  53. self.assertTrue(self.testee.can_override(self._get_datahandler_mock()))
  54. def _get_datahandler_mock(self):
  55. dataHandlerMock = Mock()
  56. dataHandlerMock.__class__.base_type = self.testee.base_type
  57. dataHandlerMock.__class__.max_length = self.testee.max_length
  58. return dataHandlerMock
  59. def setUp(self):
  60. self.max_length = 15
  61. self.regex = '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
  62. self.valid_value = '126.205.255.12'
  63. self.testee = Regex(self.regex, self.max_length)