Browse Source

Tests for select avatar from gallery view.

Rafał Pitoń 11 years ago
parent
commit
225f2a411f

+ 4 - 1
misago/templates/misago/usercp/avatar_galleries.html

@@ -3,7 +3,7 @@
 
 
 {% block title %}
-{% trans "Avatars gallery" %} | {% trans "Change options" %} | {{ block.super }}
+{% trans "Avatars gallery" %}{{ block.super }}
 {% endblock title %}
 
 
@@ -41,6 +41,9 @@
       {% endfor %}
 
     </div>
+    <div class="form-footer">
+      <a href="{% url 'misago:usercp_change_avatar' %}" class="btn btn-default">{% trans "Return" %}</a>
+    </div>
   </form>
 </div>
 {% endblock page %}

+ 5 - 2
misago/users/avatars/gallery.py

@@ -28,7 +28,10 @@ def get_available_galleries(include_default=False):
             images += directory.files('*.png')
 
             for image in images:
-                gallery['images'].append(image[len(settings.MEDIA_ROOT):])
+                image_path = image[len(settings.MEDIA_ROOT):]
+                if image_path.startswith('/'):
+                    image_path = image_path[1:]
+                gallery['images'].append(image_path)
 
             if gallery['images']:
                 galleries.append(gallery)
@@ -49,7 +52,7 @@ def is_avatar_from_gallery(image_path):
 
 
 def set_avatar(user, gallery_image_path):
-    image = Image.open(settings.MEDIA_ROOT + gallery_image_path)
+    image = Image.open('%s/%s' % (settings.MEDIA_ROOT, gallery_image_path))
     store.store_new_avatar(user, image)
 
 

+ 28 - 0
misago/users/tests/test_usercp_views.py

@@ -83,6 +83,34 @@ class ChangeAvatarTests(AdminTestCase):
         self.assertEqual(response.status_code, 200)
         self.assertIn('New avatar based', response.content)
 
+
+class AvatarGalleryTests(AdminTestCase):
+    def setUp(self):
+        super(AvatarGalleryTests, self).setUp()
+        self.view_link = reverse('misago:usercp_avatar_galleries')
+
+    def test_gallery_list(self):
+        """view renders gallery on GET"""
+        response = self.client.get(self.view_link)
+        self.assertEqual(response.status_code, 200)
+        self.assertIn('Select avatar from gallery', response.content)
+
+    def test_gallery_set_avatar(self):
+        """view changes user avatar on post"""
+        response = self.client.post(self.view_link, data={
+            'new-image': 'avatars/Nature/serval.jpg'})
+        self.assertEqual(response.status_code, 302)
+
+        response = self.client.get(reverse('misago:usercp_change_avatar'))
+        self.assertEqual(response.status_code, 200)
+        self.assertIn('Avatar from gallery was set', response.content)
+
+        response = self.client.post(self.view_link, data={
+            'new-image': 'baww.jpg'})
+        self.assertEqual(response.status_code, 200)
+        self.assertIn('Incorrect image', response.content)
+
+
 class EditSignatureTests(AdminTestCase):
     def setUp(self):
         super(EditSignatureTests, self).setUp()