tests/app/soc/logic/models/test_base.py
changeset 1614 797f5ae462e7
child 1673 9f67ec81f1ef
--- /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" <sverre@rabbelier.nl>',
+  ]
+
+
+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)