1633 |
1633 |
assert resp.location == 'http://example.net/'
|
1634 |
1634 |
assert formdef.data_class().count() == 0
|
1635 |
1635 |
|
|
1636 |
def test_form_discard_draft(pub):
|
|
1637 |
user = create_user(pub)
|
|
1638 |
|
|
1639 |
formdef = create_formdef()
|
|
1640 |
formdef.fields = [fields.StringField(id='0', label='string')]
|
|
1641 |
formdef.enable_tracking_codes = False
|
|
1642 |
formdef.store()
|
|
1643 |
formdef.data_class().wipe()
|
|
1644 |
|
|
1645 |
# anonymous user, no tracking code (-> no draft)
|
|
1646 |
app = get_app(pub)
|
|
1647 |
resp = app.get('/test/')
|
|
1648 |
resp.form['f0'] = 'foobar'
|
|
1649 |
resp = resp.form.submit('submit')
|
|
1650 |
resp = resp.form.submit('previous')
|
|
1651 |
assert [x.status for x in formdef.data_class().select()] == []
|
|
1652 |
assert 'Cancel' in resp.body
|
|
1653 |
assert 'Discard' not in resp.body
|
|
1654 |
resp = resp.form.submit('cancel')
|
|
1655 |
|
|
1656 |
# anonymous user, tracking code (-> draft)
|
|
1657 |
formdef.enable_tracking_codes = True
|
|
1658 |
formdef.store()
|
|
1659 |
app = get_app(pub)
|
|
1660 |
resp = app.get('/test/')
|
|
1661 |
resp.form['f0'] = 'foobar'
|
|
1662 |
resp = resp.form.submit('submit')
|
|
1663 |
resp = resp.form.submit('previous')
|
|
1664 |
assert [x.status for x in formdef.data_class().select()] == ['draft']
|
|
1665 |
assert 'Cancel' not in resp.body
|
|
1666 |
assert 'Discard' in resp.body
|
|
1667 |
resp = resp.form.submit('cancel')
|
|
1668 |
assert [x.status for x in formdef.data_class().select()] == [] # discarded
|
|
1669 |
|
|
1670 |
# logged-in user, no tracking code
|
|
1671 |
formdef.enable_tracking_codes = False
|
|
1672 |
formdef.store()
|
|
1673 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
|
|
1674 |
resp.form['f0'] = 'foobar'
|
|
1675 |
resp = resp.form.submit('submit')
|
|
1676 |
resp = resp.form.submit('previous')
|
|
1677 |
assert [x.status for x in formdef.data_class().select()] == ['draft']
|
|
1678 |
assert 'Cancel' not in resp.body
|
|
1679 |
assert 'Discard' in resp.body
|
|
1680 |
resp = resp.form.submit('cancel')
|
|
1681 |
assert [x.status for x in formdef.data_class().select()] == [] # discarded
|
|
1682 |
|
|
1683 |
# logged-in user, tracking code
|
|
1684 |
formdef.enable_tracking_codes = True
|
|
1685 |
formdef.store()
|
|
1686 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
|
|
1687 |
resp.form['f0'] = 'foobar'
|
|
1688 |
resp = resp.form.submit('submit')
|
|
1689 |
resp = resp.form.submit('previous')
|
|
1690 |
assert [x.status for x in formdef.data_class().select()] == ['draft']
|
|
1691 |
assert 'Cancel' not in resp.body
|
|
1692 |
assert 'Discard' in resp.body
|
|
1693 |
resp = resp.form.submit('cancel')
|
|
1694 |
assert [x.status for x in formdef.data_class().select()] == [] # discarded
|
|
1695 |
|
|
1696 |
# anonymous user, tracking code, recalled
|
|
1697 |
formdef.enable_tracking_codes = True
|
|
1698 |
formdef.store()
|
|
1699 |
app = get_app(pub)
|
|
1700 |
resp = app.get('/test/')
|
|
1701 |
resp.form['f0'] = 'foobar'
|
|
1702 |
resp = resp.form.submit('submit')
|
|
1703 |
resp = resp.form.submit('previous')
|
|
1704 |
assert [x.status for x in formdef.data_class().select()] == ['draft']
|
|
1705 |
assert 'Cancel' not in resp.body
|
|
1706 |
assert 'Discard' in resp.body
|
|
1707 |
tracking_code = get_displayed_tracking_code(resp)
|
|
1708 |
|
|
1709 |
resp = get_app(pub).get('/')
|
|
1710 |
resp.form['code'] = tracking_code
|
|
1711 |
resp = resp.form.submit().follow().follow().follow()
|
|
1712 |
assert resp.forms[1]['f0'].value == 'foobar'
|
|
1713 |
assert 'Cancel' in resp.body
|
|
1714 |
assert 'Discard Draft' in resp.body
|
|
1715 |
resp = resp.forms[1].submit('cancel')
|
|
1716 |
assert [x.status for x in formdef.data_class().select()] == ['draft']
|
|
1717 |
|
|
1718 |
# logged-in user, no tracking code, recalled
|
|
1719 |
formdef.data_class().wipe()
|
|
1720 |
formdef.enable_tracking_codes = False
|
|
1721 |
formdef.store()
|
|
1722 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
|
|
1723 |
resp.form['f0'] = 'foobar'
|
|
1724 |
resp = resp.form.submit('submit')
|
|
1725 |
resp = resp.form.submit('previous')
|
|
1726 |
assert [x.status for x in formdef.data_class().select()] == ['draft']
|
|
1727 |
resp = login(get_app(pub), username='foo', password='foo').get('/test/')
|
|
1728 |
resp = resp.click('Continue with draft').follow()
|
|
1729 |
assert 'Cancel' in resp.body
|
|
1730 |
assert 'Discard Draft' in resp.body
|
|
1731 |
resp = resp.forms[1].submit('cancel')
|
|
1732 |
assert [x.status for x in formdef.data_class().select()] == ['draft']
|
|
1733 |
|
1636 |
1734 |
def test_form_invalid_tracking_code(pub):
|
1637 |
1735 |
formdef = create_formdef()
|
1638 |
1736 |
formdef.fields = [fields.StringField(id='0', label='string')]
|