import json from django.contrib.auth import get_user_model from django.contrib.auth.models import Group, Permission from django.core.files.uploadedfile import SimpleUploadedFile from django.template.defaultfilters import filesizeformat from django.test import TestCase, override_settings from django.urls import reverse from mock import patch from wagtail.core.models import Collection, GroupCollectionPermission from wagtail.tests.utils import WagtailTestUtils from tests.utils import create_test_video_file from wagtailvideos.models import Video class TestVideoIndexView(WagtailTestUtils, TestCase): def setUp(self): self.login() def get(self, params={}): return self.client.get(reverse('wagtailvideos:index'), params) def test_simple(self): response = self.get() self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'wagtailvideos/videos/index.html') self.assertContains(response, "Add a video") def test_search(self): response = self.get({'q': "Hello"}) self.assertEqual(response.status_code, 200) self.assertEqual(response.context['query_string'], "Hello") def test_pagination(self): pages = ['0', '1', '-1', '9999', 'Not a page'] for page in pages: response = self.get({'p': page}) self.assertEqual(response.status_code, 200) def test_ordering(self): orderings = ['title', '-created_at'] for ordering in orderings: response = self.get({'ordering': ordering}) self.assertEqual(response.status_code, 200) class TestVideoAddView(TestCase, WagtailTestUtils): def setUp(self): self.login() def get(self, params={}): return self.client.get(reverse('wagtailvideos:add'), params) def post(self, post_data={}): return self.client.post(reverse('wagtailvideos:add'), post_data) def test_get(self): response = self.get() self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'wagtailvideos/videos/add.html') # as standard, only the root collection exists and so no 'Collection' option # is displayed on the form self.assertNotContains(response, '