aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/tests/test_modelmethods.py
diff options
context:
space:
mode:
authorJessica Tallon <jessica@megworld.co.uk>2014-10-21 11:44:11 +0100
committerJessica Tallon <jessica@megworld.co.uk>2014-10-21 11:44:11 +0100
commit5ddc85e071fd7adec6b922a03c2e8caa4bad3c5c (patch)
tree832007aa1223b14ea84e2a1235313381941a21a9 /mediagoblin/tests/test_modelmethods.py
parenta806e4dcc4921fa309f83bce82b367a699dc9636 (diff)
downloadmediagoblin-5ddc85e071fd7adec6b922a03c2e8caa4bad3c5c.tar.lz
mediagoblin-5ddc85e071fd7adec6b922a03c2e8caa4bad3c5c.tar.xz
mediagoblin-5ddc85e071fd7adec6b922a03c2e8caa4bad3c5c.zip
Fix #984 - Improvements to Activity and ActivityIntermediator
- Add unit tests to cover get and set methods on Activity - Rewrite the set to remove set and use Session.flush instead - Use sqlalchemy's validator instead of .save hack
Diffstat (limited to 'mediagoblin/tests/test_modelmethods.py')
-rw-r--r--mediagoblin/tests/test_modelmethods.py58
1 files changed, 56 insertions, 2 deletions
diff --git a/mediagoblin/tests/test_modelmethods.py b/mediagoblin/tests/test_modelmethods.py
index 82cca855..1ab0c476 100644
--- a/mediagoblin/tests/test_modelmethods.py
+++ b/mediagoblin/tests/test_modelmethods.py
@@ -20,10 +20,12 @@
from __future__ import print_function
from mediagoblin.db.base import Session
-from mediagoblin.db.models import MediaEntry, User, Privilege
+from mediagoblin.db.models import MediaEntry, User, Privilege, Activity, \
+ Generator
from mediagoblin.tests import MGClientTestCase
-from mediagoblin.tests.tools import fixture_add_user
+from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry, \
+ fixture_add_activity
try:
import mock
@@ -230,3 +232,55 @@ class TestUserUrlForSelf(MGClientTestCase):
self.user(u'lindsay').url_for_self(fake_urlgen())
assert excinfo.errisinstance(TypeError)
assert 'object is not callable' in str(excinfo)
+
+class TestActivitySetGet(object):
+ """ Test methods on the Activity and ActivityIntermediator models """
+
+ @pytest.fixture(autouse=True)
+ def setup(self, test_app):
+ self.app = test_app
+ self.user = fixture_add_user()
+ self.obj = fixture_media_entry()
+ self.target = fixture_media_entry()
+
+ def test_set_activity_object(self):
+ """ Activity.set_object should produce ActivityIntermediator """
+ # The fixture will set self.obj as the object on the activity.
+ activity = fixture_add_activity(self.obj, actor=self.user)
+
+ # Assert the media has been associated with an AI
+ assert self.obj.activity is not None
+
+ # Assert the AI on the media and object are the same
+ assert activity.object == self.obj.activity
+
+ def test_activity_set_target(self):
+ """ Activity.set_target should produce ActivityIntermediator """
+ # This should set everything needed on the target
+ activity = fixture_add_activity(self.obj, actor=self.user)
+ activity.set_target(self.target)
+
+ # Assert the media has been associated with the AI
+ assert self.target.activity is not None
+
+ # assert the AI on the media and target are the same
+ assert activity.target == self.target.activity
+
+ def test_get_activity_object(self):
+ """ Activity.get_object should return a set object """
+ activity = fixture_add_activity(self.obj, actor=self.user)
+
+ print("self.obj.activity = {0}".format(self.obj.activity))
+
+ # check we now can get the object
+ assert activity.get_object is not None
+ assert activity.get_object.id == self.obj.id
+
+ def test_get_activity_target(self):
+ """ Activity.set_target should return a set target """
+ activity = fixture_add_activity(self.obj, actor=self.user)
+ activity.set_target(self.target)
+
+ # check we can get the target
+ assert activity.get_target is not None
+ assert activity.get_target.id == self.target.id