Exemplo n.º 1
0
    def test_get_specific_model_img_fields(self):
        vk = VimageKey('myapp.models.AnotherModel')

        self.assertListEqual(
            vk.get_specific_model_img_fields(),
            another_model_image_fields()
        )
Exemplo n.º 2
0
 def test_key(self):
     vk = VimageKey('app')
     self.assertEqual(vk.key, 'app')
     err = f'Each VIMAGE dict key should be a ' \
           f'<str> type. Current key: "1", is <int>!'
     with self.assertRaisesMessage(TypeError, err):
         VimageKey(1)
Exemplo n.º 3
0
    def test_key_valid_dotted_format(self):
        invalid_keys = [
            VimageKey(''),
            VimageKey('myapp.class'),
            VimageKey('myapp.def'),
        ]
        for vk in invalid_keys:
            with self.subTest(vk=vk):
                self.assertFalse(vk.key_valid_dotted_format())

        valid_keys = [
            VimageKey('myapp'),
            VimageKey('myapp.something.other'),
        ]
        for vk in valid_keys:
            with self.subTest(vk=vk):
                self.assertTrue(vk.key_valid_dotted_format())
Exemplo n.º 4
0
    def test_is_valid(self):
        vk = VimageKey('')
        err = f'The key "" should be a non-empty string. It ' \
              f'must be the dotted path to the app\'s "models" module ' \
              f'or a "Model" class or an "ImageField" field.'
        with self.assertRaisesMessage(InvalidKeyError, err):
            vk.is_valid()

        valid_keys = [
            VimageKey('myapp.models'),
            VimageKey('myapp.models.MyModel'),
            VimageKey('myapp.models.MyModel.img'),
        ]
        for vk in valid_keys:
            with self.subTest(vk=vk):
                self.assertIsNone(vk.is_valid())
Exemplo n.º 5
0
    def test_valid_key_length(self):
        valid_keys = [
            VimageKey('.'.join(['a'] * 2)),  # 'a.a',
            VimageKey('.'.join(['a'] * 3)),  # 'a.a.a'
            VimageKey('.'.join(['a'] * 4)),  # 'a.a.a.a'
        ]
        for vk in valid_keys:
            with self.subTest(vk=vk):
                self.assertTrue(vk.valid_key_length(vk.split_key()))

        invalid_keys = [
            VimageKey(''),
            VimageKey('a'),
            VimageKey('.'.join(['a'] * 5)),  # 'a.a.a.a.a',
        ]
        for vk in invalid_keys:
            with self.subTest(vk=vk):
                self.assertFalse(vk.valid_key_length(vk.split_key()))
Exemplo n.º 6
0
 def test_entry(self):
     ve = VimageEntry('app', {})
     self.assertIsInstance(ve.key, VimageKey)
     self.assertEqual(ve.key.key, VimageKey('app').key)
     self.assertIsInstance(ve.value, VimageValue)
     self.assertEqual(ve.value.value, VimageValue({}).value)
Exemplo n.º 7
0
    def test_validate_dotted_key(self):
        # At least the "models" word is required
        vk = VimageKey('myapp')
        err = f'[myapp]: The key must consists of two to four words, ' \
              f'separated by dot. It must be a path to one of ' \
              f'the following: the "models" module, ' \
              f'a Django Model class or a Django ImageField field.'
        with self.assertRaisesMessage(InvalidKeyError, err):
            vk.validate_dotted_key()

        vk = VimageKey('myapp.MyModel')
        err = f'[myapp.MyModel]: The second word of the key, should be ' \
              f'"models", not "MyModel"!'
        with self.assertRaisesMessage(InvalidKeyError, err):
            vk.validate_dotted_key()

        # Non-valid app label
        vk = VimageKey('nonexistapp.models.MyModel')
        err = f'[nonexistapp.models.MyModel]: The app "nonexistapp" is ' \
              f'either not in "INSTALLED_APPS" or it does not exist!'
        with self.assertRaisesMessage(InvalidKeyError, err):
            vk.validate_dotted_key()

        # App without a "models" module
        vk = VimageKey('no_model.models.MyModel')
        err = f'[no_model.models.MyModel]: The app "no_model" has no ' \
              f'"models" module defined. Are you sure it exists?'
        with self.assertRaisesMessage(InvalidKeyError, err):
            vk.validate_dotted_key()

        # A valid app with "models" module
        vk = VimageKey('myapp.models')
        self.assertIsNone(vk.validate_dotted_key())

        # A valid app with a non-valid model
        vk = VimageKey('myapp.models.NonExistModel')
        err = f'[myapp.models.NonExistModel]: The model "NonExistModel" ' \
              f'does not exist! ' \
              f'Available model names: "MyModel, AnotherModel, GreatModel".'
        with self.assertRaisesMessage(InvalidKeyError, err):
            vk.validate_dotted_key()

        # A valid app, with "models" module, but non-valid ImageField
        vk = VimageKey('myapp2.models.Hello.image')
        err = f'[myapp2.models.Hello.image]: The field "image" does not ' \
              f'exist! Available ImageField names: "img".'
        with self.assertRaisesMessage(InvalidKeyError, err):
            vk.validate_dotted_key()

        # A perfectly valid app!
        vk = VimageKey('myapp.models.MyModel.img')
        self.assertIsNone(vk.validate_dotted_key())
Exemplo n.º 8
0
 def test_key_non_empty_str(self):
     vk = VimageKey('')
     self.assertFalse(vk.key_non_empty_str())
     vk = VimageKey('myapp')
     self.assertTrue(vk.key_non_empty_str())
Exemplo n.º 9
0
 def test_models_in_key(self):
     vk = VimageKey('myapp.models')
     self.assertTrue(vk.models_in_key(vk.split_key()))
     vk = VimageKey('myapp.models.MyModel')
     self.assertTrue(vk.models_in_key(vk.split_key()))
     vk = VimageKey('myapp')
     self.assertFalse(vk.models_in_key(vk.split_key()))
Exemplo n.º 10
0
 def test_split_key(self):
     vk = VimageKey('myapp.models.MyModel')
     self.assertListEqual(vk.split_key(), ['myapp', 'models', 'MyModel'])
     vk = VimageKey('')
     self.assertListEqual(vk.split_key(), [''])
Exemplo n.º 11
0
 def test_repr(self):
     vk = VimageKey('app')
     self.assertEqual(repr(vk), "VimageKey('app')")
     self.assertIsInstance(eval(repr(vk)), VimageKey)
Exemplo n.º 12
0
 def test_str(self):
     vk = VimageKey('app')
     self.assertEqual(str(vk), 'app')
Exemplo n.º 13
0
    def test_validate_key(self):
        vk = VimageKey('myapp.models.MyModel')
        self.assertIsNone(vk.validate_key())

        invalid_keys = [
            VimageKey('just plain text!'),
            VimageKey('myapp,models,MyModel'),
            VimageKey('myapp.MyModel,img'),
            VimageKey('myapp.MyModel..img'),
            VimageKey('.myapp.MyModel.img'),  # leading dot
            VimageKey('myapp.MyModel.img.'),  # trailing dot
        ]
        for vk in invalid_keys:
            with self.subTest(vk=vk):
                err = f'The key "{vk.key}" is not a valid python dotted ' \
                      f'path (words separated with the "." dot character). ' \
                      f'Please check for any typos!'
                with self.assertRaisesMessage(InvalidKeyError, err):
                    vk.validate_key()
Exemplo n.º 14
0
    def test_get_fields(self):
        vk1 = VimageKey('myapp')
        vk2 = VimageKey('myapp.models.MyModel.img.other')

        vk3 = VimageKey('myapp.models')
        vk4 = VimageKey('myapp.models.AnotherModel')
        vk5 = VimageKey('myapp.models.MyModel.img')
        self.assertListEqual(vk1.get_fields(), [])
        self.assertListEqual(vk2.get_fields(), [])

        self.assertListEqual(vk3.get_fields(), all_image_fields())
        self.assertListEqual(vk4.get_fields(), another_model_image_fields())
        self.assertListEqual(vk5.get_fields(), specific_image())
Exemplo n.º 15
0
 def test_get_app_label(self):
     vk = VimageKey('myapp.models')
     self.assertEqual(vk.get_app_label(), 'myapp')
Exemplo n.º 16
0
    def test_get_specificity(self):
        vk = VimageKey('myapp')
        self.assertEqual(vk.get_specificity(), 0)

        vk = VimageKey('myapp.models')
        self.assertEqual(vk.get_specificity(), 1)

        vk = VimageKey('myapp.models.MyModel')
        self.assertEqual(vk.get_specificity(), 2)

        vk = VimageKey('myapp.models.MyModel.img')
        self.assertEqual(vk.get_specificity(), 3)
Exemplo n.º 17
0
 def test_get_img_field(self):
     vk = VimageKey('myapp.models.MyModel.img')
     self.assertListEqual(vk.get_img_field(), specific_image())
Exemplo n.º 18
0
 def test_get_app_img_fields(self):
     vk = VimageKey('myapp.models')
     self.assertListEqual(vk.get_app_img_fields(), all_image_fields())