From 588b230486111a590863579cbf022a6d8587b639 Mon Sep 17 00:00:00 2001 From: Mike Dirolf Date: Wed, 25 Mar 2009 10:22:10 -0400 Subject: [PATCH] some more tests that already pass --- test/test_site/index.py | 134 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) diff --git a/test/test_site/index.py b/test/test_site/index.py index b3e458a..30865e0 100644 --- a/test/test_site/index.py +++ b/test/test_site/index.py @@ -1,3 +1,20 @@ +#!/usr/bin/env python +# +# Copyright 2008-2009 10gen Inc. +# +# 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. +# + from google.appengine.api import users from google.appengine.ext import db from google.appengine.api import datastore @@ -1083,4 +1100,121 @@ class TestBytes(db.Model): assert out.a == test.a assert isinstance(out, test.__class__) +# The remaining tests are adapted from here: +# http://code.google.com/p/gae-sqlite/source/browse/trunk/unittests.py +# Which is copyright 2008 Jens Scheffler and used under the Apache License v2.0 +class TestModel(db.Model): + text = db.StringProperty(default="some text") + number = db.IntegerProperty(default=42) + float = db.FloatProperty(default=3.14) + cond1 = db.BooleanProperty(default=True) + cond2 = db.BooleanProperty(default=False) + +for result in TestModel.all().fetch(1000): + result.delete() + +print 'Test writing a value twice...
' +model = TestModel() +key = model.put() +id = key._Key__reference.path().element_list()[-1].id() +key = model.put() +id2 = key._Key__reference.path().element_list()[-1].id() +assert id == id2 + +print 'Test getting a single model from the datastore...
' +model1 = TestModel(number=1) +model2 = TestModel(number=2, text='#2') +model3 = TestModel(number=3) +key1 = model1.put() +key2 = model2.put() +key3 = model3.put() +fetched = TestModel.get(key2) +assert 2 == fetched.number +assert '#2' == fetched.text +assert 3.14 == fetched.float +assert True == fetched.cond1 +assert False == fetched.cond2 + +print 'Test getting a single model from the datastore with a string key...
' +model1 = TestModel(number=1) +model2 = TestModel(key_name='custom', number=2, text='#2') +model3 = TestModel(number=3) +key1 = model1.put() +key2 = model2.put() +key3 = model3.put() +fetched = TestModel.get_by_key_name('custom') +assert 2 == fetched.number +assert '#2' == fetched.text + +print 'Test getting several models from the datastore...
' +model1 = TestModel(number=1) +model2 = TestModel(number=2) +model3 = TestModel(number=3) +key1 = model1.put() +key2 = model2.put() +key3 = model3.put() +fetched = TestModel.get([key2, key1]) +assert 2 == len(fetched) +assert 2 == fetched[0].number +assert 1 == fetched[1].number + +print 'Test if get_or_insert works correctly...
' +model1 = TestModel(number=1) +model1.put() +model2 = TestModel.get_or_insert('foo', number=13, text='t') +assert 13 == model2.number +fetched = TestModel.get_by_key_name('foo') +assert 13 == fetched.number + +print 'Test a simple query...
' +model = TestModel(text='t1', number=13) +model.put() +data = TestModel.gql( + 'WHERE text=:1 and number=:2 order by text desc', + 't1', 13).fetch(5) +assert 1 == len(data) +assert 't1' == data[0].text +assert 13 == data[0].number + +print 'Test query on non-existent field...
' +model = TestModel(text='t1', number=13) +model.put() +data = TestModel.gql( + 'WHERE text2=:1 and number=:2 order by text desc', + 't1', 13).fetch(5) +assert 0 == len(data) + +print 'Test query on non-existent collection...
' +class UnknownKind(TestModel): + pass +data = UnknownKind.gql( + 'WHERE text=:1', 't1').fetch(5) +assert 0 == len(data) + +print 'Test storing an unknown kind of Model...
' +class UnknownKind(TestModel): + pass +model = UnknownKind() +model.put() + +print 'Test what happens if a field gets added to a model...
' +class Mutation(TestModel): + @classmethod + def kind(cls): + return 'TestModel' + text2 = db.StringProperty(default='some more text') +model = Mutation(text='Text 1', text2='Text 2') +model.put() +model.delete() + +print 'Test what happens if a field changes its type...
' +class Mutation(db.Model): + @classmethod + def kind(cls): + return 'TestModel' + text = db.IntegerProperty(default=42) +model = Mutation(text=23) +model.put() +model.delete() + print ''