コード例 #1
0
    def test_modeldict_instances(self):
        base_count = ModelDictModel.objects.count()

        mydict = ModelDict(ModelDictModel,
                           key='key',
                           value='value',
                           instances=True)
        mydict['foo'] = ModelDictModel(key='foo', value='bar')
        assert isinstance(mydict['foo'], ModelDictModel)
        assert mydict['foo'].pk
        assert mydict['foo'].value == 'bar'
        assert ModelDictModel.objects.values_list(
            'value', flat=True).get(key='foo') == 'bar'
        assert ModelDictModel.objects.count() == base_count + 1
        old_pk = mydict['foo'].pk
        mydict['foo'] = ModelDictModel(key='foo', value='bar2')
        assert isinstance(mydict['foo'], ModelDictModel)
        assert mydict['foo'].pk == old_pk
        assert mydict['foo'].value == 'bar2'
        assert ModelDictModel.objects.values_list(
            'value', flat=True).get(key='foo') == 'bar2'
        assert ModelDictModel.objects.count() == base_count + 1

        # test deletion
        mydict['foo'].delete()
        assert 'foo' not in mydict
コード例 #2
0
    def test_setdefault_instances(self):
        mydict = ModelDict(ModelDictModel, key='key', value='value')

        with pytest.raises(KeyError):
            mydict['hello']

        instance = ModelDictModel(key='hello', value='world')
        ret = mydict.setdefault('hello', instance)
        assert ret == 'world'
        assert mydict['hello'] == 'world'

        instance2 = ModelDictModel(key='hello', value='world2')
        ret = mydict.setdefault('hello', instance2)
        assert ret == 'world'
        assert mydict['hello'] == 'world'