Projet

Général

Profil

« Précédent | Suivant » 

Révision 109811ce

Ajouté par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

tests: add tests for backoffice (#13343)

Voir les différences:

tests/test_manager.py
1
import os
2
import pytest
3

  
4
from django.core.urlresolvers import reverse
5
from django.contrib.auth.models import User
6

  
7
pytestmark = pytest.mark.django_db
8

  
9
@pytest.fixture
10
def admin_user():
11
    try:
12
        user = User.objects.get(username='admin')
13
    except User.DoesNotExist:
14
        user = User.objects.create_superuser('admin', email=None, password='admin')
15
    return user
16

  
17
def login(app, username='admin', password='admin'):
18
    login_page = app.get('/login/')
19
    login_form = login_page.forms[0]
20
    login_form['username'] = username
21
    login_form['password'] = password
22
    resp = login_form.submit()
23
    assert resp.status_int == 302
24
    return app
25

  
26
def test_unlogged_access(app):
27
    # connect while not being logged in
28
    assert app.get('/', status=301).location == 'http://localhost:80/manage/'
29
    assert app.get('/manage/', status=302).location == 'http://localhost:80/login/?next=/manage/'
30

  
31
def test_access(app, admin_user):
32
    app = login(app)
33
    resp = app.get('/manage/', status=200)
34
    assert 'New category' in resp.body
35

  
36
def test_logout(app, admin_user):
37
    app = login(app)
38
    app.get('/logout/')
39
    assert app.get('/', status=301).location == 'http://localhost:80/manage/'
40

  
41
def test_create_category(app, admin_user):
42
    app = login(app)
43
    resp = app.get(reverse('manage'))
44
    assert 'New category' in resp.content
45
    category_page = resp.click('New category')
46
    category_form = category_page.forms[0]
47
    category_form['name'] = 'Alerts'
48
    resp = category_form.submit()
49
    assert resp.status_int == 302
50
    assert resp.location == 'http://localhost:80/manage/'
51
    resp = app.get('http://localhost:80/manage/')
52
    assert 'Alerts' in resp.content
53

  
54
def test_edit_category(app, admin_user):
55
    app = login(app)
56
    resp = app.get('/manage/')
57
    assert 'New category' in resp.content
58
    category_page = resp.click('New category')
59
    category_form = category_page.forms[0]
60
    category_form['name'] = 'Alerts'
61
    resp = category_form.submit()
62
    assert resp.status_int == 302
63
    assert resp.location == 'http://localhost:80/manage/'
64
    resp = app.get('http://localhost:80/manage/')
65
    assert 'Alerts' in resp.content
66
    assert '0 announces' in resp.content
67
    assert '0 subscriptions' in resp.content
68
    resp = resp.click('Alerts')
69
    assert 'Edit' in resp.content
70
    edit_page = resp.click('Edit')
71
    edit_form = edit_page.forms[0]
72
    edit_form['name'] = 'New Alerts'
73
    resp = edit_form.submit()
74
    assert resp.status_int == 302
75
    assert resp.location == 'http://localhost:80/manage/category/alerts/'
76

  
77
def test_delete_category(app, admin_user):
78
    app = login(app)
79
    resp = app.get('/manage/')
80
    assert 'New category' in resp.content
81
    category_page = resp.click('New category')
82
    category_form = category_page.forms[0]
83
    category_form['name'] = 'Alerts'
84
    resp = category_form.submit()
85
    assert resp.status_int == 302
86
    assert resp.location == 'http://localhost:80/manage/'
87
    resp = app.get('http://localhost:80/manage/')
88
    assert 'Alerts' in resp.content
89
    assert '0 announces' in resp.content
90
    assert '0 subscriptions' in resp.content
91
    resp = resp.click('Alerts')
92
    assert 'Delete' in resp.content
93
    delete_page = resp.click('Delete')
94
    delete_form = delete_page.forms[0]
95
    resp = delete_form.submit()
96
    assert resp.status_int == 302
97
    assert resp.location == 'http://localhost:80/manage/'
98

  
99
def test_create_announce(app, admin_user):
100
    app = login(app)
101
    resp = app.get('/manage/')
102
    assert 'New category' in resp.content
103
    category_page = resp.click('New category')
104
    category_form = category_page.forms[0]
105
    category_form['name'] = 'Alerts'
106
    resp = category_form.submit()
107
    assert resp.status_int == 302
108
    assert resp.location == 'http://localhost:80/manage/'
109
    resp = app.get('http://localhost:80/manage/')
110
    assert 'Alerts' in resp.content
111
    resp = resp.click('Alerts')
112
    assert 'New announce' in resp.content
113
    announce_page = resp.click('New announce')
114
    announce_form = announce_page.forms[0]
115
    announce_form['title'] = 'First announce'
116
    announce_form['text'] = 'announce content'
117
    resp = announce_form.submit()
118
    assert resp.status_int == 302
119
    assert resp.location == 'http://localhost:80/manage/category/alerts/'
120
    resp = app.get('http://localhost:80/manage/category/alerts/')
121
    assert 'First announce' in resp.content
122

  
123

  
124
def test_delete_announce(app, admin_user):
125
    app = login(app)
126
    resp = app.get('/manage/')
127
    assert 'New category' in resp.content
128
    category_page = resp.click('New category')
129
    category_form = category_page.forms[0]
130
    category_form['name'] = 'Alerts'
131
    resp = category_form.submit()
132
    assert resp.status_int == 302
133
    assert resp.location == 'http://localhost:80/manage/'
134
    resp = app.get('http://localhost:80/manage/')
135
    resp = resp.click('Alerts')
136
    assert 'New announce' in resp.content
137
    announce_page = resp.click('New announce')
138
    announce_form = announce_page.forms[0]
139
    announce_form['title'] = 'First announce'
140
    announce_form['text'] = 'announce content'
141
    resp = announce_form.submit()
142
    assert resp.status_int == 302
143
    assert resp.location == 'http://localhost:80/manage/category/alerts/'
144
    resp = app.get('http://localhost:80/manage/category/alerts/')
145
    assert 'First announce' in resp.content
146
    resp = resp.click('First announce')
147
    assert 'Delete' in resp.content
148
    announce_delete_page = resp.click('Delete')
149
    announce_delete_form = announce_delete_page.forms[0]
150
    resp = announce_delete_form.submit()
151
    assert resp.status_int == 302
152
    assert resp.location == 'http://localhost:80/manage/category/alerts/'

Formats disponibles : Unified diff