Completed
Push — master ( 1e1482...216ce5 )
by Asif
01:05
created

test_invalid_entry_create()   A

Complexity

Conditions 1

Size

Total Lines 7

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 1
dl 0
loc 7
rs 9.4285
1
from django.test import TestCase, Client
2
from django.contrib.auth.models import User
3
from django.core.urlresolvers import reverse
4
from django.test.utils import override_settings
5
6
from crudbuilder.tests.models import TestModel
7
from crudbuilder.tests.crud import TestModelCrud
8
from crudbuilder.tests.forms import TestModelForm
9
from crudbuilder.tests.tables import TestModelTable
10
11
12
class ViewTestCase(TestCase):
13
    def setUp(self):
14
        self.client = Client()
15
        TestModelCrud.custom_modelform = TestModelForm
16
        TestModelCrud.custom_table2 = TestModelTable
17
18
        self.user = User.objects.create_user(
19
            username='asdf',
20
            password='asdf3452',
21
            email='[email protected]')
22
23
    def client_login(self):
24
        self.client.login(
25
            username=self.user.username,
26
            password='asdf3452'
27
        )
28
29
    def get_list_view(self):
30
        self.client_login()
31
        response = self.client.get(reverse('tests-testmodel-list'))
32
        self.assertEqual(200, response.status_code)
33
34
    def test_user_not_logged_in(self):
35
        response = self.client.get(reverse('tests-testmodel-list'))
36
        self.assertEqual(302, response.status_code)
37
38
    def tearDown(self):
39
        TestModelCrud.custom_table2 = None
40
        TestModelCrud.custom_modelform = None
41
        TestModelCrud.createupdate_forms = None
42
43
    def test_user_logged_in(self):
44
        self.get_list_view()
45
46
    def test_view_with_default_form(self):
47
        TestModelCrud.custom_modelform = None
48
        self.get_list_view()
49
50
    def test_view_with_default_tables2(self):
51
        TestModelCrud.custom_table2 = None
52
        self.get_list_view()
53
54
    def test_invalid_entry_create(self):
55
        self.client_login()
56
        data = {'name': 'Test text', 'email': 'same.org'}
57
        response = self.client.post('/crud/tests/testmodels/create/', data)
58
        self.assertEqual(response.status_code, 200)
59
        self.assertFormError(
60
            response, "form", "email", "Enter a valid email address.")
61
62
    def test_valid_entry_create(self):
63
        self.client_login()
64
        data = {'name': 'Test text', 'email': '[email protected]'}
65
        self.assertEqual(TestModel.objects.count(), 0)
66
67
        response = self.client.post('/crud/tests/testmodels/create/', data)
68
        self.assertEqual(response.status_code, 302)
69
        self.assertEqual(TestModel.objects.count(), 1)
70
71
        response = self.client.post('/crud/tests/testmodels/1/update/', data)
72
        self.assertEqual(response.status_code, 302)
73
74
    @override_settings(PERMISSION_REQUIRED_FOR_CRUD=True)
75
    def test_permission_required_enabled(self):
76
        self.client_login()
77
        response = self.client.get('/crud/tests/testmodels/')
78
        self.assertEqual(302, response.status_code)
79
80
    def test_search_list(self):
81
        self.client_login()
82
        response = self.client.get('/crud/tests/testmodels/?search=some_text')
83
        self.assertEqual(200, response.status_code)
84
85
    @override_settings(LOGIN_REQUIRED_FOR_CRUD=False)
86
    def test_no_login(self):
87
        response = self.client.get(reverse('tests-testmodel-list'))
88
        self.assertEqual(200, response.status_code)
89
90
    def test_separate_createupdateform(self):
91
        TestModelCrud.custom_modelform = None
92
        TestModelCrud.createupdate_forms = dict(
93
            create=TestModelForm,
94
            update=TestModelForm)
95
96
        self.client_login()
97
        data = {'name': 'Test text', 'email': '[email protected]'}
98
        self.assertEqual(TestModel.objects.count(), 0)
99
100
        response = self.client.post('/crud/tests/testmodels/create/', data)
101
        self.assertEqual(response.status_code, 302)
102
        self.assertEqual(TestModel.objects.count(), 1)
103
104
        response = self.client.post('/crud/tests/testmodels/1/update/', data)
105
        self.assertEqual(response.status_code, 302)
106
107
    def test_custom_queryset(self):
108
        def custom_queryset(self, request, **kwargs):
109
            return self.model.objects.all()
110
        setattr(TestModelCrud, 'custom_queryset', custom_queryset)
111
        self.get_list_view()
112