示例#1
0
    def test_register_model(self):
        """
        Tests registering a model class.
        """
        class ValidRegistryModel(Model):
            pass

        entity_registry = EntityRegistry()
        entity_registry.register_entity(ValidRegistryModel)
        entity_registry_info = entity_registry._entity_registry[ValidRegistryModel]
        self.assertEquals(entity_registry_info[0], None)
        self.assertTrue(isinstance(entity_registry_info[1], EntityConfig))
示例#2
0
    def test_register_invalid_entity_config(self):
        """
        Tests registering an invalid entity config with a model.
        """
        class ValidRegistryModel(Model):
            pass

        class InvalidEntityConfig(object):
            pass

        entity_registry = EntityRegistry()
        with self.assertRaises(ValueError):
            entity_registry.register_entity(ValidRegistryModel, InvalidEntityConfig)
示例#3
0
    def test_register_invalid_entity_config_no_qset(self):
        """
        Tests registering an invalid entity config that does not have queryset
        """
        class ValidRegistryModel(Model):
            pass

        class InvalidEntityConfig(EntityConfig):
            pass

        entity_registry = EntityRegistry()
        with self.assertRaises(ValueError):
            entity_registry.register_entity(InvalidEntityConfig)
示例#4
0
    def test_register_valid_entity_config(self):
        """
        Tests registering an entity config with a model.
        """
        class ValidRegistryModel(Model):
            pass

        class ValidEntityConfig(EntityConfig):
            queryset = ValidRegistryModel.objects.all()

        entity_registry = EntityRegistry()
        entity_registry.register_entity(ValidEntityConfig)
        entity_registry_info = entity_registry._entity_registry[ValidRegistryModel]
        self.assertTrue(isinstance(entity_registry_info, ValidEntityConfig))
示例#5
0
    def test_register_valid_entity_config(self):
        """
        Tests registering an entity config with a model.
        """
        class ValidRegistryModel(Model):
            pass

        class ValidEntityConfig(EntityConfig):
            pass

        entity_registry = EntityRegistry()
        entity_registry.register_entity(ValidRegistryModel, ValidEntityConfig)
        entity_registry_info = entity_registry._entity_registry[ValidRegistryModel]
        self.assertEquals(entity_registry_info[0], None)
        self.assertTrue(isinstance(entity_registry_info[1], ValidEntityConfig))
示例#6
0
    def test_register_manager(self):
        """
        Tests registering a manager class.
        """
        class ValidRegistryManager(Manager):
            pass

        class ValidRegistryModel(Model):
            objects = ValidRegistryManager()

        entity_registry = EntityRegistry()
        entity_registry.register_entity(ValidRegistryModel.objects)
        entity_registry_info = entity_registry._entity_registry[ValidRegistryModel]
        self.assertTrue(isinstance(entity_registry_info[0], QuerySet))
        self.assertEquals(entity_registry_info[0].model, ValidRegistryModel)
        self.assertTrue(isinstance(entity_registry_info[1], EntityConfig))
示例#7
0
    def test_register_inherited_model(self):
        """
        Tests registering a model class that extends an abstract model.
        """
        class BaseModel(Model):
            class Meta:
                abstract = True

        class ValidRegistryModel(BaseModel):
            pass

        entity_registry = EntityRegistry()
        entity_registry.register_entity(ValidRegistryModel)
        entity_registry_info = entity_registry._entity_registry[ValidRegistryModel]
        self.assertEquals(entity_registry_info[0], None)
        self.assertTrue(isinstance(entity_registry_info[1], EntityConfig))
示例#8
0
    def test_register_inherited_manager(self):
        """
        Tests registering a manager class that extends another manager.
        """
        class BaseManager(Manager):
            pass

        class ValidRegistryManager(BaseManager):
            pass

        class ValidRegistryModel(Model):
            objects = ValidRegistryManager()

        entity_registry = EntityRegistry()
        entity_registry.register_entity(ValidRegistryModel.objects)
        entity_registry_info = entity_registry._entity_registry[ValidRegistryModel]
        self.assertTrue(isinstance(entity_registry_info[0], QuerySet))
        self.assertTrue(isinstance(entity_registry_info[1], EntityConfig))
示例#9
0
@register_entity(PointsToM2mEntity.objects.prefetch_related('m2m_entity__teams'))
class PointsToM2mEntityConfig(EntityConfig):
    watching = [
        (M2mEntity, lambda m2m_entity_obj: PointsToM2mEntity.objects.filter(m2m_entity=m2m_entity_obj)),
    ]

    def get_super_entities(self, model_obj):
        return model_obj.m2m_entity.teams.all()


@register_entity(PointsToAccount)
class PointsToAccountConfig(EntityConfig):
    watching = [
        (Competitor, lambda competitor_obj: PointsToAccount.objects.filter(account__competitor=competitor_obj)),
        (Team, lambda team_obj: PointsToAccount.objects.filter(account__team=team_obj)),
    ]

    def get_entity_meta(self, model_obj):
        return {
            'competitor_name': model_obj.account.competitor.name if model_obj.account.competitor else 'None',
            'team_name': model_obj.account.team.name if model_obj.account.team else 'None',
        }


# Register the test models here. TODO - figure out why django does not like having these functions in
# the tests/models.py file
entity_registry.register_entity(TeamGroup)
entity_registry.register_entity(Competitor)
entity_registry.register_entity(MultiInheritEntity)
示例#10
0
    ]

    def get_super_entities(self, model_obj):
        return model_obj.m2m_entity.teams.all()


@register_entity(PointsToAccount)
class PointsToAccountConfig(EntityConfig):
    watching = [
        (Competitor, lambda competitor_obj: PointsToAccount.objects.filter(
            account__competitor=competitor_obj)),
        (Team, lambda team_obj: PointsToAccount.objects.filter(account__team=
                                                               team_obj)),
    ]

    def get_entity_meta(self, model_obj):
        return {
            'competitor_name':
            model_obj.account.competitor.name
            if model_obj.account.competitor else 'None',
            'team_name':
            model_obj.account.team.name if model_obj.account.team else 'None',
        }


# Register the test models here. TODO - figure out why django does not like having these functions in
# the tests/models.py file
entity_registry.register_entity(TeamGroup)
entity_registry.register_entity(Competitor)
entity_registry.register_entity(MultiInheritEntity)