diff -r 59e5cc89e509 -r 797f5ae462e7 tests/app/soc/logic/models/test_base.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/app/soc/logic/models/test_base.py Tue Mar 03 23:27:39 2009 +0000 @@ -0,0 +1,152 @@ +#!/usr/bin/python2.5 +# +# Copyright 2009 the Melange authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +__authors__ = [ + '"Sverre Rabbelier" ', + ] + + +import unittest + +from google.appengine.api import users +from google.appengine.ext import db + +from soc.logic.models import base + + +class TestModel(db.Model): + """Simpel test model. + """ + + value = db.IntegerProperty() + + +class TestModelLogic(base.Logic): + """Simple test logic. + """ + + def __init__(self): + super(TestModelLogic, self).__init__(TestModel) + + +class UserTest(unittest.TestCase): + """Tests related to user logic. + """ + + def setUp(self): + """Set up required for the slot allocation tests. + """ + + entities = [] + + for i in range(5): + entity = TestModel(key_name='test_%d' % i, value=i) + entity.put() + entities.append(entity) + + self.logic = TestModelLogic() + self.entities = entities + + def testGetForFields(self): + """Test that all entries were retrieved. + """ + + expected = set(range(5)) + actual = set([i.value for i in self.logic.getForFields()]) + self.assertEqual(expected, actual) + + def testGetForFieldsFiltered(self): + """Test that only the entry that matches the filter is retrieved. + """ + + fields = {'value': 1} + + expected = [1] + actual = [i.value for i in self.logic.getForFields(fields)] + + self.assertEqual(expected, actual) + + def testGetForFieldsWithOperator(self): + """Test that all entries matching the filter are retrieved. + """ + + fields = {'value <': 3} + + expected = set(range(3)) + actual = set([i.value for i in self.logic.getForFields(fields)]) + + self.assertEqual(expected, actual) + + def testGetForFieldsNonMatching(self): + """Test that unique returns None instead of a list. + """ + + fields = {'value': 1337} + + expected = [] + actual = self.logic.getForFields(fields) + self.assertEqual(expected, actual) + + def testGetForFieldsUnique(self): + """Test that unique returns an entry instead of a list. + """ + + fields = {'value': 1} + + actual = self.logic.getForFields(fields, unique=True) + self.assertTrue(isinstance(actual, TestModel)) + + def testGetForFieldsUniqueEmpty(self): + """Test that unique returns None instead of a list. + """ + + fields = {'value': 1337} + + expected = None + actual = self.logic.getForFields(fields, unique=True) + self.assertEqual(expected, actual) + + def testGetForFieldsMultiFilter(self): + """Test that all entries matching an 'IN' filter are returned. + """ + + fields = {'value': [1, 2]} + + expected = 2 + actual = len(self.logic.getForFields(fields)) + self.assertEqual(expected, actual) + + def testGetFieldsOrdened(self): + """Test that fields can be ordened. + """ + + order = ['value'] + + expected = range(5) + actual = [i.value for i in self.logic.getForFields(order=order)] + self.assertEqual(expected, actual) + + def testGetFieldsReverseOrdened(self): + """Test that fields can be ordened in reverse. + """ + + order = ['-value'] + + expected = range(5) + expected.reverse() + actual = [i.value for i in self.logic.getForFields(order=order)] + self.assertEqual(expected, actual)