Mercurial > p > roundup > code
annotate test/test_templating.py @ 8453:e5bd50120b5a
chore(build): update anchore to 7.0.0 via dependabot
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Mon, 22 Sep 2025 12:37:21 -0400 |
| parents | 9369e0958312 |
| children | 9c3ec0a5c7fc |
| rev | line source |
|---|---|
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
1 from __future__ import print_function |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 import unittest |
| 7032 | 3 import time |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 |
|
7582
978285986b2c
fix: issue2551193 - Fix roundup for removal of cgi and cgitb ...
John Rouillard <rouilj@ieee.org>
parents:
7576
diff
changeset
|
5 from roundup.anypy.cgi_ import FieldStorage, MiniFieldStorage |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 from roundup.cgi.templating import * |
|
7866
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
7 from roundup.cgi.ZTUtils.Iterator import Iterator |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
8 from roundup.test import memorydb |
|
5388
d26921b851c3
Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5378
diff
changeset
|
9 from .test_actions import MockNull, true |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
10 from .html_norm import NormalizingHtmlParser |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
12 |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
13 import pytest |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
14 from .pytest_patcher import mark_class |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
15 |
|
7576
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
16 try: |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
17 from markdown2 import __version_info__ as md2__version_info__ |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
18 except ImportError: |
|
7bdf9c0f74b9
Handle error id markdown2 not defined.
John Rouillard <rouilj@ieee.org>
parents:
7561
diff
changeset
|
19 md2__version_info__ = (0,0,0) |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
20 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
21 if ReStructuredText: |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
22 skip_rst = lambda func, *args, **kwargs: func |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
23 else: |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
24 skip_rst = mark_class(pytest.mark.skip( |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
25 reason='ReStructuredText not available')) |
|
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
26 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
27 import roundup.cgi.templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
28 if roundup.cgi.templating._import_mistune(): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
29 skip_mistune = lambda func, *args, **kwargs: func |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
30 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
31 skip_mistune = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
32 reason='mistune not available')) |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
33 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
34 if roundup.cgi.templating._import_markdown2(): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
35 skip_markdown2 = lambda func, *args, **kwargs: func |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
36 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
37 skip_markdown2 = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
38 reason='markdown2 not available')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
39 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
40 if roundup.cgi.templating._import_markdown(): |
|
6097
90a1470edbea
added markdown rendering support using either markdown2 or markdown
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6096
diff
changeset
|
41 skip_markdown = lambda func, *args, **kwargs: func |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
42 else: |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
43 skip_markdown = mark_class(pytest.mark.skip( |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
44 reason='markdown not available')) |
|
6097
90a1470edbea
added markdown rendering support using either markdown2 or markdown
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6096
diff
changeset
|
45 |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
46 from roundup.anypy.strings import u2s, s2u |
|
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
47 |
| 6826 | 48 from roundup.backends.sessions_common import SessionCommon |
| 49 | |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
50 class MockConfig(dict): |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
51 def __getattr__(self, name): |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
52 try: |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
53 return self[name] |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
54 except KeyError as err: |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
55 raise AttributeError(err) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
56 |
| 6826 | 57 class MockDatabase(MockNull, SessionCommon): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 def getclass(self, name): |
|
6337
316c2c32dace
Make testing mock smarter. Make getclass fail for invalid classes.
John Rouillard <rouilj@ieee.org>
parents:
6336
diff
changeset
|
59 # limit class names |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
60 if name not in [ 'issue', 'user', 'status' ]: |
|
6337
316c2c32dace
Make testing mock smarter. Make getclass fail for invalid classes.
John Rouillard <rouilj@ieee.org>
parents:
6336
diff
changeset
|
61 raise KeyError('There is no class called "%s"' % name) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
62 # Class returned must have hasnode(id) method that returns true |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
63 # otherwise designators like 'issue1' can't be hyperlinked. |
|
6338
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
64 self.classes[name].hasnode = lambda id: True if int(id) < 10 else False |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 return self.classes[name] |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
67 # setup for csrf testing of otks database api |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
68 storage = {} |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
69 def set(self, key, **props): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
70 MockDatabase.storage[key] = {} |
| 6817 | 71 if '__timestamp' not in props: |
| 72 props['__timestamp'] = time.time() - 7*24*3600 | |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
73 MockDatabase.storage[key].update(props) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
74 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
75 def get(self, key, field, default=None): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
76 if key not in MockDatabase.storage: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
77 return default |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
78 return MockDatabase.storage[key][field] |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
79 |
| 6817 | 80 def getall(self, key): |
| 81 if key not in MockDatabase.storage: | |
| 82 return default | |
| 83 return MockDatabase.storage[key] | |
| 84 | |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
85 def exists(self,key): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
86 return key in MockDatabase.storage |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
87 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
88 def getOTKManager(self): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
89 return MockDatabase() |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
90 |
| 6817 | 91 def lifetime(self, seconds): |
| 92 return time.time() - 7*24*3600 + seconds | |
| 93 | |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
94 class TemplatingTestCase(unittest.TestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 def setUp(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
96 self.form = FieldStorage() |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 self.client = MockNull() |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
98 self.client.db = db = MockDatabase() |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
99 db.security.hasPermission = lambda *args, **kw: True |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 self.client.form = self.form |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
101 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
102 # add client props for testing anti_csrf_nonce |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
103 self.client.session_api = MockNull(_sid="1234567890") |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
104 self.client.db.getuid = lambda : 10 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
105 self.client.db.config = MockConfig ( |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
106 {'WEB_CSRF_TOKEN_LIFETIME': 10, |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
107 'MARKDOWN_BREAK_ON_NEWLINE': False }) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
108 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
109 class HTMLDatabaseTestCase(TemplatingTestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
110 def test_HTMLDatabase___getitem__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
111 db = HTMLDatabase(self.client) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
112 self.assertTrue(isinstance(db['issue'], HTMLClass)) |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
113 # following assertions are invalid |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
114 # since roundup/cgi/templating.py r1.173. |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
115 # HTMLItem is function, not class, |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
116 # but HTMLUserClass and HTMLUser are passed on. |
|
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
117 # these classes are no more. they have ceased to be. |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
118 #self.assertTrue(isinstance(db['user'], HTMLUserClass)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
119 #self.assertTrue(isinstance(db['issue1'], HTMLItem)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
120 #self.assertTrue(isinstance(db['user1'], HTMLUser)) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
121 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 def test_HTMLDatabase___getattr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
123 db = HTMLDatabase(self.client) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
124 self.assertTrue(isinstance(db.issue, HTMLClass)) |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
125 # see comment in test_HTMLDatabase___getitem__ |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
126 #self.assertTrue(isinstance(db.user, HTMLUserClass)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
127 #self.assertTrue(isinstance(db.issue1, HTMLItem)) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5488
diff
changeset
|
128 #self.assertTrue(isinstance(db.user1, HTMLUser)) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
129 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 def test_HTMLDatabase_classes(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
131 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
132 db._db.classes = {'issue':MockNull(), 'user': MockNull()} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
133 db.classes() |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
134 |
|
6689
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
135 def test_HTMLDatabase_list(self): |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
136 # The list method used to produce a traceback when a None value |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
137 # for an order attribute of a class was encountered. This |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
138 # happens when the 'get' of the order attribute for a numeric |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
139 # id produced a None value. So we put '23' as a key into the |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
140 # list and set things up that a None value is returned on 'get'. |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
141 |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
142 # This keeps db.issue static, otherwise it changes for each call |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
143 db = MockNull(issue = HTMLDatabase(self.client).issue) |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
144 db.issue._klass.list = lambda : ['23', 'a', 'b'] |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
145 # Make db.getclass return something that has a sensible 'get' method |
|
8305
a81a3cd067fa
Generate savepoint only if necessary
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8300
diff
changeset
|
146 def get(x, y, allow_abort=True): |
|
a81a3cd067fa
Generate savepoint only if necessary
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8300
diff
changeset
|
147 return None |
|
a81a3cd067fa
Generate savepoint only if necessary
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8300
diff
changeset
|
148 mock = MockNull(get = get) |
|
6689
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
149 db.issue._db.getclass = lambda x : mock |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
150 l = db.issue.list() |
|
994893cf3e1a
Fix traceback if an order attribute is None
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6645
diff
changeset
|
151 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
152 class FunctionsTestCase(TemplatingTestCase): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
153 def test_lookupIds(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
154 db = HTMLDatabase(self.client) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
155 def lookup(key): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
156 if key == 'ok': |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
157 return '1' |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
158 if key == 'fail': |
|
5378
35ea9b1efc14
Python 3 preparation: "raise" syntax.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
159 raise KeyError('fail') |
|
7936
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
160 if key == '@current_user': |
|
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
161 raise KeyError('@current_user') |
|
3587
2372597ebbdb
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2716
diff
changeset
|
162 return key |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
163 db._db.classes = {'issue': MockNull(lookup=lookup)} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
164 prop = MockNull(classname='issue') |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
165 self.assertEqual(lookupIds(db._db, prop, ['1','2']), ['1','2']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 self.assertEqual(lookupIds(db._db, prop, ['ok','2']), ['1','2']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
167 self.assertEqual(lookupIds(db._db, prop, ['ok', 'fail'], 1), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
168 ['1', 'fail']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
169 self.assertEqual(lookupIds(db._db, prop, ['ok', 'fail']), ['1']) |
|
7936
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
170 self.assertEqual(lookupIds(db._db, prop, ['ok', '@current_user']), |
|
a9b136565838
feat: issue1525113 - notation to filter by logged-in user
John Rouillard <rouilj@ieee.org>
parents:
7923
diff
changeset
|
171 ['1']) |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
172 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
173 def test_lookupKeys(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
174 db = HTMLDatabase(self.client) |
|
8305
a81a3cd067fa
Generate savepoint only if necessary
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8300
diff
changeset
|
175 def get(entry, key, allow_abort=True): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
176 return {'1': 'green', '2': 'eggs'}.get(entry, entry) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
177 shrubbery = MockNull(get=get) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
178 db._db.classes = {'shrubbery': shrubbery} |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
179 self.assertEqual(lookupKeys(shrubbery, 'spam', ['1','2']), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
180 ['green', 'eggs']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
181 self.assertEqual(lookupKeys(shrubbery, 'spam', ['ok','2']), ['ok', |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
182 'eggs']) |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
183 |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
184 class HTMLClassTestCase(TemplatingTestCase) : |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
185 |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
186 def test_link(self): |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
187 """Make sure lookup of a Link property works even in the |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
188 presence of multiple values in the form.""" |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
189 def lookup(key) : |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
190 self.assertEqual(key, key.strip()) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
191 return "Status%s"%key |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
192 self.form.list.append(MiniFieldStorage("issue@status", "1")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
193 self.form.list.append(MiniFieldStorage("issue@status", "2")) |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
194 status = hyperdb.Link("status") |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
195 self.client.db.classes = dict \ |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
196 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
197 , status = MockNull(get = lambda id, name : id, lookup = lookup) |
|
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
198 ) |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
199 self.client.form = self.form |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
200 cls = HTMLClass(self.client, "issue") |
|
6404
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
201 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
202 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
203 self.assertEqual(s._value, '1') |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
204 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
205 def test_link_default(self): |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
206 """Make sure default value for link is returned |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
207 if new item and no value in form.""" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
208 def lookup(key) : |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
209 self.assertEqual(key, key.strip()) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
210 return "Status%s"%key |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
211 status = hyperdb.Link("status") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
212 # set default_value |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
213 status.__dict__['_Type__default_value'] = "4" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
214 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
215 self.client.db.classes = dict \ |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
216 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
217 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
218 ) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
219 self.client.form = self.form |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
220 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
221 cls = HTMLClass(self.client, "issue") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
222 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
223 self.assertEqual(s._value, '4') |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
224 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
225 def test_link_with_value_and_default(self): |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
226 """Make sure default value is not used if there |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
227 is a value in the form.""" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
228 def lookup(key) : |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
229 self.assertEqual(key, key.strip()) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
230 return "Status%s"%key |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
231 self.form.list.append(MiniFieldStorage("issue@status", "2")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
232 self.form.list.append(MiniFieldStorage("issue@status", "1")) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
233 status = hyperdb.Link("status") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
234 # set default_value |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
235 status.__dict__['_Type__default_value'] = "4" |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
236 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
237 self.client.db.classes = dict \ |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
238 ( issue = MockNull(getprops = lambda : dict(status = status)) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
239 , status = MockNull(get = lambda id, name : id, lookup = lookup, get_default_value = lambda: 4) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
240 ) |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
241 self.client.form = self.form |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
242 |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
243 cls = HTMLClass(self.client, "issue") |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
244 s = cls["status"] |
|
e29d5f4e0af4
issue2551132 - Setting form value in query string --- issues
John Rouillard <rouilj@ieee.org>
parents:
6377
diff
changeset
|
245 self.assertEqual(s._value, '2') |
|
4040
b6a2251394dd
Make cgi.templating more fault-tolerant towards invalid requests.
Stefan Seefeld <stefan@seefeld.name>
parents:
4011
diff
changeset
|
246 |
|
3972
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
247 def test_multilink(self): |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
248 """`lookup` of an item will fail if leading or trailing whitespace |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
249 has not been stripped. |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
250 """ |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
251 def lookup(key) : |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
252 self.assertEqual(key, key.strip()) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
253 return "User%s"%key |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
254 self.form.list.append(MiniFieldStorage("nosy", "1, 2")) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
255 nosy = hyperdb.Multilink("user") |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
256 self.client.db.classes = dict \ |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
257 ( issue = MockNull(getprops = lambda : dict(nosy = nosy)) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
258 , user = MockNull(get = lambda id, name : id, lookup = lookup) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
259 ) |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
260 cls = HTMLClass(self.client, "issue") |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
261 cls["nosy"] |
|
eee76dd4a09f
'Make a Copy' failed with more than one person in nosy list [SF#1906147]
Richard Jones <richard@users.sourceforge.net>
parents:
3587
diff
changeset
|
262 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
263 def test_anti_csrf_nonce(self): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
264 '''call the csrf creation function and do basic length test |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
265 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
266 Store the data in a mock db with the same api as the otk |
| 6826 | 267 db. Make sure nonce is 54 chars long. Lookup the nonce in |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
268 db and retrieve data. Verify that the nonce lifetime is |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
269 correct (within 1 second of 1 week - lifetime), the uid is |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
270 correct (1), the dummy sid is correct. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
271 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
272 Consider three cases: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
273 * create nonce via module function setting lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
274 * create nonce via TemplatingUtils method setting lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
275 * create nonce via module function with default lifetime |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
276 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
277 ''' |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
278 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
279 # the value below is number of seconds in a week. |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
280 week_seconds = 604800 |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
281 |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
282 otks=self.client.db.getOTKManager() |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
283 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
284 for test in [ 'module', 'template', 'default_time' ]: |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
285 print("Testing:", test) |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
286 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
287 if test == 'module': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
288 # test the module function |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5485
diff
changeset
|
289 nonce1 = anti_csrf_nonce(self.client, lifetime=1) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
290 # lifetime * 60 is the offset |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
291 greater_than = week_seconds - 1 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
292 elif test == 'template': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
293 # call the function through the TemplatingUtils class |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
294 cls = TemplatingUtils(self.client) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
295 nonce1 = cls.anti_csrf_nonce(lifetime=5) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
296 greater_than = week_seconds - 5 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
297 elif test == 'default_time': |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
298 # use the module function but with no lifetime |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5485
diff
changeset
|
299 nonce1 = anti_csrf_nonce(self.client) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
300 # see above for web nonce lifetime. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
301 greater_than = week_seconds - 10 * 60 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
302 |
| 6826 | 303 self.assertEqual(len(nonce1), 54) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
304 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
305 uid = otks.get(nonce1, 'uid', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
306 sid = otks.get(nonce1, 'sid', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
307 timestamp = otks.get(nonce1, '__timestamp', default=None) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
308 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
309 self.assertEqual(uid, 10) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
310 self.assertEqual(sid, self.client.session_api._sid) |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
311 |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
312 now = time.time() |
|
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
313 |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
314 print("now, timestamp, greater, difference", |
|
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5226
diff
changeset
|
315 now, timestamp, greater_than, now - timestamp) |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
316 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
317 |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
318 # lower bound of the difference is above. Upper bound |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
319 # of difference is run time between time.time() in |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
320 # the call to anti_csrf_nonce and the time.time() call |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
321 # that assigns ts above. I declare that difference |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
322 # to be less than 1 second for this to pass. |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
323 self.assertEqual(True, |
|
5211
f4b6a2a3e605
Fix expiration dates and expire csrf tokens properly
John Rouillard <rouilj@ieee.org>
parents:
5201
diff
changeset
|
324 greater_than <= now - timestamp < (greater_than + 1) ) |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
325 |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
326 def test_number__int__(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
327 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
328 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
329 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
330 self.assertEqual(p.__int__(), 2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
331 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
332 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
333 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
334 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
335 with self.assertRaises(TypeError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
336 p.__int__() |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
337 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
338 def test_number__float__(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
339 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
340 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
341 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
342 self.assertEqual(p.__float__(), 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
343 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
344 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
345 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
346 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
347 with self.assertRaises(TypeError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
348 p.__float__() |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
349 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
350 def test_number_field(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
351 import sys |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
352 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
353 _py3 = sys.version_info[0] > 2 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
354 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
355 # python2 truncates while python3 rounds. Sigh. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
356 if _py3: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
357 expected_val = 2345678.2345678 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
358 else: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
359 expected_val = 2345678.23457 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
360 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
361 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
362 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
363 2345678.2345678) |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
364 self.client.db.config['WEB_USE_BROWSER_NUMBER_INPUT'] = False |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
365 self.assertEqual(p.field(), |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
366 ('<input id="testnum1@test" name="testnum1@test" ' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
367 'size="30" type="text" value="%s">')%expected_val) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
368 self.client.db.config['WEB_USE_BROWSER_NUMBER_INPUT'] = True |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
369 self.assertEqual(p.field(), |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
370 ('<input id="testnum1@test" name="testnum1@test" ' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
371 'size="30" type="number" value="%s">')%expected_val) |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
372 self.assertEqual(p.field(size=10), |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
373 ('<input id="testnum1@test" name="testnum1@test" ' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
374 'size="10" type="number" value="%s">')%expected_val) |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
375 self.assertEqual(p.field(size=10, dataprop="foo", dataprop2=5), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
376 ('<input dataprop="foo" dataprop2="5" ' |
|
8281
669dfccca898
issue2551391 - checkboxes and radiobutton inputs get wrong id's.
John Rouillard <rouilj@ieee.org>
parents:
7936
diff
changeset
|
377 'id="testnum1@test" name="testnum1@test" ' |
| 8287 | 378 'size="10" type="number" ' |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
379 'value="%s">'%expected_val)) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
380 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
381 self.assertEqual(p.field(size=10, klass="class1", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
382 **{ "class": "class2 class3", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
383 "data-prop": "foo", |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
384 "data-prop2": 5}), |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
385 ('<input class="class2 class3" data-prop="foo" ' |
|
8281
669dfccca898
issue2551391 - checkboxes and radiobutton inputs get wrong id's.
John Rouillard <rouilj@ieee.org>
parents:
7936
diff
changeset
|
386 'data-prop2="5" id="testnum1@test" ' |
|
669dfccca898
issue2551391 - checkboxes and radiobutton inputs get wrong id's.
John Rouillard <rouilj@ieee.org>
parents:
7936
diff
changeset
|
387 'klass="class1" ' |
| 8287 | 388 'name="testnum1@test" size="10" type="number" ' |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
389 'value="%s">')%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
390 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
391 # get plain representation if user can't edit |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
392 p.is_edit_ok = lambda: False |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
393 self.assertEqual(p.field(), p.plain()) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
394 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
395 # test with string which is wrong type |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
396 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
| 8287 | 397 "234567e.2345678") |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
398 self.assertEqual(p.field(), |
|
8281
669dfccca898
issue2551391 - checkboxes and radiobutton inputs get wrong id's.
John Rouillard <rouilj@ieee.org>
parents:
7936
diff
changeset
|
399 ('<input id="testnum1@test" name="testnum1@test" ' |
| 8287 | 400 'size="30" type="number" value="234567e.2345678">')) |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
401 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
402 # test with None value, pretend property.__default_value = Null which |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
403 # is the default. It would be returned by get_default_value |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
404 # which I mock. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
405 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
406 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
407 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
408 self.assertEqual(p.field(), |
|
8281
669dfccca898
issue2551391 - checkboxes and radiobutton inputs get wrong id's.
John Rouillard <rouilj@ieee.org>
parents:
7936
diff
changeset
|
409 ('<input id="testnum1@test" name="testnum1@test" ' |
| 8287 | 410 'size="30" type="number" value="">')) |
|
6832
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
411 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
412 def test_number_plain(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
413 import sys |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
414 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
415 _py3 = sys.version_info[0] > 2 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
416 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
417 # python2 truncates while python3 rounds. Sigh. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
418 if _py3: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
419 expected_val = 2345678.2345678 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
420 else: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
421 expected_val = 2345678.23457 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
422 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
423 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
424 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
425 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
426 self.assertEqual(p.plain(), "%s"%expected_val) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
427 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
428 def test_number_pretty(self): |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
429 # test with number |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
430 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
431 2345678.2345678) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
432 self.assertEqual(p.pretty(), "2345678.235") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
433 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
434 # test with string which is wrong type |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
435 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
436 "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
437 self.assertEqual(p.pretty(), "2345678.2345678") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
438 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
439 # test with boolean |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
440 p = NumberHTMLProperty(self.client, 'testnum', '1', None, 'test', |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
441 True) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
442 self.assertEqual(p.pretty(), "1.000") |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
443 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
444 # test with None value, pretend property.__default_value = Null which |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
445 # is the default. It would be returned by get_default_value |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
446 # which I mock. |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
447 property = MockNull(get_default_value = lambda: None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
448 p = NumberHTMLProperty(self.client, 'testnum', '1', property, |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
449 'test', None) |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
450 self.assertEqual(p.pretty(), '') |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
451 |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
452 with self.assertRaises(ValueError) as e: |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
453 p.pretty('%0.3') |
|
234fefd7568a
issue2550559 - Pretty printing / formatting for Number types.
John Rouillard <rouilj@ieee.org>
parents:
6826
diff
changeset
|
454 |
|
5156
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
455 def test_string_url_quote(self): |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
456 ''' test that urlquote quotes the string ''' |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
457 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'test string< foo@bar') |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
458 self.assertEqual(p.url_quote(), 'test%20string%3C%20foo%40bar') |
|
882fa4d9bead
issue2550795: @dispname query args in page.html search links
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
459 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
460 def test_string_email(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
461 ''' test that email obscures the email ''' |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
462 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'rouilj@foo.example.com') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
463 self.assertEqual(p.email(), 'rouilj at foo example ...') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
464 |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
465 def test_string_wrapped(self): |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
466 test_string = ('A long string that needs to be wrapped to' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
467 ' 80 characters and no more. Put in a link issue1.' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
468 ' Put in <html> to be escaped. Put in a' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
469 ' https://example.com/link as well. Let us see if' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
470 ' it will wrap properly.' ) |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
471 |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
472 test_result_wrap = {} |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
473 test_result_wrap[80] = ('A long string that needs to be wrapped to 80' |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
474 ' characters and no more. Put in a\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
475 'link <a href="issue1">issue1</a>. Put in' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
476 ' <html> to be escaped. Put in a <a' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
477 ' href="https://example.com/link"' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
478 ' rel="nofollow noopener">' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
479 'https://example.com/link</a> as\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
480 'well. Let us see if it will wrap properly.') |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
481 test_result_wrap[20] = ( |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
482 'A long string that\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
483 'needs to be wrapped\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
484 'to 80 characters and\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
485 'no more. Put in a\nlink <a href="issue1">issue1</a>. Put in\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
486 '<html> to be\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
487 'escaped. Put in a\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
488 '<a href="https://example.com/link" rel="nofollow ' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
489 'noopener">https://example.com/link</a>\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
490 'as well. Let us see\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
491 'if it will wrap\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
492 'properly.') |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
493 test_result_wrap[100] = ( |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
494 'A long string that needs to be wrapped to 80 characters and no more. Put in a link <a href="issue1">issue1</a>. Put in\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
495 '<html> to be escaped. Put in a <a href="https://example.com/link" rel="nofollow noopener">https://example.com/link</a> as well. Let us see if it will wrap\n' |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
496 'properly.') |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
497 |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
498 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
499 test_string) |
|
7864
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
500 |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
501 for i in [80, 20, 100]: |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
502 wrapped = p.wrapped(columns=i) |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
503 print(wrapped) |
|
b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
504 self.assertEqual(wrapped, test_result_wrap[i]) |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
505 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
506 def test_string_plain_or_hyperlinked(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
507 ''' test that email obscures the email ''' |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
508 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
509 self.assertEqual(p.plain(), 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
510 self.assertEqual(p.plain(escape=1), 'A string <b> with rouilj@example.com embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
511 self.assertEqual(p.plain(hyperlink=1), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
512 self.assertEqual(p.plain(escape=1, hyperlink=1), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
513 |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
514 self.assertEqual(p.hyperlinked(), 'A string <b> with <a href="mailto:rouilj@example.com">rouilj@example.com</a> embedded &lt; html</b>') |
|
6338
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
515 # check designators |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
516 for designator in [ "issue1", "issue 1" ]: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
517 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
518 self.assertEqual(p.hyperlinked(), |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
519 '<a href="issue1">%s</a>'%designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
520 |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
521 # issue 100 > 10 which is a magic number for the mocked hasnode |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
522 # If id number is greater than 10 hasnode reports it does not have |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
523 # the node. |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
524 for designator in ['issue100', 'issue 100']: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
525 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
526 designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
527 self.assertEqual(p.hyperlinked(), designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
528 |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
529 # zoom class does not exist |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
530 for designator in ['zoom1', 'zoom100', 'zoom 1']: |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
531 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
532 designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
533 self.assertEqual(p.hyperlinked(), designator) |
|
a70a0c138dd9
Test hyperlinked method on designators
John Rouillard <rouilj@ieee.org>
parents:
6337
diff
changeset
|
534 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
535 |
|
6096
c914b3d8362f
If rst missing skip; initial attempt to test structuredtext.
John Rouillard <rouilj@ieee.org>
parents:
6095
diff
changeset
|
536 @skip_rst |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
537 def test_string_rst(self): |
|
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
538 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
6098
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
539 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
540 # test case to make sure include directive is disabled |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
541 q = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'\n\n.. include:: XyZrMt.html\n\n<badtag>\n\n')) |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
542 q_result=u'''<div class="document"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
543 <div class="system-message"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
544 <p class="system-message-title">System Message: WARNING/2 (<tt class="docutils"><string></tt>, line 3)</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
545 <p>"include" directive disabled.</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
546 <pre class="literal-block"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
547 .. include:: XyZrMt.html |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
548 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
549 </pre> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
550 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
551 <p><badtag></p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
552 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
553 ''' |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
554 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
555 # test case to make sure raw directive is disabled |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
556 r = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'\n\n.. raw:: html\n\n <badtag>\n\n')) |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
557 r_result='''<div class="document"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
558 <div class="system-message"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
559 <p class="system-message-title">System Message: WARNING/2 (<tt class="docutils"><string></tt>, line 3)</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
560 <p>"raw" directive disabled.</p> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
561 <pre class="literal-block"> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
562 .. raw:: html |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
563 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
564 <badtag> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
565 |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
566 </pre> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
567 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
568 </div> |
|
72a281a55a17
Disable rst raw and include directives.
John Rouillard <rouilj@ieee.org>
parents:
6097
diff
changeset
|
569 ''' |
|
6284
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
570 # test case to make sure javascript and data url's aren't turned |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
571 # into links |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
572 s = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<badtag>\njavascript:badcode data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
573 s_result = '<div class="document">\n<p><badtag>\njavascript:badcode data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==</p>\n</div>\n' |
|
6103
af16c135fb98
url's with javascript scheme should not be links in reST
John Rouillard <rouilj@ieee.org>
parents:
6099
diff
changeset
|
574 |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
575 # test url recognition |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
576 t = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'link is https://example.com/link for testing.')) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
577 t_result = '<div class="document">\n<p>link is <a class="reference external" href="https://example.com/link">https://example.com/link</a> for testing.</p>\n</div>\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
578 |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
579 # test text that doesn't need to be processed |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
580 u = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'Just a plain old string here. Nothig to process.')) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
581 u_result = '<div class="document">\n<p>Just a plain old string here. Nothig to process.</p>\n</div>\n' |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
582 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
583 self.assertEqual(p.rst(), u2s(u'<div class="document">\n<p>A string with <a class="reference external" href="mailto:cmeerw@example.com">cmeerw@example.com</a> <em>embedded</em> \u00df</p>\n</div>\n')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
584 self.assertEqual(q.rst(), u2s(q_result)) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
585 self.assertEqual(r.rst(), u2s(r_result)) |
|
6103
af16c135fb98
url's with javascript scheme should not be links in reST
John Rouillard <rouilj@ieee.org>
parents:
6099
diff
changeset
|
586 self.assertEqual(s.rst(), u2s(s_result)) |
|
6339
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
587 self.assertEqual(t.rst(), u2s(t_result)) |
|
ab18fe956d45
Test StringHTMLProperty.wrapped(); test url, plain text for rst
John Rouillard <rouilj@ieee.org>
parents:
6338
diff
changeset
|
588 self.assertEqual(u.rst(), u2s(u_result)) |
|
6095
3ada6a3f48e1
fixed ReStructuredText encoding with Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6059
diff
changeset
|
589 |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
590 def test_string_field(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
591 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
8281
669dfccca898
issue2551391 - checkboxes and radiobutton inputs get wrong id's.
John Rouillard <rouilj@ieee.org>
parents:
7936
diff
changeset
|
592 self.assertEqual(p.field(), '<input id="test1@test" name="test1@test" size="30" type="text" value="A string <b> with rouilj@example.com embedded &lt; html</b>">') |
|
5157
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
593 |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
594 def test_string_multiline(self): |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
595 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', 'A string <b> with rouilj@example.com embedded < html</b>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
596 self.assertEqual(p.multiline(), '<textarea name="test1@test" id="test1@test" rows="5" cols="40">A string <b> with rouilj@example.com embedded &lt; html</b></textarea>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
597 self.assertEqual(p.multiline(rows=300, cols=100, **{'class':'css_class'}), '<textarea class="css_class" name="test1@test" id="test1@test" rows="300" cols="100">A string <b> with rouilj@example.com embedded &lt; html</b></textarea>') |
|
ae2a5d1afdd5
adding tests for some StringHTMLProperty methods.
John Rouillard <rouilj@ieee.org>
parents:
5156
diff
changeset
|
598 |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
599 def test_url_match(self): |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
600 '''Test the URL regular expression in StringHTMLProperty. |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
601 ''' |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
602 def t(s, nothing=False, **groups): |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
603 m = StringHTMLProperty.hyper_re.search(s) |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
604 if nothing: |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
605 if m: |
|
5793
6aad7b194e63
replace assertEquals wth assertEqual.
John Rouillard <rouilj@ieee.org>
parents:
5684
diff
changeset
|
606 self.assertEqual(m, None, '%r matched (%r)'%(s, m.groupdict())) |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
607 return |
|
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
608 else: |
|
5795
10747e4e4ec4
replace assertNotEquals with assertNotEqual
John Rouillard <rouilj@ieee.org>
parents:
5793
diff
changeset
|
609 self.assertNotEqual(m, None, '%r did not match'%s) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
610 d = m.groupdict() |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
611 for g in groups: |
|
5793
6aad7b194e63
replace assertEquals wth assertEqual.
John Rouillard <rouilj@ieee.org>
parents:
5684
diff
changeset
|
612 self.assertEqual(d[g], groups[g], '%s %r != %r in %r'%(g, d[g], |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
613 groups[g], s)) |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
614 |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
615 #t('123.321.123.321', 'url') |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
616 t('https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4', url="https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4") |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
617 t('http://localhost/', url='http://localhost/') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
618 t('http://roundup.net/', url='http://roundup.net/') |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
619 t('http://richard@localhost/', url='http://richard@localhost/') |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
620 t('http://richard:sekrit@localhost/', |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
621 url='http://richard:sekrit@localhost/') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
622 t('<HTTP://roundup.net/>', url='HTTP://roundup.net/') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
623 t('www.a.ex', url='www.a.ex') |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
624 t('foo.a.ex', nothing=True) |
|
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
625 t('StDevValidTimeSeries.GetObservation', nothing=True) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
626 t('http://a.ex', url='http://a.ex') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
627 t('http://a.ex/?foo&bar=baz\\.@!$%()qwerty', |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
628 url='http://a.ex/?foo&bar=baz\\.@!$%()qwerty') |
|
4009
e335ce40d6c8
Make URL matching code less matchy
Richard Jones <richard@users.sourceforge.net>
parents:
3991
diff
changeset
|
629 t('www.foo.net', url='www.foo.net') |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
630 t('richard@com.example', email='richard@com.example') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
631 t('r@a.com', email='r@a.com') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
632 t('i1', **{'class':'i', 'id':'1'}) |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
633 t('item123', **{'class':'item', 'id':'123'}) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
634 t('item 123', **{'class':'item', 'id':'123'}) |
|
4010
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
635 t('www.user:pass@host.net', email='pass@host.net') |
|
797eacd945af
add tests for and fix alex's examples
Richard Jones <richard@users.sourceforge.net>
parents:
4009
diff
changeset
|
636 t('user:pass@www.host.net', url='user:pass@www.host.net') |
|
4011
e77bcbdc9b32
add tests for numbers too :)
Richard Jones <richard@users.sourceforge.net>
parents:
4010
diff
changeset
|
637 t('123.35', nothing=True) |
|
e77bcbdc9b32
add tests for numbers too :)
Richard Jones <richard@users.sourceforge.net>
parents:
4010
diff
changeset
|
638 t('-.3535', nothing=True) |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
639 |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
640 def test_url_replace(self): |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
641 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', '') |
|
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
642 def t(s): return p.hyper_re.sub(p._hyper_repl, s) |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
643 ae = self.assertEqual |
|
6564
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
644 ae(t('issue5#msg10'), '<a href="issue5#msg10">issue5#msg10</a>') |
|
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
645 ae(t('issue5'), '<a href="issue5">issue5</a>') |
|
21c7c2041a4b
issue2551181 - allow issueXXX#fragment to generate a link with fragment
John Rouillard <rouilj@ieee.org>
parents:
6551
diff
changeset
|
646 ae(t('issue2255'), 'issue2255') |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
647 ae(t('foo https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4 bar'), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
648 'foo <a href="https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4" rel="nofollow noopener">' |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
649 'https://example.com/demo/issue8#24MRV9BZYx:V:1B~sssssssssssssss~4~4</a> bar') |
|
4288
ce684080e968
issue2550549: Some bugs issue classifiers were causing database lookup errors
Richard Jones <richard@users.sourceforge.net>
parents:
4040
diff
changeset
|
650 ae(t('item123123123123'), 'item123123123123') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
651 ae(t('http://roundup.net/'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
652 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
653 ae(t('<HTTP://roundup.net/>'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
654 '<<a href="HTTP://roundup.net/" rel="nofollow noopener">HTTP://roundup.net/</a>>') |
|
4414
399569ff4aed
- fix small indentation glitch
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4413
diff
changeset
|
655 ae(t('<http://roundup.net/>.'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
656 '<<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>>.') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
657 ae(t('<www.roundup.net>'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
658 '<<a href="http://www.roundup.net" rel="nofollow noopener">www.roundup.net</a>>') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
659 ae(t('(www.roundup.net)'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
660 '(<a href="http://www.roundup.net" rel="nofollow noopener">www.roundup.net</a>)') |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
661 ae(t('foo http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx bar'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
662 'foo <a href="http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
663 'http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx</a> bar') |
|
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
664 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
665 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
666 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)') |
|
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
667 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language)).'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
668 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4391
d5239335fae3
make URL detection a little smarter about brackets per issue2550657
Richard Jones <richard@users.sourceforge.net>
parents:
4288
diff
changeset
|
669 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>).') |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
670 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language))>.'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
671 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language)" rel="nofollow noopener">' |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
672 'http://en.wikipedia.org/wiki/Python_(programming_language)</a>)>.') |
|
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
673 ae(t('(e.g. http://en.wikipedia.org/wiki/Python_(programming_language>)).'), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
674 '(e.g. <a href="http://en.wikipedia.org/wiki/Python_(programming_language" rel="nofollow noopener">' |
|
4413
66603a9051f9
improve handling of '>' when URLs are converted to links
Richard Jones <richard@users.sourceforge.net>
parents:
4391
diff
changeset
|
675 'http://en.wikipedia.org/wiki/Python_(programming_language</a>>)).') |
|
4647
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
676 for c in '.,;:!': |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
677 # trailing punctuation is not included |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
678 ae(t('http://roundup.net/%c ' % c), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
679 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>%c ' % c) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
680 # trailing punctuation is not included without trailing space |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
681 ae(t('http://roundup.net/%c' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
682 '<a href="http://roundup.net/" rel="nofollow noopener">http://roundup.net/</a>%c' % c) |
|
4647
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
683 # but it's included if it's part of the URL |
|
11b6601629d7
#2550759: Trailing punctuation is no longer included when URLs are converted to links.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
4414
diff
changeset
|
684 ae(t('http://roundup.net/%c/' % c), |
|
5684
97e2125e064c
When we generate links from URL's in messages, we add rel="nofollow"
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
685 '<a href="http://roundup.net/%c/" rel="nofollow noopener">http://roundup.net/%c/</a>' % (c, c)) |
|
6551
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
686 # including with a non / terminated path |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
687 ae(t('http://roundup.net/test%c ' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
688 '<a href="http://roundup.net/test" rel="nofollow noopener">http://roundup.net/test</a>%c ' % c) |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
689 # but it's included if it's part of the URL path |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
690 ae(t('http://roundup.net/%ctest' % c), |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
691 '<a href="http://roundup.net/%ctest" rel="nofollow noopener">http://roundup.net/%ctest</a>' % (c, c)) |
|
f1f8d75edd97
Add variations on test for _hyper_url functons
John Rouillard <rouilj@ieee.org>
parents:
6404
diff
changeset
|
692 |
|
3991
13161539e5bd
improved URL matching
Richard Jones <richard@users.sourceforge.net>
parents:
3972
diff
changeset
|
693 |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
694 def test_input_html4(self): |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
695 # boolean attributes are just the attribute name |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
696 # indicate with attr=None or attr="attr" |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
697 # e.g. disabled |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
698 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
699 input=input_html4(required=None, size=30) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
700 self.assertEqual(input, '<input required size="30" type="text">') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
701 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
702 input=input_html4(required="required", size=30) |
|
6059
f0da02e0ca81
Different fix for displaying booleans properly in xhtml vs html
John Rouillard <rouilj@ieee.org>
parents:
5989
diff
changeset
|
703 self.assertEqual(input, '<input required="required" size="30" type="text">') |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
704 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
705 attrs={"required": None, "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
706 input=input_html4(**attrs) |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
707 self.assertEqual(input, '<input class="required" required size="30" type="text">') |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
708 |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
709 attrs={"disabled": "disabled", "class": "required", "size": 30} |
|
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
710 input=input_html4(**attrs) |
|
6059
f0da02e0ca81
Different fix for displaying booleans properly in xhtml vs html
John Rouillard <rouilj@ieee.org>
parents:
5989
diff
changeset
|
711 self.assertEqual(input, '<input class="required" disabled="disabled" size="30" type="text">') |
|
5989
c475159af6b8
Add test and changelog for html boolean fix.
John Rouillard <rouilj@ieee.org>
parents:
5903
diff
changeset
|
712 |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
713 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
714 class HTMLPropertyTestClass(unittest.TestCase): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
715 def setUp(self): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
716 self.form = FieldStorage() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
717 self.client = MockNull() |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
718 self.client.db = db = memorydb.create('admin') |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
719 db.tx_Source = "web" |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
720 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
721 db.issue.addprop(tx_Source=hyperdb.String()) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
722 |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
723 db.security.hasPermission = lambda *args, **kw: True |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
724 self.client.form = self.form |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
725 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
726 self.client._props = MockNull() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
727 # add client props for testing anti_csrf_nonce |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
728 self.client.session_api = MockNull(_sid="1234567890") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
729 self.client.db.getuid = lambda : 10 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
730 |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
731 @pytest.fixture(autouse=True) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
732 def inject_fixtures(self, caplog): |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
733 self._caplog = caplog |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
734 |
|
8288
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
735 class BooleanHTMLPropertyTestCase(HTMLPropertyTestClass): |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
736 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
737 def setUp(self): |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
738 super(BooleanHTMLPropertyTestCase, self).setUp() |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
739 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
740 db = self.client.db |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
741 db.issue.addprop(boolvalt=hyperdb.Boolean()) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
742 db.issue.addprop(boolvalf=hyperdb.Boolean()) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
743 db.issue.addprop(boolvalunset=hyperdb.Boolean()) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
744 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
745 self.client.db.issue.create(title="title", |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
746 boolvalt = True, |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
747 boolvalf = False) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
748 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
749 def tearDown(self): |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
750 self.client.db.close() |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
751 memorydb.db_nuke('') |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
752 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
753 testdata = [ |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
754 ("boolvalt", "Yes", True, False), |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
755 ("boolvalf", "No", False, True), |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
756 ("boolvalunset", "", False, True), |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
757 ] |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
758 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
759 def test_BoolHTMLRadioButtons(self): |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
760 #propname = "boolvalt" |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
761 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
762 #plainval = "Yes" |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
763 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
764 self.maxDiff = None |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
765 for test_inputs in self.testdata: |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
766 params = { |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
767 "check1": 'checked="checked" ' if test_inputs[2] else "", |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
768 "check2": 'checked="checked" ' if test_inputs[3] else "", |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
769 "propname": test_inputs[0], |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
770 "plainval": test_inputs[1], |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
771 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
772 } |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
773 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
774 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
775 test_hyperdbBoolean = self.client.db.issue.getprops("1")[ |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
776 params['propname']] |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
777 test_boolean = self.client.db.issue.get("1", params['propname']) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
778 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
779 # client, classname, nodeid, prop, name, value, |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
780 # anonymous=0, offset=None |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
781 d = BooleanHTMLProperty(self.client, 'issue', '1', |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
782 test_hyperdbBoolean, |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
783 params['propname'], test_boolean) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
784 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
785 self.assertIsInstance(d._value, (type(None), bool)) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
786 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
787 self.assertEqual(d.plain(), params['plainval']) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
788 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
789 input_expected = ( |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
790 '<input %(check1)sid="issue1@%(propname)s_yes" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
791 'name="issue1@%(propname)s" type="radio" value="yes">' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
792 '<label class="rblabel" for="issue1@%(propname)s_yes">' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
793 'Yes</label>' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
794 '<input %(check2)sid="issue1@%(propname)s_no" name="issue1@%(propname)s" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
795 'type="radio" value="no"><label class="rblabel" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
796 'for="issue1@%(propname)s_no">No</label>') % params |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
797 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
798 self.assertEqual(d.field(), input_expected) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
799 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
800 y_label = ( '<label class="rblabel" for="issue1@%(propname)s_yes">' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
801 'True</label>') % params |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
802 n_label = ('<label class="rblabel" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
803 'for="issue1@%(propname)s_no">False</label>') % params |
|
8289
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
804 u_label = ('<label class="rblabel" ' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
805 'for="issue1@%(propname)s_unk">Ignore</label>') % params |
|
8288
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
806 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
807 input_expected = ( |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
808 '<input %(check1)sid="issue1@%(propname)s_yes" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
809 'name="issue1@%(propname)s" type="radio" value="yes">' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
810 + y_label + |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
811 '<input %(check2)sid="issue1@%(propname)s_no" name="issue1@%(propname)s" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
812 'type="radio" value="no">' + n_label ) % params |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
813 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
814 self.assertEqual(d.field(y_label=y_label, n_label=n_label), input_expected) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
815 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
816 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
817 input_expected = ( |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
818 '<label class="rblabel" for="issue1@%(propname)s_yes">' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
819 'Yes</label>' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
820 '<input %(check1)sid="issue1@%(propname)s_yes" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
821 'name="issue1@%(propname)s" type="radio" value="yes">' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
822 '<label class="rblabel" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
823 'for="issue1@%(propname)s_no">No</label>' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
824 '<input %(check2)sid="issue1@%(propname)s_no" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
825 'name="issue1@%(propname)s" ' |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
826 'type="radio" value="no">') % params |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
827 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
828 print(d.field(labelfirst=True)) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
829 self.assertEqual(d.field(labelfirst=True), input_expected) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
830 |
|
8289
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
831 input_expected = ( |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
832 '<label class="rblabel" for="issue1@%(propname)s_unk">' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
833 'Ignore</label>' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
834 '<input id="issue1@%(propname)s_unk" ' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
835 'name="issue1@%(propname)s" type="radio" value="">' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
836 '<input %(check1)sid="issue1@%(propname)s_yes" ' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
837 'name="issue1@%(propname)s" type="radio" value="yes">' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
838 '<label class="rblabel" for="issue1@%(propname)s_yes">' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
839 'Yes</label>' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
840 '<input %(check2)sid="issue1@%(propname)s_no" name="issue1@%(propname)s" ' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
841 'type="radio" value="no"><label class="rblabel" ' |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
842 'for="issue1@%(propname)s_no">No</label>') % params |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
843 |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
844 self.assertEqual(d.field(u_label=u_label), input_expected) |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
845 |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
846 |
|
46886073c665
refactor: change method used to assign radiobuttons for boolean
John Rouillard <rouilj@ieee.org>
parents:
8288
diff
changeset
|
847 # one test with the last d is enough. |
|
8288
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
848 # check permissions return |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
849 is_view_ok_orig = d.is_view_ok |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
850 is_edit_ok_orig = d.is_edit_ok |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
851 no_access = lambda : False |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
852 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
853 d.is_view_ok = no_access |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
854 self.assertEqual(d.plain(), "[hidden]") |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
855 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
856 d.is_edit_ok = no_access |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
857 self.assertEqual(d.field(), "[hidden]") |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
858 |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
859 d.is_view_ok = is_view_ok_orig |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
860 self.assertEqual(d.field(), params['plainval']) |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
861 d.is_edit_ok = is_edit_ok_orig |
|
e70dc7c43c9c
test: basic testing for BooleanHTMLProperty
John Rouillard <rouilj@ieee.org>
parents:
8287
diff
changeset
|
862 |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
863 class DateHTMLPropertyTestCase(HTMLPropertyTestClass): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
864 |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
865 def setUp(self): |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
866 super(DateHTMLPropertyTestCase, self).setUp() |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
867 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
868 db = self.client.db |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
869 db.issue.addprop(deadline=hyperdb.Date()) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
870 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
871 self.test_datestring = "2021-01-01.11:22:10" |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
872 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
873 self.client.db.issue.create(title="title", |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
874 deadline=date.Date(self.test_datestring)) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
875 self.client.db.getUserTimezone = lambda: "2" |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
876 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
877 def tearDown(self): |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
878 self.client.db.close() |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
879 memorydb.db_nuke('') |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
880 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
881 def exp_classhelp(self, cls='issue', prop='deadline', dlm='.'): |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
882 value = dlm.join (('2021-01-01', '11:22:10')) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
883 return ('<a class="classhelp" data-calurl="%(cls)s?' |
|
8317
4455cd036c25
fix: tests for changeset: 8314:7ff47307b4b1 use text for number input
John Rouillard <rouilj@ieee.org>
parents:
8305
diff
changeset
|
884 '@template=calendar&property=%(prop)s&' |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
885 'form=itemSynopsis&date=%(value)s" ' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
886 'data-height="200" data-width="300" href="javascript:help_window' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
887 '(\'%(cls)s?@template=calendar&property=%(prop)s&' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
888 'form=itemSynopsis&date=%(value)s\', 300, 200)">(cal)</a>' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
889 ) % {'cls': cls, 'prop': prop, 'value': value} |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
890 |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
891 def test_DateHTMLWithDate(self): |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
892 """Test methods when DateHTMLProperty._value is a hyperdb.Date() |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
893 """ |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
894 self.client.db.config['WEB_USE_BROWSER_DATE_INPUT'] = True |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
895 test_datestring = self.test_datestring |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
896 test_Date = self.client.db.issue.get("1", 'deadline') |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
897 test_hyperdbDate = self.client.db.issue.getprops("1")['deadline'] |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
898 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
899 self.client.classname = "issue" |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
900 self.client.template = "item" |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
901 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
902 # client, classname, nodeid, prop, name, value, |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
903 # anonymous=0, offset=None |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
904 d = DateHTMLProperty(self.client, 'issue', '1', test_hyperdbDate, |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
905 'deadline', test_Date) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
906 self.assertIsInstance(d._value, date.Date) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
907 self.assertEqual(d.pretty(), " 1 January 2021") |
| 8287 | 908 self.assertEqual(d.pretty("%2d %B %Y"), "01 January 2021") |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
909 self.assertEqual(d.pretty(format="%Y-%m"), "2021-01") |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
910 self.assertEqual(d.plain(), "2021-01-01.13:22:10") |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
911 self.assertEqual(d.local("-4").plain(), "2021-01-01.07:22:10") |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
912 input_expected = """<input id="issue1@deadline" name="issue1@deadline" size="30" type="date" value="2021-01-01">""" |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
913 self.assertEqual(d.field(display_time=False), input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
914 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
915 input_expected = '<input id="issue1@deadline" name="issue1@deadline" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
916 'size="30" type="datetime-local" value="2021-01-01T13:22:10">' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
917 self.assertEqual(d.field(), input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
918 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
919 input_expected = '<input id="issue1@deadline" name="issue1@deadline" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
920 'size="30" type="text" value="2021-01-01.13:22:10">' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
921 field = d.field(format='%Y-%m-%d.%H:%M:%S', popcal=False) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
922 self.assertEqual(field, input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
923 |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
924 # test with format |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
925 input_expected = '<input id="issue1@deadline" name="issue1@deadline" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
926 'size="30" type="text" value="2021-01">' + self.exp_classhelp() |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
927 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
928 self.assertEqual(d.field(format="%Y-%m"), input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
929 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
930 input_expected = '<input id="issue1@deadline" name="issue1@deadline" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
931 'size="30" type="text" value="2021-01">' |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
932 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
933 input = d.field(format="%Y-%m", popcal=False) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
934 self.assertEqual(input, input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
935 |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
936 def test_DateHTMLWithText(self): |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
937 """Test methods when DateHTMLProperty._value is a string |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
938 rather than a hyperdb.Date() |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
939 """ |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
940 test_datestring = "2021-01-01 11:22:10" |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
941 test_date = hyperdb.Date("2") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
942 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
943 self.form.list.append(MiniFieldStorage("test1@test", test_datestring)) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
944 self.client._props=test_date |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
945 self.client.db.config['WEB_USE_BROWSER_DATE_INPUT'] = False |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
946 |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
947 self.client.db.classes = dict \ |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
948 ( test = MockNull(getprops = lambda : test_date) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
949 ) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
950 |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
951 self.client.classname = "test" |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
952 self.client.template = "item" |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
953 |
|
6377
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
954 # client, classname, nodeid, prop, name, value, |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
955 # anonymous=0, offset=None |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
956 d = DateHTMLProperty(self.client, 'test', '1', self.client._props, |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
957 'test', '') |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
958 self.assertIs(type(d._value), str) |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
959 self.assertEqual(d.pretty(), "2021-01-01 11:22:10") |
|
a7e7314fb7d9
issue2551126 - AttributeError: 'str' object has no attribute 'local'.
John Rouillard <rouilj@ieee.org>
parents:
6339
diff
changeset
|
960 self.assertEqual(d.plain(), "2021-01-01 11:22:10") |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
961 input_expected = '<input id="test1@test" name="test1@test" size="30" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
962 'type="text" value="2021-01-01 11:22:10">' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
963 self.assertEqual(d.field(popcal=False), input_expected) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
964 self.client.db.config['WEB_USE_BROWSER_DATE_INPUT'] = True |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
965 input_expected = '<input id="test1@test" name="test1@test" size="30" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
966 'type="datetime-local" value="2021-01-01 11:22:10">' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
967 self.assertEqual(d.field(), input_expected) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
968 self.client.db.config['WEB_USE_BROWSER_DATE_INPUT'] = False |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
969 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
970 input_expected = '<input id="test1@test" name="test1@test" size="40" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
971 'type="text" value="2021-01-01 11:22:10">' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
972 self.assertEqual(d.field(size=40, popcal=False), input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
973 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
974 input_expected = ('<input id="test1@test" name="test1@test" size="30" ' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
975 'type="text" value="2021-01-01 11:22:10">' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
976 + self.exp_classhelp(cls='test', prop='test', dlm=' ')) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
977 self.maxDiff=None |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
978 self.assertEqual(d.field(format="%Y-%m"), input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
979 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
980 # format always uses type="text" even when date input is set |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
981 self.client.db.config['WEB_USE_BROWSER_DATE_INPUT'] = True |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
982 result = d.field(format="%Y-%m-%d", popcal=False) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
983 input_expected = '<input id="test1@test" name="test1@test" size="30" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
984 'type="text" value="2021-01-01 11:22:10">' |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
985 self.assertEqual(result, input_expected) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
986 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
987 input_expected = ('<input id="test1@test" name="test1@test" size="30" ' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
988 'type="text" value="2021-01-01 11:22:10">' |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
989 + self.exp_classhelp(cls='test', prop='test', dlm=' ')) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
990 self.assertEqual(d.field(format="%Y-%m"), input_expected) |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
991 |
|
8300
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
992 result = d.field(format="%Y-%m-%dT%H:%M:%S", popcal=False) |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
993 input_expected = '<input id="test1@test" name="test1@test" size="30" '\ |
|
b99e76e76496
Make native date and number elements configurable
Ralf Schlatterbeck <rsc@runtux.com>
parents:
8289
diff
changeset
|
994 'type="text" value="2021-01-01 11:22:10">' |
|
8285
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
995 self.assertEqual(result, input_expected) |
|
2bf0c4e7795e
fix: issue2551390 - Replace text input/calendar popup with native date input
John Rouillard <rouilj@ieee.org>
parents:
8281
diff
changeset
|
996 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
997 # common markdown test cases |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
998 class MarkdownTests: |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
999 def mangleMarkdown2(self, s): |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1000 ''' markdown2's rel=nofollow support on 'a' tags isn't programmable. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1001 So we are using it's builtin nofollow support. Mangle the string |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1002 so that it matches the test case. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1003 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1004 turn: <a rel="nofollow" href="foo"> into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1005 <a href="foo" rel="nofollow noopener"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1006 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1007 Also if it is a mailto url, we don't expect rel="nofollow", |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1008 so delete it. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1009 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1010 turn: <a rel="nofollow" href="mailto:foo"> into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1011 <a href="mailto:foo"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1012 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1013 Also when a title is present it is put in a different place |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1014 from markdown, so fix it to normalize. |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1015 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1016 turn: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1017 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1018 <a rel="nofollow" href="http://example.com/" title="a title"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1019 into |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1020 <a href="http://example.com/" rel="nofollow noopener" title="a title"> |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1021 ''' |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1022 if type(self) == Markdown2TestCase and s.find('a rel="nofollow"') != -1: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1023 if s.find('href="mailto:') == -1: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1024 # not a mailto url |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1025 if 'rel="nofollow"' in s: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1026 if 'title="' in s: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1027 s = s.replace(' rel="nofollow" ', ' ').replace(' title=', ' rel="nofollow noopener" title=') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1028 else: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1029 s = s.replace(' rel="nofollow" ', ' ').replace('">', '" rel="nofollow noopener">') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1030 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1031 return s |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1032 else: |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1033 # a mailto url |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1034 return s.replace(' rel="nofollow" ', ' ') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1035 return s |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1036 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1037 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1038 def test_string_markdown(self): |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1039 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with <br> *embedded* \u00df')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1040 self.assertEqual(p.markdown().strip(), u2s(u'<p>A string with <br> <em>embedded</em> \u00df</p>')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1041 |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1042 def test_string_markdown_link(self): |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1043 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1044 u2s(u'A link <http://localhost>')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1045 m = p.markdown().strip() |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1046 m = self.mangleMarkdown2(m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1047 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1048 self.assertEqual( u2s(u'<p>A link <a href="http://localhost" rel="nofollow noopener">http://localhost</a></p>'), m) |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1049 |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1050 def test_string_markdown_link_item(self): |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1051 """ The link formats for the different markdown engines changes. |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1052 Order of attributes, value for rel (noopener, nofollow etc) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1053 is different. So most tests check for a substring that indicates |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1054 success rather than the entire returned string. |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1055 """ |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1056 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1057 u2s(u'An issue1 link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1058 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1059 # just verify that plain linking is working |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1060 self.assertIn( u2s(u'href="issue1"'), p.plain(hyperlink=1)) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1061 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1062 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1063 u2s(u'An [issue1](issue1) link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1064 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1065 # just verify that plain linking is working |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1066 self.assertIn( u2s(u'href="issue1"'), p.plain(hyperlink=1)) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1067 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1068 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1069 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1070 u2s(u'An [issue1](https://example.com/issue1) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1071 self.assertIn( u2s(u'href="https://example.com/issue1"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1072 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1073 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1074 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1075 u2s(u'An [issu1](#example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1076 self.assertIn( u2s(u'href="#example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1077 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1078 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1079 u2s(u'An [issu1](/example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1080 self.assertIn( u2s(u'href="/example"'), p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1081 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1082 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1083 u2s(u'An [issu1](./example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1084 self.assertIn( u2s(u'href="./example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1085 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1086 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1087 u2s(u'An [issu1](../example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1088 self.assertIn( u2s(u'href="../example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1089 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1090 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1091 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1092 u2s(u'A [wuarchive_ftp](ftp://www.wustl.gov/file) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1093 self.assertIn( u2s(u'href="ftp://www.wustl.gov/file"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1094 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1095 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1096 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1097 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1098 u2s(u'An [issue1] (https://example.com/issue1) link')) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1099 self.assertIn( u2s(u'href="issue1"'), p.markdown().strip()) |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1100 if type(self) == MistuneTestCase: |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1101 # mistune makes the https url into a real link |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1102 self.assertIn( u2s(u'href="https://example.com/issue1"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1103 p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1104 else: |
|
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1105 # the other two engines leave the parenthesized url as is. |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1106 self.assertIn( u2s(u' (https://example.com/issue1) link'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1107 p.markdown().strip()) |
|
6336
6f89cdc7c938
issue2551108 - fix markdown formatted designator links
John Rouillard <rouilj@ieee.org>
parents:
6299
diff
changeset
|
1108 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1109 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1110 u2s(u'An [issu1](.../example) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1111 if (isinstance(self, Markdown2TestCase) and |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1112 md2__version_info__ > (2, 4, 9)): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1113 # markdown2 > 2.4.9 handles this differently |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1114 self.assertIn( u2s(u'href="#"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1115 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1116 self.assertIn( u2s(u'href=".../example"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1117 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1118 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1119 u2s(u'A [phone](tel:0016175555555) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1120 if (isinstance(self, Markdown2TestCase) and |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1121 md2__version_info__ > (2, 4, 9)): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1122 self.assertIn(u2s(u'href="#"'), p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1123 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1124 self.assertIn( u2s(u'href="tel:0016175555555"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1125 p.markdown().strip()) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1126 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1127 def test_string_email_markdown_link(self): |
|
6109
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
1128 # markdown2 and markdown escape the email address |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1129 try: |
|
6109
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
1130 from html import unescape as html_unescape |
|
b108c9fc7aea
fix test for Python 2
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6104
diff
changeset
|
1131 except ImportError: |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1132 from HTMLParser import HTMLParser |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1133 html_unescape = HTMLParser().unescape |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1134 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1135 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1136 u2s(u'A link <cmeerw@example.com>')) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1137 m = html_unescape(p.markdown().strip()) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1138 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1139 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1140 self.assertEqual(m, u2s(u'<p>A link <a href="mailto:cmeerw@example.com">cmeerw@example.com</a></p>')) |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1141 |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1142 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1143 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1144 u2s(u'An bare email baduser@daemons.com link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1145 m = self.mangleMarkdown2(html_unescape(p.markdown().strip())) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1146 self.assertIn( u2s(u'href="mailto:baduser@daemons.com"'), |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1147 m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1148 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1149 p = StringHTMLProperty( |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1150 self.client, 'test', '1', None, 'test', |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1151 u2s(u'An [email_url](mailto:baduser@daemons.com) link')) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1152 m = self.mangleMarkdown2(html_unescape(p.markdown().strip())) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1153 |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1154 if isinstance(self, MistuneTestCase): |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1155 self.assertIn('<a href="mailto:baduser@daemons.com" rel="nofollow noopener">email_url</a>', m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1156 else: |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1157 self.assertIn('<a href="mailto:baduser@daemons.com">email_url</a>', m) |
|
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1158 |
|
6104
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1159 def test_string_markdown_javascript_link(self): |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1160 # make sure we don't get a "javascript:" link |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1161 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<javascript:alert(1)>')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1162 self.assertTrue(p.markdown().find('href="javascript:') == -1) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1163 |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1164 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[link](javascript:alert(1))')) |
|
a1fd9551d416
don't allow javascript URLs in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6103
diff
changeset
|
1165 self.assertTrue(p.markdown().find('href="javascript:') == -1) |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1166 |
|
6284
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1167 def test_string_markdown_data_link(self): |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1168 # make sure we don't get a "data:" link |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1169 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==>')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1170 print(p.markdown()) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1171 self.assertTrue(p.markdown().find('href="data:') == -1) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1172 |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1173 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[data link](data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==)')) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1174 print(p.markdown()) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1175 self.assertTrue(p.markdown().find('href="data:') == -1) |
|
3f7538316724
issue2551099 - disable processing of data url's in markdown.
John Rouillard <rouilj@ieee.org>
parents:
6282
diff
changeset
|
1176 |
|
6274
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1177 |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1178 def test_string_markdown_forced_line_break(self): |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1179 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'This is a set of text \n:that should have a break \n:at newlines. Each \n:colon should be the start of an html line')) |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1180 # sigh different backends render this differently: |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1181 # of text <br /> |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1182 # of text<br> |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1183 # etc. |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1184 # Rather than using a different result for each |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1185 # renderer, look for '<br' and require three of them. |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1186 m = p.markdown() |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1187 print(m) |
|
6274
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1188 self.assertEqual(3, m.count('<br')) |
|
474de62f4ce0
Add test for hard linebreak fomatting in markdown
John Rouillard <rouilj@ieee.org>
parents:
6109
diff
changeset
|
1189 |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1190 def test_string_markdown_code_block(self): |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1191 ''' also verify that embedded html is escaped ''' |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1192 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n```\nline 1\nline 2\n```\n\nnew </pre> paragraph')) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1193 self.assertEqual(p.markdown().strip().replace('\n\n', '\n'), u2s(u'<p>embedded code block <pre></p>\n<pre><code>line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1194 |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1195 def test_string_markdown_code_block_attribute(self): |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
1196 parser = NormalizingHtmlParser() |
|
6992
a5f30372ef7f
New markdown2 release changed output with code highlighting (take 2)
John Rouillard <rouilj@ieee.org>
parents:
6991
diff
changeset
|
1197 |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1198 ''' also verify that embedded html is escaped ''' |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1199 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n``` python\nline 1\nline 2\n```\n\nnew </pre> paragraph')) |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
1200 m = parser.normalize(p.markdown()) |
|
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
1201 parser.reset() |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1202 print(m) |
|
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1203 if type(self) == MistuneTestCase: |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
1204 self.assertEqual(m, parser.normalize('<p>embedded code block <pre></p>\n<pre><code class="lang-python">line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1205 elif type(self) == MarkdownTestCase: |
|
7561
91725f12b239
Support markdown2 2.4.10, 2.4.8- and exclude 2.4.9
John Rouillard <rouilj@ieee.org>
parents:
7032
diff
changeset
|
1206 self.assertEqual(m.replace('class="python"','class="language-python"'), parser.normalize('<p>embedded code block <pre></p>\n<pre><code class="language-python">line 1\nline 2\n</code></pre>\n<p>new </pre> paragraph</p>')) |
|
6279
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1207 else: |
|
6995
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
1208 expected_result = parser.normalize('<p>embedded code block <pre></p>\n<div class="codehilite"><pre><span></span><code><span class="n">line</span> <span class="mi">1</span>\n<span class="n">line</span> <span class="mi">2</span>\n</code></pre></div>\n<p>new </pre> paragraph</p>') |
|
dc83ebff4c90
change test to use html normalizer when comparing html output.
John Rouillard <rouilj@ieee.org>
parents:
6992
diff
changeset
|
1209 self.assertEqual(m, expected_result) |
|
6275
bda491248fd8
Handle exception raised from markdown processing
John Rouillard <rouilj@ieee.org>
parents:
6274
diff
changeset
|
1210 |
|
6279
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1211 def test_markdown_return_text_on_exception(self): |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1212 ''' string is invalid markdown. missing end of fenced code block ''' |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1213 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'embedded code block <pre>\n\n``` python\nline 1\nline 2\n\n\nnew </pre> paragraph')) |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1214 m = p.markdown().strip() |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1215 print(m) |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1216 self.assertEqual(m.replace('\n\n','\n'), '<p>embedded code block <pre></p>\n<p>``` python\nline 1\nline 2</p>\n<p>new </pre> paragraph</p>') |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1217 |
|
9ec3a9bc4ea5
issue2551097 - fix call to markdown2 - fix fenced code blocks.
John Rouillard <rouilj@ieee.org>
parents:
6277
diff
changeset
|
1218 def test_markdown_break_on_newline(self): |
|
6277
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1219 self.client.db.config['MARKDOWN_BREAK_ON_NEWLINE'] = True |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1220 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with\nline break\ntwice.')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1221 m = p.markdown() |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1222 self.assertEqual(2, m.count('<br')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1223 self.client.db.config['MARKDOWN_BREAK_ON_NEWLINE'] = False |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1224 |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1225 m = p.markdown() |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1226 self.assertEqual(0, m.count('<br')) |
|
957a0fc20021
issue2551094 - markdown mismatch - new config for embedded newine
John Rouillard <rouilj@ieee.org>
parents:
6275
diff
changeset
|
1227 |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1228 def test_markdown_hyperlinked_url(self): |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1229 # classic markdown does not emit a \n at end of rendered string |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1230 # so rstrip \n. |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1231 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'http://example.com/')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1232 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1233 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1234 print(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1235 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">http://example.com/</a></p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1236 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1237 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'<http://example.com/>')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1238 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1239 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1240 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">http://example.com/</a></p>') |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1241 |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1242 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[label](http://example.com/ "a title")')) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1243 m = p.markdown(hyperlink=1) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1244 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1245 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener" title="a title">label</a></p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1246 |
|
6299
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1247 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'[label](http://example.com/).')) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1248 m = p.markdown(hyperlink=1) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1249 m = self.mangleMarkdown2(m) |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1250 self.assertEqual(m.rstrip('\n'), '<p><a href="http://example.com/" rel="nofollow noopener">label</a>.</p>') |
|
fd0bdcbc68e4
issue2551104 - fix issue with markdown autolink next to punctuation
John Rouillard <rouilj@ieee.org>
parents:
6284
diff
changeset
|
1251 |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1252 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1253 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1254 m = self.mangleMarkdown2(m) |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1255 self.assertIn(m, [ |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1256 '<p><img src="http://example.com/" alt=""/></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1257 '<p><img src="http://example.com/" alt="" /></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1258 '<p><img src="http://example.com/" alt=""></p>\n', |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1259 '<p><img alt="" src="http://example.com/" /></p>', # markdown |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1260 ]) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1261 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1262 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'An URL http://example.com/ with text')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1263 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1264 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1265 self.assertEqual(m.rstrip('\n'), '<p>An URL <a href="http://example.com/" rel="nofollow noopener">http://example.com/</a> with text</p>') |
|
6280
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1266 |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1267 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'An URL https://example.com/path with text')) |
|
6ed5152a92d0
issue2551096 - enable markdown autolink for email and bare url's.
John Rouillard <rouilj@ieee.org>
parents:
6279
diff
changeset
|
1268 m = p.markdown(hyperlink=1) |
|
6282
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1269 m = self.mangleMarkdown2(m) |
|
d30501bafdfb
issue2551098: markdown links missing rel="noreferer nofollow"
John Rouillard <rouilj@ieee.org>
parents:
6280
diff
changeset
|
1270 self.assertEqual(m.rstrip('\n'), '<p>An URL <a href="https://example.com/path" rel="nofollow noopener">https://example.com/path</a> with text</p>') |
|
6099
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1271 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1272 @skip_mistune |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1273 class MistuneTestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1274 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1275 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1276 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1277 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1278 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1279 templating.markdown = templating._import_mistune() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1280 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1281 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1282 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1283 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1284 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1285 @skip_markdown2 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1286 class Markdown2TestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1287 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1288 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1289 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1290 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1291 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1292 templating.markdown = templating._import_markdown2() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1293 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1294 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1295 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1296 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1297 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1298 @skip_markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1299 class MarkdownTestCase(TemplatingTestCase, MarkdownTests) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1300 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1301 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1302 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1303 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1304 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1305 templating.markdown = templating._import_markdown() |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1306 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1307 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1308 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1309 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1310 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1311 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1312 class NoMarkdownTestCase(TemplatingTestCase) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1313 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1314 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1315 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1316 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1317 self.__markdown = templating.markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1318 templating.markdown = None |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1319 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1320 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1321 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1322 templating.markdown = self.__markdown |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1323 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1324 def test_string_markdown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1325 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string http://localhost with cmeerw@example.com <br> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1326 self.assertEqual(p.markdown(), u2s(u'A string <a href="http://localhost" rel="nofollow noopener">http://localhost</a> with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> <br> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1327 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1328 class NoRstTestCase(TemplatingTestCase) : |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1329 def setUp(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1330 TemplatingTestCase.setUp(self) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1331 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1332 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1333 self.__ReStructuredText = templating.ReStructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1334 templating.ReStructuredText = None |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1335 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1336 def tearDown(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1337 from roundup.cgi import templating |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1338 templating.ReStructuredText = self.__ReStructuredText |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1339 |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1340 def test_string_rst(self): |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1341 p = StringHTMLProperty(self.client, 'test', '1', None, 'test', u2s(u'A string with cmeerw@example.com *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1342 self.assertEqual(p.rst(), u2s(u'A string with <a href="mailto:cmeerw@example.com">cmeerw@example.com</a> *embedded* \u00df')) |
|
55c56ceacb8e
escape HTML tags in markdown content
Christof Meerwald <cmeerw@cmeerw.org>
parents:
6098
diff
changeset
|
1343 |
|
8286
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1344 class NumberIntegerHTMLPropertyTestCase(HTMLPropertyTestClass): |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1345 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1346 def setUp(self): |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1347 super(NumberIntegerHTMLPropertyTestCase, self).setUp() |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1348 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1349 db = self.client.db |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1350 db.issue.addprop(numberval=hyperdb.Number()) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1351 db.issue.addprop(intval=hyperdb.Integer()) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1352 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1353 self.client.db.issue.create(title="title", |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1354 numberval = "3.14", |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1355 intval="314") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1356 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1357 def tearDown(self): |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1358 self.client.db.close() |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1359 memorydb.db_nuke('') |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1360 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1361 def test_IntegerHTML(self): |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1362 test_hyperdbInteger = self.client.db.issue.getprops("1")['intval'] |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1363 test_Integer = test_hyperdbInteger.from_raw( |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1364 self.client.db.issue.get("1", 'intval') |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1365 ) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1366 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1367 # client, classname, nodeid, prop, name, value, |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1368 # anonymous=0, offset=None |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1369 d = IntegerHTMLProperty(self.client, 'issue', '1', |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1370 test_hyperdbInteger, |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1371 'intval', test_Integer) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1372 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1373 self.assertIsInstance(d._value, int) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1374 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1375 self.assertEqual(d.plain(), "314") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1376 |
|
8317
4455cd036c25
fix: tests for changeset: 8314:7ff47307b4b1 use text for number input
John Rouillard <rouilj@ieee.org>
parents:
8305
diff
changeset
|
1377 input_expected = """<input id="issue1@intval" name="issue1@intval" size="30" type="text" value="314">""" |
|
8286
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1378 self.assertEqual(d.field(), input_expected) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1379 |
|
8317
4455cd036c25
fix: tests for changeset: 8314:7ff47307b4b1 use text for number input
John Rouillard <rouilj@ieee.org>
parents:
8305
diff
changeset
|
1380 input_expected = """<input id="issue1@intval" name="issue1@intval" size="30" step="50" type="text" value="314">""" |
|
8286
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1381 self.assertEqual(d.field(step="50"), input_expected) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1382 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1383 input_expected = """<input id="issue1@intval" name="issue1@intval" size="30" type="text" value="314">""" |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1384 self.assertEqual(d.field(type="text"), input_expected) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1385 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1386 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1387 # check permissions return |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1388 is_view_ok_orig = d.is_view_ok |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1389 is_edit_ok_orig = d.is_edit_ok |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1390 no_access = lambda : False |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1391 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1392 d.is_view_ok = no_access |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1393 self.assertEqual(d.plain(), "[hidden]") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1394 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1395 d.is_edit_ok = no_access |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1396 self.assertEqual(d.field(), "[hidden]") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1397 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1398 d.is_view_ok = is_view_ok_orig |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1399 self.assertEqual(d.field(), "314") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1400 d.is_edit_ok = is_edit_ok_orig |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1401 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1402 def test_NumberHTML(self): |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1403 test_hyperdbNumber = self.client.db.issue.getprops("1")['numberval'] |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1404 test_Number = test_hyperdbNumber.from_raw( |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1405 self.client.db.issue.get("1", 'numberval') |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1406 ) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1407 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1408 # client, classname, nodeid, prop, name, value, |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1409 # anonymous=0, offset=None |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1410 d = NumberHTMLProperty(self.client, 'issue', '1', |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1411 test_hyperdbNumber, |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1412 'numberval', test_Number) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1413 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1414 # string needed for memorydb/anydbm backend. Float?? when |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1415 # running against sql backends. |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1416 self.assertIsInstance(d._value, float) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1417 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1418 self.assertEqual(d._value, 3.14) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1419 |
|
8317
4455cd036c25
fix: tests for changeset: 8314:7ff47307b4b1 use text for number input
John Rouillard <rouilj@ieee.org>
parents:
8305
diff
changeset
|
1420 input_expected = """<input id="issue1@numberval" name="issue1@numberval" size="30" type="text" value="3.14">""" |
|
8286
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1421 self.assertEqual(d.field(), input_expected) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1422 |
|
8317
4455cd036c25
fix: tests for changeset: 8314:7ff47307b4b1 use text for number input
John Rouillard <rouilj@ieee.org>
parents:
8305
diff
changeset
|
1423 input_expected = """<input id="issue1@numberval" name="issue1@numberval" size="30" step="50" type="text" value="3.14">""" |
|
8286
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1424 self.assertEqual(d.field(step="50"), input_expected) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1425 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1426 input_expected = """<input id="issue1@numberval" name="issue1@numberval" size="30" type="text" value="3.14">""" |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1427 self.assertEqual(d.field(type="text"), input_expected) |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1428 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1429 self.assertEqual(d.pretty("%0.3f"), "3.140") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1430 self.assertEqual(d.pretty("%0.3d"), "003") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1431 self.assertEqual(d.pretty("%2d"), " 3") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1432 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1433 # see what happens if for other values |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1434 value = d._value |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1435 d._value = "1" # integer |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1436 self.assertEqual(d.pretty("%2d"), "1") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1437 d._value = "I'mNotAFloat" # not a number |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1438 self.assertEqual(d.pretty("%2d"), "I'mNotAFloat") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1439 d._value = value |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1440 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1441 # check permissions return |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1442 is_view_ok_orig = d.is_view_ok |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1443 is_edit_ok_orig = d.is_edit_ok |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1444 no_access = lambda : False |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1445 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1446 d.is_view_ok = no_access |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1447 self.assertEqual(d.plain(), "[hidden]") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1448 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1449 d.is_edit_ok = no_access |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1450 self.assertEqual(d.field(), "[hidden]") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1451 |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1452 d.is_view_ok = is_view_ok_orig |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1453 self.assertEqual(d.field(), "3.14") |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1454 d.is_edit_ok = is_edit_ok_orig |
|
6445e63bb423
feat(web) - Use native number type input for Number() and Integer().
John Rouillard <rouilj@ieee.org>
parents:
8285
diff
changeset
|
1455 |
|
7866
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1456 class ZUtilsTestcase(TemplatingTestCase): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1457 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1458 def test_Iterator(self): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1459 """Test all the iterator functions and properties. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1460 """ |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1461 sequence = ['one', 'two', '3', 4] |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1462 i = Iterator(sequence) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1463 for j in [ # element, item, 1st, last, even, odd, number, |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1464 # letter, Letter, roman, Roman |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1465 (1, "one", 1, 0, True, 0, 1, 'a', 'A', 'i', 'I'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1466 (1, "two", 0, 0, False, 1, 2, 'b', 'B', 'ii', 'II'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1467 (1, "3", 0, 0, True, 0, 3, 'c', 'C', 'iii', 'III'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1468 (1, 4, 0, 1, False, 1, 4, 'd', 'D', 'iv', 'IV'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1469 # next() fails with 0 when past end of sequence |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1470 # everything else is left at end of sequence |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1471 (0, 4, 0, 1, False, 1, 4, 'd', 'D', 'iv', 'IV'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1472 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1473 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1474 ]: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1475 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1476 print(i.item) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1477 self.assertEqual(element, j[0]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1478 self.assertEqual(i.item, j[1]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1479 self.assertEqual(i.first(), j[2]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1480 self.assertEqual(i.start, j[2]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1481 self.assertEqual(i.last(), j[3]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1482 self.assertEqual(i.end, j[3]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1483 self.assertIs(i.even(), j[4]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1484 self.assertEqual(i.odd(), j[5]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1485 self.assertEqual(i.number(), j[6]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1486 self.assertEqual(i.index, j[6] - 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1487 self.assertEqual(i.nextIndex, j[6]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1488 self.assertEqual(i.letter(), j[7]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1489 self.assertEqual(i.Letter(), j[8]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1490 self.assertEqual(i.roman(), j[9]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1491 self.assertEqual(i.Roman(), j[10]) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1492 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1493 class I: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1494 def __init__(self, name, data): |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1495 self.name = name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1496 self.data = data |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1497 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1498 sequence = [I('Al', 'd'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1499 I('Bob', 'e'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1500 I('Bob', 'd'), |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1501 I('Chip', 'd') |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1502 ] |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1503 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1504 iterator = iter(sequence) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1505 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1506 # Iterator is supposed take both sequence and Python iterator. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1507 for source in [sequence, iterator]: |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1508 i = Iterator(source) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1509 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1510 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1511 item1 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1512 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1513 # note these can trigger calls by first/last to same_part(). |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1514 # It can return true for first/last even when there are more |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1515 # items in the sequence. I am just testing the current |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1516 # implementation. Woe to the person who tries to change |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1517 # Iterator.py. |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1518 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1519 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1520 # i.start == 1, so it bypasses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1521 self.assertEqual(i.first(name='namea'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1522 self.assertEqual(i.first(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1523 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1524 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1525 self.assertEqual(i.last(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1526 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1527 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1528 item2 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1529 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1530 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1531 # between item1 and item2 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1532 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1533 self.assertEqual(i.first(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1534 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1535 # between item2 and the next item item3 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1536 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1537 self.assertEqual(i.last(name='name'), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1538 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1539 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1540 item3 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1541 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1542 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1543 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1544 self.assertEqual(i.first(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1545 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1546 # between item3 and the next item item4 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1547 self.assertEqual(i.last(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1548 self.assertEqual(i.last(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1549 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1550 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1551 item4 = i.item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1552 self.assertEqual(element, 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1553 # i.start == 0 so it uses name check |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1554 self.assertEqual(i.first(name='namea'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1555 self.assertEqual(i.first(name='name'), 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1556 # i.end == 0 so it uses name check in object |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1557 # last two object have same name (1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1558 self.assertEqual(i.last(name='namea'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1559 self.assertEqual(i.last(name='name'), 1) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1560 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1561 element = i.next() # returns 1 if next item else 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1562 self.assertEqual(element, 0) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1563 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1564 # this is the underlying call for first/last |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1565 # when i.start/i.end are 0 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1566 # use non-existing attribute name, same item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1567 self.assertIs(i.same_part('namea', item2, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1568 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1569 self.assertIs(i.same_part('name', item2, item2), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1570 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1571 self.assertIs(i.same_part(None, item2, item2), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1572 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1573 # use non-existing attribute name, different item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1574 # non-matching names |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1575 self.assertIs(i.same_part('namea', item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1576 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1577 self.assertIs(i.same_part('name', item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1578 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1579 self.assertIs(i.same_part(None, item1, item2), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1580 |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1581 # use non-existing attribute name, different item |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1582 # matching names |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1583 self.assertIs(i.same_part('namea', item2, item3), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1584 # use correct attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1585 self.assertIs(i.same_part('name', item2, item3), True) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1586 # use no attribute name |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1587 self.assertIs(i.same_part(None, item2, item3), False) |
|
9bbc1d951677
issue2551331 - Fix repeat first/last methods.
John Rouillard <rouilj@ieee.org>
parents:
7864
diff
changeset
|
1588 |
|
5815
fe35a232c6dc
Make comment block raw to avoid travis ci warning on \d in comment block.
John Rouillard <rouilj@ieee.org>
parents:
5811
diff
changeset
|
1589 r''' |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1590 class HTMLPermissions: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1591 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1592 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1593 def is_only_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1594 def view_check(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1595 def edit_check(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1596 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1597 def input_html4(**attrs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1598 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1599 class HTMLInputMixin: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1600 def __init__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1601 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1602 class HTMLClass(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1603 def __init__(self, client, classname, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1604 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1605 def __getitem__(self, item): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1606 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1607 def designator(self): |
|
5811
7d276bb8b46d
More invalid escape sequence fixes.
John Rouillard <rouilj@ieee.org>
parents:
5795
diff
changeset
|
1608 def getItem(self, itemid, num_re=re.compile(r'-?\d+')): |
|
5226
578e86e015f9
Changed function signature for properties to correspond to checkin:
John Rouillard <rouilj@ieee.org>
parents:
5211
diff
changeset
|
1609 def properties(self, sort=1, cansearch=True): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1610 def list(self, sort_on=None): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1611 def csv(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1612 def propnames(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1613 def filter(self, request=None, filterspec={}, sort=(None,None), |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1614 def classhelp(self, properties=None, label='(list)', width='500', |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1615 def submit(self, label="Submit New Entry"): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1616 def history(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1617 def renderWith(self, name, **kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1618 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1619 class HTMLItem(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1620 def __init__(self, client, classname, nodeid, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1621 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1622 def __getitem__(self, item): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1623 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1624 def designator(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1625 def is_retired(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1626 def submit(self, label="Submit Changes"): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1627 def journal(self, direction='descending'): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1628 def history(self, direction='descending', dre=re.compile('\d+')): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1629 def renderQueryForm(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1630 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1631 class HTMLUserPermission: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1632 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1633 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1634 def _user_perm_check(self, type): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1635 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1636 class HTMLUserClass(HTMLUserPermission, HTMLClass): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1637 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1638 class HTMLUser(HTMLUserPermission, HTMLItem): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1639 def __init__(self, client, classname, nodeid, anonymous=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1640 def hasPermission(self, permission, classname=_marker): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1641 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1642 class HTMLProperty(HTMLInputMixin, HTMLPermissions): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1643 def __init__(self, client, classname, nodeid, prop, name, value, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1644 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1645 def __str__(self): |
|
5414
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1646 def __lt__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1647 def __le__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1648 def __eq__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1649 def __ne__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1650 def __gt__(self, other): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1651 def __ge__(self, other): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1652 def is_edit_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1653 def is_view_ok(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1654 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1655 class StringHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1656 def _hyper_repl(self, match): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1657 def hyperlinked(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1658 def plain(self, escape=0, hyperlink=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1659 def stext(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1660 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1661 def multiline(self, escape=0, rows=5, cols=40): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1662 def email(self, escape=1): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1663 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1664 class PasswordHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1665 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1666 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1667 def confirm(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1668 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1669 class NumberHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1670 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1671 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1672 def __int__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1673 def __float__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1674 |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1675 class IntegerHTMLProperty(HTMLProperty): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1676 def plain(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1677 def field(self, size = 30): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1678 def __int__(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5037
diff
changeset
|
1679 |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1680 class BooleanHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1681 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1682 def field(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1683 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1684 class DateHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1685 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1686 def now(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1687 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1688 def reldate(self, pretty=1): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1689 def pretty(self, format=_marker): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1690 def local(self, offset): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1691 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1692 class IntervalHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1693 def plain(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1694 def pretty(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1695 def field(self, size = 30): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1696 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1697 class LinkHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1698 def __init__(self, *args, **kw): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1699 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1700 def plain(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1701 def field(self, showid=0, size=None): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1702 def menu(self, size=None, height=None, showid=0, additional=[], |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1703 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1704 class MultilinkHTMLProperty(HTMLProperty): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1705 def __init__(self, *args, **kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1706 def __len__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1707 def __getattr__(self, attr): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1708 def __getitem__(self, num): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1709 def __contains__(self, value): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1710 def reverse(self): |
|
5903
c3728772c594
Add reverse option to hyperdb property wrapper by David Sowder
John Rouillard <rouilj@ieee.org>
parents:
5815
diff
changeset
|
1711 def sorted(self, property, reverse=False): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1712 def plain(self, escape=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1713 def field(self, size=30, showid=0): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1714 def menu(self, size=None, height=None, showid=0, additional=[], |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1715 |
|
5414
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1716 def make_key_function(db, classname, sort_on=None): |
|
3fa026621f69
Python 3 preparation: comparisons.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
1717 def keyfunc(a): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1718 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1719 def find_sort_key(linkcl): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1720 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1721 def handleListCGIValue(value): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1722 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1723 class ShowDict: |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1724 def __init__(self, columns): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1725 def __getitem__(self, name): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1726 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1727 class HTMLRequest(HTMLInputMixin): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1728 def __init__(self, client): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1729 def _post_init(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1730 def updateFromURL(self, url): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1731 def update(self, kwargs): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1732 def description(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1733 def __str__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1734 def indexargs_form(self, columns=1, sort=1, group=1, filter=1, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1735 def indexargs_url(self, url, args): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1736 def base_javascript(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1737 def batch(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1738 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1739 class Batch(ZTUtils.Batch): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1740 def __init__(self, client, sequence, size, start, end=0, orphan=0, |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1741 def __getitem__(self, index): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1742 def propchanged(self, property): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1743 def previous(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1744 def next(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1745 |
|
5201
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1746 #class TemplatingUtils: |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1747 # def __init__(self, client): |
|
a9ace22e0a2f
issue 2550690 - Adding anti-csrf measures to roundup following
John Rouillard <rouilj@ieee.org>
parents:
5190
diff
changeset
|
1748 # def Batch(self, sequence, size, start, end=0, orphan=0, overlap=0): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1749 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1750 class NoTemplate(Exception): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1751 class Unauthorised(Exception): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1752 def __init__(self, action, klass): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1753 def __str__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1754 |
|
4720
fd72576e07ed
API break: rename Templates to Loader for zopetal and chameleon
anatoly techtonik <techtonik@gmail.com>
parents:
4647
diff
changeset
|
1755 class Loader: |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1756 def __init__(self, dir): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1757 def precompileTemplates(self): |
|
4727
5033c2ad80a7
templating: Rename LoaderBase.get() to LoaderBase.load() for clarity
anatoly techtonik <techtonik@gmail.com>
parents:
4720
diff
changeset
|
1758 def load(self, name, extension=None): |
|
2158
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1759 def __getitem__(self, name): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1760 |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1761 class RoundupPageTemplate(PageTemplate.PageTemplate): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1762 def getContext(self, client, classname, request): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1763 def render(self, client, classname, request, **options): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1764 def __repr__(self): |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1765 ''' |
|
a0cfea4e5956
start at templating tests
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1766 |
|
2716
305d346f8f3b
disable invalid assertions
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2158
diff
changeset
|
1767 # vim: set et sts=4 sw=4 : |
