app/taggable-mixin/taggable_tests.py
changeset 2679 0ede2f3adbc1
parent 2678 a525a55833f1
child 2680 b96ba702e82c
--- a/app/taggable-mixin/taggable_tests.py	Fri Jul 24 21:00:04 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-#!/usr/bin/env python
-
-#Copyright 2008 Adam A. Crossland
-#
-#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.
-
-import sys
-import os.path
-
-APPENGINE_PATH = '../../thirdparty/google_appengine'
-
-# Add app-engine related libraries to your path
-paths = [
-    APPENGINE_PATH,
-    os.path.join(APPENGINE_PATH, 'lib', 'django'),
-    os.path.join(APPENGINE_PATH, 'lib', 'webob'),
-    os.path.join(APPENGINE_PATH, 'lib', 'yaml', 'lib')
-]
-for path in paths:
-  if not os.path.exists(path): 
-    raise 'Path does not exist: %s' % path
-sys.path = paths + sys.path
-
-import unittest
-from google.appengine.api import apiproxy_stub_map
-from google.appengine.api import datastore_file_stub
-from google.appengine.api import mail_stub
-from google.appengine.api import user_service_stub
-from google.appengine.ext import webapp
-from google.appengine.ext import db
-from google.appengine.api.memcache import memcache_stub
-from taggable import *
-
-APP_ID = u'taggable'
-AUTH_DOMAIN = 'gmail.com'
-LOGGED_IN_USER = 'me@example.com'  # set to '' for no logged in user
-
-BLOG_NAME='test_blog'
-
-class BlogIndex(db.Model):
-    "A global counter used to provide the index of the next blog post."
-    index = db.IntegerProperty(required=True, default=0)
-    "The next available index for a Post."
-
-class Post(Taggable, db.Model):
-    index = db.IntegerProperty(required=True, default=0)
-    body = db.TextProperty(required = True)
-    title = db.StringProperty()
-    added = db.DateTimeProperty(auto_now_add=True)
-    added_month = db.IntegerProperty()
-    added_year = db.IntegerProperty()
-    edited = db.DateTimeProperty()
-        
-    def __init__(self, parent=None, key_name=None, app=None, **entity_values):
-        db.Model.__init__(self, parent, key_name, app, **entity_values)
-        Taggable.__init__(self)
-        
-    def get_all_posts():
-        return db.GqlQuery("SELECT * from Post ORDER BY added DESC")
-    Get_All_Posts = staticmethod(get_all_posts)
-        
-    @classmethod        
-    def get_posts(cls, start_index=0, count=10):
-        start_index = int(start_index) # Just make sure that we have an int
-        posts = Post.gql('WHERE index <= :1 ORDER BY index DESC', start_index).fetch(count + 1)
-        if len(posts) > count:
-            posts = posts[:count]
-            
-        return posts
-
-    @classmethod
-    def new_post(cls, new_title=None, new_body=None, new_tags=[]):
-        new_post = None
-        if new_title is not None and new_body is not None:
-            def txn():
-                blog_index = BlogIndex.get_by_key_name(BLOG_NAME)
-                if blog_index is None:
-                    blog_index = BlogIndex(key_name=BLOG_NAME)
-                new_index = blog_index.index
-                blog_index.index += 1
-                blog_index.put()
-            
-                new_post_key_name = BLOG_NAME + str(new_index)
-                new_post = Post(key_name=new_post_key_name, parent=blog_index,
-                               index = new_index, title = new_title,
-                               body = new_body)
-                new_post.put()
-                
-                return new_post
-            new_post = db.run_in_transaction(txn)
-        
-            new_post.tags = new_tags
-            new_post.put()
-        else:
-            raise Exception("Must supply both new_title and new_body when creating a new Post.")
-        
-        return new_post
-    
-    def delete(self):
-        # Perform any actions that are required to maintain data integrity
-        # when this Post is delete.
-        # Disassociate this Post from any Tag
-        self.set_tags([])
-        
-        # Finally, call the real delete
-        db.Model.delete(self)
-
-class MyTest(unittest.TestCase):
-
-    def setUp(self):
-      # Start with a fresh api proxy.
-      apiproxy_stub_map.apiproxy = apiproxy_stub_map.APIProxyStubMap()
-
-      # Use a fresh stub datastore.
-      stub = datastore_file_stub.DatastoreFileStub(APP_ID, '/dev/null', '/dev/null')
-      apiproxy_stub_map.apiproxy.RegisterStub('datastore_v3', stub)
-
-      # Use a fresh memcache stub.
-      apiproxy_stub_map.apiproxy.RegisterStub('memcache', memcache_stub.MemcacheServiceStub())
-        
-      # Use a fresh stub UserService.
-      apiproxy_stub_map.apiproxy.RegisterStub(
-          'user', user_service_stub.UserServiceStub())
-      os.environ['AUTH_DOMAIN'] = AUTH_DOMAIN
-      os.environ['USER_EMAIL'] = LOGGED_IN_USER
-      os.environ['APPLICATION_ID'] = APP_ID
-
-    def testSimpleTagAdding(self):
-      new_post = Post.new_post(new_title='test post 1', new_body='This is a test post.  Please ignore.')
-      assert new_post is not None
-        
-      new_post.tags = "test, testing, tests"
-      self.assertEqual(len(new_post.tags), 3)
-
-    def testComplexTagAdding(self):
-      new_post = Post.new_post(new_title='test post 1', new_body='This is a test post.  Please ignore.')
-      assert new_post is not None
-        
-      new_post.tags = "  test, testing, tests,,,tag with spaces"
-      self.assertEqual(len(new_post.tags), 4)
-
-      tag = new_post.tags[3]
-      assert tag is not None
-      self.assertEqual(tag.tag, 'tag with spaces')
-      self.assertEqual(tag.tagged_count, 1)
-
-      tag2 = Tag.get_by_name('tag with spaces')
-      assert tag2 is not None
-      self.assertEqual(tag.tag, 'tag with spaces')
-      self.assertEqual(tag.tagged_count, 1)
-
-    def testTagDeletion(self):
-      new_post = Post.new_post(new_title='test post 2', new_body='This is a test post.  Please continue to ignore.')
-      assert new_post is not None
-        
-      new_post.tags = "test, testing, tests"
-      self.assertEqual(len(new_post.tags), 3)
-
-      new_post.tags = "test"
-      self.assertEqual(len(new_post.tags), 1)
-
-    def testTagCounts(self):
-      new_post3 = Post.new_post(new_title='test post 3', new_body='This is a test post.  Please continue to ignore.')
-      assert new_post3 is not None
-      new_post3.tags = "foo, bar, baz"
-      new_post4 = Post.new_post(new_title='test post 4', new_body='This is a test post.  Please continue to ignore.')
-      assert new_post4 is not None
-      new_post4.tags = "bar, baz, bletch"
-      new_post5 = Post.new_post(new_title='test post 5', new_body='This is a test post.  Please continue to ignore.')
-      assert new_post5 is not None
-      new_post5.tags = "baz, bletch, quux"
-      
-      foo_tag = Tag.get_by_name('foo')
-      assert foo_tag is not None
-      self.assertEqual(foo_tag.tagged_count, 1)
-      
-      bar_tag = Tag.get_by_name('bar')
-      assert bar_tag is not None
-      self.assertEqual(bar_tag.tagged_count, 2)
-      
-      baz_tag = Tag.get_by_name('baz')
-      assert baz_tag is not None
-      self.assertEqual(baz_tag.tagged_count, 3)
-      
-      bletch_tag = Tag.get_by_name('bletch')
-      assert bletch_tag is not None
-      self.assertEqual(bletch_tag.tagged_count, 2)
-      
-      quux_tag = Tag.get_by_name('quux')
-      assert quux_tag is not None
-      self.assertEqual(quux_tag.tagged_count, 1)
-      
-      new_post3.tags = 'bar, baz'
-      foo_tag = Tag.get_by_name('foo')
-      assert foo_tag is not None
-      self.assertEqual(len(new_post3.tags), 2)
-      self.assertEqual(foo_tag.tagged_count, 0)
-      
-    def testTagGetTagsForKey(self):
-      new_post = Post.new_post(new_title='test post 6', new_body='This is a test post.  Please continue to ignore.', new_tags='foo,bar,bletch,quux')
-      assert new_post is not None
-
-      tags = Tag.get_tags_for_key(new_post.key())
-      assert tags is not None
-      self.assertEqual(type(tags), type([]))
-      self.assertEqual(len(tags), 4)
-    
-    def testTagGetByName(self):
-      new_post = Post.new_post(new_title='test post 6', new_body='This is a test post.  Please continue to ignore.', new_tags='foo,bar,bletch,quux')
-      assert new_post is not None
-
-      quux_tag = Tag.get_by_name('quux')
-      assert quux_tag is not None
-      
-      zizzle_tag = Tag.get_by_name('zizzle')
-      assert zizzle_tag is None
-      
-    def testTagsString(self):
-      new_post = Post.new_post(new_title='test post 6', new_body='This is a test post.  Please continue to ignore.', new_tags='  pal,poll ,,pip,pony')
-      assert new_post is not None
-      self.assertEqual(new_post.tags_string(), "pal,poll,pip,pony")
-      new_post.tag_separator = "|"
-      self.assertEqual(new_post.tags_string(), "pal|poll|pip|pony")
-      new_post.tag_separator = " , "
-      self.assertEqual(new_post.tags_string(), "pal , poll , pip , pony")
-      
-      new_post.tag_separator = ", "
-      new_post.tags = "pal, pill, pip"
-      self.assertEqual(len(new_post.tags), 3)
-      self.assertEqual(new_post.tags_string(), "pal, pill, pip")
-      
-if __name__ == '__main__':
-    unittest.main()