Skip to content

Commit

Permalink
Tests for FileSystemModelManager.add
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielfalcao committed Aug 7, 2009
1 parent 168e63b commit f499df1
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 9 deletions.
12 changes: 11 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ unit:
@echo "Running unit tests..."
@nosetests -s --with-coverage --cover-package=deadparrot tests/unit

functional: clean
functional: clean run_server
@echo "Running functional tests..."
@nosetests -s --with-coverage --cover-package=deadparrot tests/functional

Expand Down Expand Up @@ -99,3 +99,13 @@ build: clean test
@echo -ne $(green)
@echo "Get it in `pwd`/build/lib/"
@echo -ne $(normal)

run_server: kill_server
@echo "Running builtin HTTP server ..."
@python tests/functional/parrot_server.py 2>&1 > log.txt &
@sleep 2

kill_server:
@echo "Shutting down builtin HTTP server ..."
@-ps aux | egrep 'parrot_server' | egrep -v grep | awk '{ print $$2 }' | xargs kill -9 2>&1 /dev/null
@echo "Done."
4 changes: 2 additions & 2 deletions tests/functional/parrot_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@ def __unicode__(self):
class ParrotController:
@cherrypy.expose
def actor(self, attribute=None, value=None, action=None):
cherrypy.response.status = 201
cherrypy.response.status = 200
if not attribute:
if cherrypy.request.method == 'POST':
try:
actor = Actor.deserialize(cherrypy.request.body.read(), 'json')
except TypeError, e:
cherrypy.response.status = 500
return unicode(e)

cherrypy.response.status = 201
Actor.objects.add(actor)
return actor.serialize('json')

Expand Down
43 changes: 37 additions & 6 deletions tests/unit/test_file_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
import re
from mox import Mox
from pmock import *

from deadparrot.models.base import Model
Expand All @@ -26,6 +27,14 @@
from utils import assert_raises, FakeGetter
from nose import with_setup


os_module = managers.os
def setup_fake_os():
managers.os = FakeGetter()

def teardown_fake_os():
managers.os = os_module

def test_model_file_manager_class_exists():
msg1 = 'deadparrot.models should have the class FileSystemManager'
assert hasattr(managers, 'FileSystemModelManager'), msg1
Expand Down Expand Up @@ -135,15 +144,37 @@ class Wee(Model):
assert callable(Wee.objects.create), '%s.create should be callable' % classname
managers.os = os_module

os_module = managers.os
def setup_fake_os():
managers.os = FakeGetter()
def test_model_file_manager_has_method_add():
class os_mock:
path = Mock()

def teardown_fake_os():
os_module = managers.os
managers.os = os_mock
managers.os.path.expects(once()).exists(eq('/home/wee')).will(return_value(True))

class Wee(Model):
objects = managers.FileSystemModelManager(base_path='/home/wee')

classname = Wee.objects.__class__.__name__
assert hasattr(Wee.objects, 'add'), '%s should have the method "add"' % classname
assert callable(Wee.objects.add), '%s.add should be callable' % classname
managers.os = os_module

@with_setup(setup_fake_os, teardown_fake_os)
def test_model_file_manager_create_uses_codecs_utf8():
def test_create_instantiate_object_and_add():
mocker = Mox()
class Chuah(Model):
uuid = CharField(max_length=36)
objects = managers.FileSystemModelManager(base_path='/home/wee')

Chuah.objects.add = mocker.CreateMockAnything()
Chuah.objects.add(Chuah(uuid='aabbccdd'))
mocker.ReplayAll()
Chuah.objects.create(uuid='aabbccdd')
mocker.VerifyAll()

@with_setup(setup_fake_os, teardown_fake_os)
def test_model_file_manager_add_uses_codecs_utf8():
codecs_mock = Mock()
file_mock = Mock()
path_mock = Mock()
Expand Down Expand Up @@ -180,7 +211,7 @@ class Wee(Model):
file_mock.expects(once()).write(eq(expected_json))
file_mock.expects(once()).close()

got = Wee.objects.create(name='foo bar')
got = Wee.objects.add(Wee(name='foo bar'))
assert got == foobar, 'Expected %r, got %r' % (foobar, got)

file_mock.verify()
Expand Down

0 comments on commit f499df1

Please sign in to comment.