Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
dj-kaos / models / test_configs.py
Size: Mime:
from dj_kaos.building_blocks.models import UUIDModel, TimestampedModel, NamedModel, SluggedModel, ArchivableModel
from dj_kaos.models.configs import *
from dj_kaos.models.consts import FilterLookup, FieldsetHeader
from dj_kaos.ontology.models import OntologicalObject


class TestModelConfig:
    def test_get_actions(self):
        model_config = ModelConfig()
        request = None
        obj = None
        assert model_config.get_actions(request, obj) == ()

    def test_get_change_actions(self):
        model_config = ModelConfig()
        request = None
        obj = None
        assert model_config.get_change_actions(request, obj) == ()

    def test_get_search_fields(self):
        model_config = ModelConfig()
        request = None
        assert model_config.get_search_fields(request) == ()

    def test_get_list_display(self):
        model_config = ModelConfig()
        request = None
        assert model_config.get_list_display(request) == ()

    def test_get_list_filter(self):
        model_config = ModelConfig()
        request = None
        obj = None
        assert model_config.get_list_filter(request) == ()

    def test_get_readonly_fields(self):
        model_config = ModelConfig()
        request = None
        obj = None
        assert model_config.get_readonly_fields(request, obj) == ()

    def test_get_fields(self):
        model_config = ModelConfig()
        request = None
        obj = None
        assert model_config.get_fields(request, obj) == ()

    def test_get_flat_fields(self):
        model_config = ModelConfig()
        exclude = None
        assert model_config.get_flat_fields(exclude) == ()

    def test_get_fieldsets(self):
        model_config = ModelConfig()
        request = None
        obj = None
        assert model_config.get_fieldsets(request, obj) == ()

    def test_get_edit_readonly_fields(self):
        model_config = ModelConfig()
        request = None
        obj = None
        assert model_config.get_edit_readonly_fields(request, obj) == ()


class TestModelConfig__combine:
    def test_combine(self):
        class TestConfig1(ModelConfig):
            unrequired_fields = ('field1',)
            actions = ('action1',)
            change_actions = ('change_action1',)
            search_fields = ('field2',)
            list_display = ('field3',)
            list_filter = ('field4',)
            readonly_fields = ('field5',)
            fields = ('field6',)
            _fieldsets = (('set1', {'fields': ('field7',)}),)
            attrs_to_track = ('field8',)

        class TestConfig2(ModelConfig):
            unrequired_fields = ('field9',)
            actions = ('action2',)
            change_actions = ('change_action2',)
            search_fields = ('field10',)
            list_display = ('field11',)
            list_filter = ('field12',)
            readonly_fields = ('field13',)
            fields = ('field14',)
            _fieldsets = (('set2', {'fields': ('field15',)}),)
            attrs_to_track = ('field16',)

        combined = ModelConfig.combine(TestConfig1(), TestConfig2())
        assert combined.unrequired_fields == ('field1', 'field9')
        assert combined.actions == ('action2', 'action1')
        assert combined.change_actions == ('change_action2', 'change_action1')
        assert combined.search_fields == ('field2', 'field10')
        assert combined.list_display == ('field3', 'field11')
        assert combined.list_filter == ('field12', 'field4')
        assert combined.readonly_fields == ('field5', 'field13')
        assert combined.fields == ('field6', 'field14')
        assert combined.fieldsets == (
            ('set1', {'fields': ('field7',)}),
            ('set2', {'fields': ('field15',)})
        )
        assert combined.attrs_to_track == ('field8', 'field16')


def test_UUIDModelConfig_fields():
    config = UUIDModel.config

    fields = ('uuid',)

    assert config.unrequired_fields == ()
    assert config.actions == ()
    assert config.change_actions == ()
    assert config.search_fields == fields
    assert config.list_filter == ()
    assert config.list_display == ()
    assert config.readonly_fields == fields
    assert config.edit_readonly_fields == ()
    assert config.fields == fields
    assert config.fieldsets == ((FieldsetHeader.ADMIN, {'fields': fields, 'classes': ('collapse', 'collapsed',)}),)
    assert config.attrs_to_track == ()
    assert config.filterset_fields == {
        'uuid': FilterLookup.EXACT,
    }


def test_TimestampedModelConfig_fields():
    config = TimestampedModel.config

    fields = ('created', 'modified')

    assert config.unrequired_fields == ()
    assert config.actions == ()
    assert config.change_actions == ()
    assert config.search_fields == ()
    assert config.list_filter == fields
    assert config.list_filter == fields
    assert config.readonly_fields == fields
    assert config.edit_readonly_fields == ()
    assert config.fields == fields
    assert config.fieldsets == (
        (FieldsetHeader.ADMIN, {'fields': (fields,)}),
    )
    assert config.attrs_to_track == ()
    assert config.filterset_fields == {
        'created': FilterLookup.NUMBER,
        'modified': FilterLookup.NUMBER,
    }


def test_OntologicalObjectConfig():
    config = OntologicalObject.config

    assert config.unrequired_fields == ()
    assert config.actions == ArchivableModel.config.actions
    assert config.change_actions == ArchivableModel.config.change_actions
    assert config.attrs_to_track == ()
    assert config.list_filter == (*TimestampedModel.config.list_filter, *ArchivableModel.config.list_filter)
    assert config.search_fields == UUIDModel.config.search_fields
    assert config.list_display == ArchivableModel.config.list_display
    assert config.fields == (*UUIDModel.config.fields, *TimestampedModel.config.fields, *ArchivableModel.config.fields)
    assert config.readonly_fields == (
        *UUIDModel.config.readonly_fields, *TimestampedModel.config.readonly_fields,
        *ArchivableModel.config.readonly_fields)
    assert config.edit_readonly_fields == ()
    assert config.fieldsets == (
        (FieldsetHeader.ADMIN,
         {'fields': ('is_unarchived', 'uuid', ('created', 'modified')), 'classes': ('collapse', 'collapsed',)}),
    )
    assert config.filterset_fields == {
        **UUIDModel.config.filterset_fields, **TimestampedModel.config.filterset_fields,
        **ArchivableModel.config.filterset_fields
    }


def test_NamedModelConfig():
    config = NamedModel.config

    fields = ('name',)

    assert config.unrequired_fields == ()
    assert config.actions == ()
    assert config.change_actions == ()
    assert config.list_filter == ()
    assert config.list_display == fields
    assert config.search_fields == fields
    assert config.edit_readonly_fields == ()
    assert config.list_display == fields
    assert config.fields == fields
    assert config.fieldsets == ((None, {'fields': fields}),)
    assert config.attrs_to_track == ()
    assert config.filterset_fields == {
        'name': FilterLookup.STRING,
    }


def test_SluggedModelConfig():
    config = SluggedModel.config

    fields = ('slug',)

    assert config.unrequired_fields == fields
    assert config.actions == ()
    assert config.change_actions == ()
    assert config.list_filter == ()
    assert config.list_display == fields
    assert config.search_fields == fields
    assert config.readonly_fields == ()
    assert config.edit_readonly_fields == fields
    assert config.fields == fields
    assert config.fieldsets == (
        (None, {'fields': fields}),
    )
    assert config.attrs_to_track == ()
    assert config.filterset_fields == {
        'slug': FilterLookup.STRING,
    }