示例#1
0
class TestMockQuerySet(object):
    def setup(self):
        self.foo = FooClass(name='foo')
        self.bar = FooClass(name='bar')
        self.qs = MockQuerySet([self.foo, self.bar])

    def test_mock_qs_results(self):
        assert self.qs._mock_qs_results == [self.foo, self.bar]

    def test_slice(self):
        assert self.qs[0] == self.foo
        assert self.qs[1] == self.bar

    def test_all_len_list(self):
        assert len(self.qs.all()) == 2
        assert list(self.qs.all()) == [self.foo, self.bar]

    def test_all_slice(self):
        assert self.qs.all()[0] == self.foo
        assert self.qs.all()[1] == self.bar

    def test_filter(self):
        result = self.qs.filter(name='foo')
        assert result._mock_qs_results == [self.foo]

    def test_filter_in(self):
        result = self.qs.filter(name__in=['foo', 'buzz'])
        assert result._mock_qs_results == [self.foo]

    def test_filter_contains(self):
        result = self.qs.filter(name__contains='f')
        assert result._mock_qs_results == [self.foo]

    def test_filter_exact(self):
        self.qs._mock_qs_results.append(FooClass(name='fooooooo'))
        result = self.qs.filter(name__exact='foo')
        assert result._mock_qs_results == [self.foo]

    def test_filter_startswith(self):
        self.fooooooo = FooClass(name='fooooooo')
        self.qs._mock_qs_results.append(self.fooooooo)
        result = self.qs.filter(name__startswith='foo')
        assert result._mock_qs_results == [self.foo, self.fooooooo]

    def test_bad_lookup(self):
        with pytest.raises(MockNotImplementedError):
            self.qs.filter(name__innnnnn=['foo'])

    def test_unknown_field(self):
        with pytest.raises(AttributeError):
            self.qs.filter(unknown_field='')

    def test_filter_chain(self):
        result = self.qs.filter(name='foo').filter(name='bar')
        assert result._mock_qs_results == []

    def test_filter_redundant_chain(self):
        result = self.qs.filter(name='foo').filter(name='foo')
        assert result._mock_qs_results == [self.foo]

    def test_relation_attribute(self):
        """
        Django-style access to a related objects's fields isn't
        supported yet.
        """
        with pytest.raises(MockNotImplementedError):
            self.qs.filter(site__id__in=[1])

    def test_len(self):
        assert len(self.qs) == 2
示例#2
0
class TestMockQuerySet(object):
    def setup(self):
        self.foo = FooClass(name='foo')
        self.bar = FooClass(name='bar')
        self.qs = MockQuerySet([self.foo, self.bar])

    def test_mock_qs_results(self):
        assert self.qs._mock_qs_results == [self.foo, self.bar]

    def test_slice(self):
        assert self.qs[0] == self.foo
        assert self.qs[1] == self.bar

    def test_all_len_list(self):
        assert len(self.qs.all()) == 2
        assert list(self.qs.all()) == [self.foo, self.bar]

    def test_all_slice(self):
        assert self.qs.all()[0] == self.foo
        assert self.qs.all()[1] == self.bar

    def test_filter(self):
        result = self.qs.filter(name='foo')
        assert result._mock_qs_results == [self.foo]

    def test_filter_in(self):
        result = self.qs.filter(name__in=['foo', 'buzz'])
        assert result._mock_qs_results == [self.foo]

    def test_filter_contains(self):
        result = self.qs.filter(name__contains='f')
        assert result._mock_qs_results == [self.foo]

    def test_filter_exact(self):
        self.qs._mock_qs_results.append(FooClass(name='fooooooo'))
        result = self.qs.filter(name__exact='foo')
        assert result._mock_qs_results == [self.foo]

    def test_filter_startswith(self):
        self.fooooooo = FooClass(name='fooooooo')
        self.qs._mock_qs_results.append(self.fooooooo)
        result = self.qs.filter(name__startswith='foo')
        assert result._mock_qs_results == [self.foo, self.fooooooo]

    def test_bad_lookup(self):
        with pytest.raises(MockNotImplementedError):
            self.qs.filter(name__innnnnn=['foo'])

    def test_unknown_field(self):
        with pytest.raises(AttributeError):
            self.qs.filter(unknown_field='')

    def test_filter_chain(self):
        result = self.qs.filter(name='foo').filter(name='bar')
        assert result._mock_qs_results == []

    def test_filter_redundant_chain(self):
        result = self.qs.filter(name='foo').filter(name='foo')
        assert result._mock_qs_results == [self.foo]

    def test_relation_attribute(self):
        """
        Django-style access to a related objects's fields isn't
        supported yet.
        """
        with pytest.raises(MockNotImplementedError):
            self.qs.filter(site__id__in=[1])

    def test_len(self):
        assert len(self.qs) == 2