Some tests for media_data, yeah!
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Fri, 1 Feb 2013 18:57:39 +0000 (19:57 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Fri, 1 Feb 2013 21:02:29 +0000 (22:02 +0100)
One in the submissions, that posts a jpg with gps data.
One in the modelmethods to test some behaviours.

The later test fails.
Fixes coming up.

mediagoblin/tests/test_modelmethods.py
mediagoblin/tests/test_submission.py

index c1064d3ae2c06b44d75696fc5389ccf68d635cc5..7719bd971909592ad5bf0a560090f418172e4c18 100644 (file)
@@ -17,7 +17,9 @@
 # Maybe not every model needs a test, but some models have special
 # methods, and so it makes sense to test them here.
 
+from nose.tools import assert_equal
 
+from mediagoblin.db.base import Session
 from mediagoblin.db.models import MediaEntry
 
 from mediagoblin.tests.tools import get_app, \
@@ -128,3 +130,18 @@ class TestMediaEntrySlugs(object):
             u"@!#?@!", save=False)
         qbert_entry.generate_slug()
         assert qbert_entry.slug is None
+
+
+def test_media_data_init():
+    Session.rollback()
+    Session.remove()
+    media = MediaEntry()
+    media.media_type = u"mediagoblin.media_types.image"
+    assert media.media_data is None
+    media.media_data_init()
+    assert media.media_data is not None
+    obj_in_session = 0
+    for obj in Session():
+        obj_in_session += 1
+        print repr(obj)
+    assert_equal(obj_in_session, 0)
index 00f1ed3de0a480a402206474eaad87303e6f2cb8..fc3d8c835b3739477b7301dc3b660783cf16b5c4 100644 (file)
@@ -27,6 +27,7 @@ from pkg_resources import resource_filename
 from mediagoblin.tests.tools import get_app, \
     fixture_add_user
 from mediagoblin import mg_globals
+from mediagoblin.db.models import MediaEntry
 from mediagoblin.tools import template
 from mediagoblin.media_types.image import MEDIA_MANAGER as img_MEDIA_MANAGER
 
@@ -40,6 +41,7 @@ EVIL_FILE = resource('evil')
 EVIL_JPG = resource('evil.jpg')
 EVIL_PNG = resource('evil.png')
 BIG_BLUE = resource('bigblue.png')
+from .test_exif import GPS_JPG
 
 GOOD_TAG_STRING = u'yin,yang'
 BAD_TAG_STRING = unicode('rage,' + 'f' * 26 + 'u' * 26)
@@ -122,7 +124,7 @@ class TestSubmission:
         self.check_normal_upload(u'Normal upload 2', GOOD_PNG)
 
     def check_media(self, request, find_data, count=None):
-        media = request.db.MediaEntry.find(find_data)
+        media = MediaEntry.find(find_data)
         if count is not None:
             assert_equal(media.count(), count)
             if count == 0:
@@ -265,6 +267,11 @@ class TestSubmission:
         # -------------------------------------------
         self.check_false_image(u'Malicious Upload 3', EVIL_PNG)
 
+    def test_media_data(self):
+        self.check_normal_upload(u"With GPS data", GPS_JPG)
+        media = self.check_media(None, {"title": u"With GPS data"}, 1)
+        assert_equal(media.media_data.gps_latitude, 59.336666666666666)
+
     def test_processing(self):
         data = {'title': u'Big Blue'}
         response, request = self.do_post(data, *REQUEST_CONTEXT, do_follow=True,