Mercurial > p > roundup > code
annotate test/db_test_base.py @ 7864:b080cdb8b199
fix: document/fix wrapped HtmlProperty method.
The wrapped method was not documented in reference.txt.
It is now documented in reference.txt. The docstring documented that
it would not break up long words. Fixed by adding
break_long_words=False to prevent breaking string longer than the wrap
length. Wrapping was breaking the hyperlinking of long urls.
Added columns argument to set the wrap length (default 80 columns).
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 07 Apr 2024 15:27:18 -0400 |
| parents | 25a03f1a8159 |
| children | 2184033114a0 |
| rev | line source |
|---|---|
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3 # This module is free software, and you may redistribute it and/or modify |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
4 # under the same terms as Python, so long as this copyright message and |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 # disclaimer are retained in their original form. |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 # POSSIBILITY OF SUCH DAMAGE. |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
18 from __future__ import print_function |
|
6300
778a9f455067
Remove old code import imp, old style trackers db/backend_name
John Rouillard <rouilj@ieee.org>
parents:
6297
diff
changeset
|
19 import unittest, os, shutil, errno, sys, time, pprint, os.path |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
20 |
|
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
21 try: |
|
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
22 from base64 import encodebytes as base64_encode # python3 only |
|
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
23 except ImportError: |
|
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
24 # python2 and deplricated in 3 |
|
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
25 from base64 import encodestring as base64_encode |
|
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
26 |
|
7582
978285986b2c
fix: issue2551193 - Fix roundup for removal of cgi and cgitb ...
John Rouillard <rouilj@ieee.org>
parents:
7206
diff
changeset
|
27 import logging |
|
978285986b2c
fix: issue2551193 - Fix roundup for removal of cgi and cgitb ...
John Rouillard <rouilj@ieee.org>
parents:
7206
diff
changeset
|
28 from roundup.anypy.cgi_ import cgi |
|
5388
d26921b851c3
Python 3 preparation: make relative imports explicit.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5381
diff
changeset
|
29 from . import gpgmelib |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
30 from email import message_from_string |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 |
|
5036
380d8d8b30a3
Replace existing run_tests.py script with a pytest script
John Kristensen <john@jerrykan.com>
parents:
5033
diff
changeset
|
32 import pytest |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
34 Interval, DatabaseError, Boolean, Number, Node, Integer |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
35 from roundup.mailer import Mailer |
|
4407
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
36 from roundup import date, password, init, instance, configuration, \ |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
37 roundupdb, i18n, hyperdb |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
38 from roundup.cgi.templating import HTMLItem |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
39 from roundup.cgi.templating import HTMLProperty, _HTMLItem, anti_csrf_nonce |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
40 from roundup.cgi import client, actions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
41 from roundup.cgi.engine_zopetal import RoundupPageTemplate |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
42 from roundup.cgi.templating import HTMLItem |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
43 from roundup.exceptions import UsageError, Reject |
|
2514
091711fb2f8c
Initial logging integration: replace all debug prints with logging calls...
Richard Jones <richard@users.sourceforge.net>
parents:
2508
diff
changeset
|
44 |
|
5476
b0048969990d
encoding fixes in test cases
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5469
diff
changeset
|
45 from roundup.anypy.strings import b2s, s2b, u2s |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5476
diff
changeset
|
46 from roundup.anypy.cmp_ import NoneAndDictComparable |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
47 from roundup.anypy.email_ import message_from_bytes |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
48 |
|
6366
f2c31f5ec50b
Move mocknull from test to roundup/test
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6365
diff
changeset
|
49 from roundup.test.mocknull import MockNull |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
51 config = configuration.CoreConfig() |
|
3546
a4edd24c32be
test fixes and checking of indexer overwrites (xapian currently fails)
Richard Jones <richard@users.sourceforge.net>
parents:
3525
diff
changeset
|
52 config.DATABASE = "db" |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
53 config.RDBMS_NAME = "rounduptest" |
|
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
54 config.RDBMS_HOST = "localhost" |
|
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
55 config.RDBMS_USER = "rounduptest" |
|
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
56 config.RDBMS_PASSWORD = "rounduptest" |
|
4480
1613754d2646
Fix first part of Password handling security issue2550688
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4472
diff
changeset
|
57 config.RDBMS_TEMPLATE = "template0" |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
58 # these TRACKER_WEB and MAIL_DOMAIN values are used in mailgw tests |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
59 config.MAIL_DOMAIN = "your.tracker.email.domain.example" |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
60 config.TRACKER_WEB = "http://tracker.example/cgi-bin/roundup.cgi/bugs/" |
|
7170
2acea75cd7e5
Setting PBKDF2 rounds to 1000 for testing
John Rouillard <rouilj@ieee.org>
parents:
6968
diff
changeset
|
61 # override number of rounds to reduce CI time |
|
2acea75cd7e5
Setting PBKDF2 rounds to 1000 for testing
John Rouillard <rouilj@ieee.org>
parents:
6968
diff
changeset
|
62 #config.PASSWORD_PBKDF2_DEFAULT_ROUNDS = 1000 |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
63 # uncomment the following to have excessive debug output from test cases |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
64 # FIXME: tracker logging level should be increased by -v arguments |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
65 # to 'run_tests.py' script |
|
3247
e629e0057136
disable file logging [SF#1155649]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3155
diff
changeset
|
66 #config.LOGGING_FILENAME = "/tmp/logfile" |
|
e629e0057136
disable file logging [SF#1155649]
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
3155
diff
changeset
|
67 #config.LOGGING_LEVEL = "DEBUG" |
|
3155
57b60bda9473
Python 2.3 minimum version - bye bye roundup.rlog, you had a short life.
Richard Jones <richard@users.sourceforge.net>
parents:
3147
diff
changeset
|
68 config.init_logging() |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
69 |
|
5878
1b57d8f3eb97
Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents:
5869
diff
changeset
|
70 def setupTracker(dirname, backend="anydbm", optimize=False): |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
71 """Install and initialize new tracker in dirname; return tracker instance. |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
72 |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
73 If the directory exists, it is wiped out before the operation. |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
74 |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
75 """ |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
76 global config |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
77 try: |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
78 shutil.rmtree(dirname) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5235
diff
changeset
|
79 except OSError as error: |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
80 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
81 # create the instance |
|
4082
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
82 init.install(dirname, os.path.join(os.path.dirname(__file__), |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
83 '..', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
84 'share', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
85 'roundup', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
86 'templates', |
|
5eb5f7e66c37
Adjust to new location for templates in source tree.
Stefan Seefeld <stefan@seefeld.name>
parents:
4005
diff
changeset
|
87 'classic')) |
|
5041
5251e97b1de0
Configure the database backend in the config.ini
John Kristensen <john@jerrykan.com>
parents:
5036
diff
changeset
|
88 config.RDBMS_BACKEND = backend |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
89 config.save(os.path.join(dirname, 'config.ini')) |
|
5878
1b57d8f3eb97
Add rudimentery experiment JSON Web Token (jwt) support
John Rouillard <rouilj@ieee.org>
parents:
5869
diff
changeset
|
90 tracker = instance.open(dirname, optimize=optimize) |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
91 if tracker.exists(): |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
92 tracker.nuke() |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
93 tracker.init(password.Password('sekrit')) |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
94 return tracker |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
95 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
96 def setupSchema(db, create, module): |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
97 mls = module.Class(db, "mls", name=String()) |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
98 mls.setkey("name") |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
99 keyword = module.Class(db, "keyword", name=String(), order=Number()) |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
100 keyword.setkey("name") |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
101 status = module.Class(db, "status", name=String(), mls=Multilink("mls")) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 status.setkey("name") |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
103 priority = module.Class(db, "priority", name=String(), order=String()) |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
104 priority.setkey("name") |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
105 user = module.Class(db, "user", username=String(), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
106 password=Password(quiet=True), assignable=Boolean(quiet=True), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
107 age=Number(quiet=True), roles=String(), address=String(), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
108 rating=Integer(quiet=True), supervisor=Link('user'), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
109 realname=String(quiet=True), longnumber=Number(use_double=True)) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
110 user.setkey("username") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
111 file = module.FileClass(db, "file", name=String(), type=String(), |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 comment=String(indexme="yes"), fooz=Password()) |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
113 file_nidx = module.FileClass(db, "file_nidx", content=String(indexme='no')) |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
114 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
115 # initialize quiet mode a second way without using Multilink("user", quiet=True) |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
116 mynosy = Multilink("user", rev_multilink='nosy_issues') |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
117 mynosy.quiet = True |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
118 issue = module.IssueClass(db, "issue", title=String(indexme="yes"), |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
119 status=Link("status"), nosy=mynosy, deadline=Date(quiet=True), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
120 foo=Interval(quiet=True, default_value=date.Interval('-1w')), |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
121 files=Multilink("file"), assignedto=Link('user', quiet=True, |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
122 rev_multilink='issues'), priority=Link('priority'), |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
123 spam=Multilink('msg'), feedback=Link('msg'), |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
124 keywords=Multilink('keyword'), keywords2=Multilink('keyword')) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
125 stuff = module.Class(db, "stuff", stuff=String()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
126 session = module.Class(db, 'session', title=String()) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
127 msg = module.FileClass(db, "msg", date=Date(), |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
128 author=Link("user", do_journal='no'), files=Multilink('file'), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
129 inreplyto=String(), messageid=String(), |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
130 recipients=Multilink("user", do_journal='no')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
131 session.disableJournalling() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
132 db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
133 if create: |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
134 user.create(username="admin", roles='Admin', |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
135 password=password.Password('sekrit')) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
136 user.create(username="fred", roles='User', |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
137 password=password.Password('sekrit'), address='fred@example.com') |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
138 u1 = mls.create(name="unread_1") |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
139 u2 = mls.create(name="unread_2") |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
140 status.create(name="unread",mls=[u1, u2]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
141 status.create(name="in-progress") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
142 status.create(name="testing") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
143 status.create(name="resolved") |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
144 priority.create(name="feature", order="2") |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
145 priority.create(name="wish", order="3") |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
146 priority.create(name="bug", order="1") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
147 db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
148 |
|
4301
d47245c2530a
Fix some security assertions and tests.
Richard Jones <richard@users.sourceforge.net>
parents:
4255
diff
changeset
|
149 # nosy tests require this |
|
d47245c2530a
Fix some security assertions and tests.
Richard Jones <richard@users.sourceforge.net>
parents:
4255
diff
changeset
|
150 db.security.addPermissionToRole('User', 'View', 'msg') |
|
d47245c2530a
Fix some security assertions and tests.
Richard Jones <richard@users.sourceforge.net>
parents:
4255
diff
changeset
|
151 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
152 # quiet journal tests require this |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
153 # QuietJournal - reference used later in tests |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
154 v1 = db.security.addPermission(name='View', klass='user', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
155 properties=['username', 'supervisor', 'assignable'], |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
156 description="Prevent users from seeing roles") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
157 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
158 db.security.addPermissionToRole("User", v1) |
|
5033
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4886
diff
changeset
|
159 |
|
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4886
diff
changeset
|
160 class MyTestCase(object): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
161 def tearDown(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
162 if hasattr(self, 'db'): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
163 self.db.close() |
|
2082
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
2077
diff
changeset
|
164 if os.path.exists(config.DATABASE): |
|
c091cacdc505
Finished implementation of session and one-time-key stores for RDBMS backends.
Richard Jones <richard@users.sourceforge.net>
parents:
2077
diff
changeset
|
165 shutil.rmtree(config.DATABASE) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
167 def open_database(self, user='admin'): |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
168 self.db = self.module.Database(config, user) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
169 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
170 |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
171 if 'LOGGING_LEVEL' in os.environ: |
|
4786
6018617c55ab
Removing remains of "rlog" module, fixes db unit test debug logging via environment variable.
Bernhard Reiter <bernhard@intevation.de>
parents:
4687
diff
changeset
|
172 logger = logging.getLogger('roundup.hyperdb') |
|
6018617c55ab
Removing remains of "rlog" module, fixes db unit test debug logging via environment variable.
Bernhard Reiter <bernhard@intevation.de>
parents:
4687
diff
changeset
|
173 logger.setLevel(os.environ['LOGGING_LEVEL']) |
|
2605
6e9bd67fefa9
complete transition from HYPERDBDEBUG to new logging
Richard Jones <richard@users.sourceforge.net>
parents:
2603
diff
changeset
|
174 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
175 class commonDBTest(MyTestCase): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
176 def setUp(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
177 # remove previous test, ignore errors |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
178 if os.path.exists(config.DATABASE): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
179 shutil.rmtree(config.DATABASE) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
180 os.makedirs(config.DATABASE + '/files') |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
181 self.open_database() |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
182 setupSchema(self.db, 1, self.module) |
|
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
183 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
184 def iterSetup(self, classname='issue'): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
185 cls = getattr(self.db, classname) |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
186 def filt_iter_list(*args, **kw): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
187 """ for checking equivalence of filter and filter_iter """ |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
188 return list(cls.filter_iter(*args, **kw)) |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
189 def filter_test_iterator(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
190 """ yield all filter variants with config settings changed |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
191 appropriately |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
192 """ |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
193 self.db.config.RDBMS_SERVERSIDE_CURSOR = False |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
194 yield (cls.filter) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
195 yield (filt_iter_list) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
196 self.db.config.RDBMS_SERVERSIDE_CURSOR = True |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
197 yield (cls.filter) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
198 yield (filt_iter_list) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
199 return self.assertEqual, filter_test_iterator |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
200 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
201 def filteringSetupTransitiveSearch(self, classname='issue'): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
202 u_m = {} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
203 k = 30 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
204 for user in ( |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
205 {'username': 'ceo', 'age': 129}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
206 {'username': 'grouplead1', 'age': 29, 'supervisor': '3'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
207 {'username': 'grouplead2', 'age': 29, 'supervisor': '3'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
208 {'username': 'worker1', 'age': 25, 'supervisor' : '4'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
209 {'username': 'worker2', 'age': 24, 'supervisor' : '4'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
210 {'username': 'worker3', 'age': 23, 'supervisor' : '5'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
211 {'username': 'worker4', 'age': 22, 'supervisor' : '5'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
212 {'username': 'worker5', 'age': 21, 'supervisor' : '5'}): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
213 u = self.db.user.create(**user) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
214 u_m [u] = self.db.msg.create(author = u, content = ' ' |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
215 , date = date.Date ('2006-01-%s' % k)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
216 k -= 1 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
217 i = date.Interval('-1d') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
218 for issue in ( |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
219 {'title': 'ts1', 'status': '2', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
220 'priority': '3', 'messages' : [u_m ['6']], 'nosy' : ['4']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
221 {'title': 'ts2', 'status': '1', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
222 'priority': '3', 'messages' : [u_m ['6']], 'nosy' : ['5']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
223 {'title': 'ts4', 'status': '2', 'assignedto': '7', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
224 'priority': '3', 'messages' : [u_m ['7']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
225 {'title': 'ts5', 'status': '1', 'assignedto': '8', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
226 'priority': '3', 'messages' : [u_m ['8']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
227 {'title': 'ts6', 'status': '2', 'assignedto': '9', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
228 'priority': '3', 'messages' : [u_m ['9']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
229 {'title': 'ts7', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
230 'priority': '3', 'messages' : [u_m ['10']]}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
231 {'title': 'ts8', 'status': '2', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
232 'priority': '3', 'messages' : [u_m ['10']], 'foo' : i}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
233 {'title': 'ts9', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
234 'priority': '3', 'messages' : [u_m ['10'], u_m ['9']]}): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
235 self.db.issue.create(**issue) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
236 return self.iterSetup(classname) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
237 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
238 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
239 class DBTest(commonDBTest): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
240 |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
241 @pytest.fixture(autouse=True) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
242 def inject_fixtures(self, caplog): |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
243 self._caplog = caplog |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
244 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
245 def testRefresh(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
246 self.db.refresh_database() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
247 |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
248 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
249 def testUpgrade_5_to_6(self): |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
250 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
251 if(self.db.dbtype in ['anydbm', 'memorydb']): |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
252 self.skipTest('No schema upgrade needed on non rdbms backends') |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
253 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
254 # load the database |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
255 self.db.issue.create(title="flebble frooz") |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
256 self.db.commit() |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
257 |
|
6604
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
258 if self.db.database_schema['version'] > 6: |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
259 # make testUpgrades run the downgrade code only. |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
260 if hasattr(self, "downgrade_only"): |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
261 # we are being called by an earlier test |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
262 self.testUpgrade_6_to_7() |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
263 self.assertEqual(self.db.database_schema['version'], 6) |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
264 else: |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
265 # we are being called directly |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
266 self.downgrade_only = True |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
267 self.testUpgrade_6_to_7() |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
268 self.assertEqual(self.db.database_schema['version'], 6) |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
269 del(self.downgrade_only) |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
270 elif self.db.database_schema['version'] != 6: |
|
6588
91ab3e0ffcd0
Summary: Add test cases for sqlite fts
John Rouillard <rouilj@ieee.org>
parents:
6434
diff
changeset
|
271 self.skipTest("This test only runs for database version 6") |
|
91ab3e0ffcd0
Summary: Add test cases for sqlite fts
John Rouillard <rouilj@ieee.org>
parents:
6434
diff
changeset
|
272 |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
273 if self.db.dbtype == 'mysql': |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
274 # version 6 has 5 indexes |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
275 self.db.sql('show indexes from _user;') |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
276 self.assertEqual(5,len(self.db.cursor.fetchall()), |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
277 "Database created with wrong number of indexes") |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
278 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
279 self.drop_key_retired_idx() |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
280 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
281 # after dropping (key.__retired__) composite index we have |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
282 # 3 index entries |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
283 self.db.sql('show indexes from _user;') |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
284 self.assertEqual(3,len(self.db.cursor.fetchall())) |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
285 |
|
6604
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
286 self.db.database_schema['version'] = 5 |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
287 |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
288 if hasattr(self, "downgrade_only"): |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
289 return |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
290 |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
291 # test upgrade adding index |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
292 self.db.post_init() |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
293 |
|
7206
521d98231e5c
Test self.db.db_version_updated in schema upgrade paths
John Rouillard <rouilj@ieee.org>
parents:
7170
diff
changeset
|
294 self.assertEqual(self.db.db_version_updated, True) |
|
521d98231e5c
Test self.db.db_version_updated in schema upgrade paths
John Rouillard <rouilj@ieee.org>
parents:
7170
diff
changeset
|
295 |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
296 # they're back |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
297 self.db.sql('show indexes from _user;') |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
298 self.assertEqual(5,len(self.db.cursor.fetchall())) |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
299 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
300 # test a database already upgraded from 4 to 5 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
301 # so it has the index to enforce key uniqueness |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
302 self.db.database_schema['version'] = 5 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
303 self.db.post_init() |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
304 |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
305 # they're still here. |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
306 self.db.sql('show indexes from _user;') |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
307 self.assertEqual(5,len(self.db.cursor.fetchall())) |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
308 else: |
|
6604
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
309 if hasattr(self, "downgrade_only"): |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
310 return |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
311 # this should be a no-op |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
312 # test upgrade |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
313 self.db.post_init() |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
314 |
|
6604
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
315 # we should be at the current db version |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
316 self.assertEqual(self.db.database_schema['version'], |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
317 self.db.current_db_version) |
|
0d99ae7c8de6
Allow Roundup to use PostgreSQL database native full text search
John Rouillard <rouilj@ieee.org>
parents:
6588
diff
changeset
|
318 |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
319 def drop_key_retired_idx(self): |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
320 c = self.db.cursor |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
321 for cn, klass in self.db.classes.items(): |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
322 if klass.key: |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
323 sql = '''drop index _%s_key_retired_idx on _%s''' % (cn, cn) |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
324 self.db.sql(sql) |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
325 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
326 # |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
327 # automatic properties (well, the two easy ones anyway) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
328 # |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
329 def testCreatorProperty(self): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
330 i = self.db.issue |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
331 id1 = i.create(title='spam') |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
332 self.db.journaltag = 'fred' |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
333 id2 = i.create(title='spam') |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
334 self.assertNotEqual(id1, id2) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
335 self.assertNotEqual(i.get(id1, 'creator'), i.get(id2, 'creator')) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
336 |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
337 def testActorProperty(self): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
338 i = self.db.issue |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
339 id1 = i.create(title='spam') |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
340 self.db.journaltag = 'fred' |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
341 i.set(id1, title='asfasd') |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
342 self.assertNotEqual(i.get(id1, 'creator'), i.get(id1, 'actor')) |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
343 |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
344 # ID number controls |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
345 def testIDGeneration(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
346 id1 = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
347 id2 = self.db.issue.create(title="eggs", status='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
348 self.assertNotEqual(id1, id2) |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
349 def testIDSetting(self): |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
350 # XXX numeric ids |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
351 self.db.setid('issue', 10) |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
352 id2 = self.db.issue.create(title="eggs", status='2') |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
353 self.assertEqual('11', id2) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
354 |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
355 # |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
356 # basic operations |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
357 # |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
358 def testEmptySet(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
359 id1 = self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
360 self.db.issue.set(id1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
361 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
362 # String |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
363 def testStringChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
364 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
365 # test set & retrieve |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
366 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
367 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
368 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
369 # change and make sure we retrieve the correct value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
370 self.db.issue.set(nid, title='eggs') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
371 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
372 self.assertEqual(self.db.issue.get(nid, 'title'), 'eggs') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
373 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
374 def testStringUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
375 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
376 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
377 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
378 self.assertEqual(self.db.issue.get(nid, 'title'), 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
379 # make sure we can unset |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
380 self.db.issue.set(nid, title=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
381 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
382 self.assertEqual(self.db.issue.get(nid, "title"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
383 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
384 # FileClass "content" property (no unset test) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
385 def testFileClassContentChange(self): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
386 for commit in (0,1): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
387 # test set & retrieve |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
388 nid = self.db.file.create(content="spam") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
389 self.assertEqual(self.db.file.get(nid, 'content'), 'spam') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
390 |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
391 # change and make sure we retrieve the correct value |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
392 self.db.file.set(nid, content='eggs') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
393 if commit: self.db.commit() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
394 self.assertEqual(self.db.file.get(nid, 'content'), 'eggs') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
395 |
|
3752
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
396 def testStringUnicode(self): |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
397 # test set & retrieve |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
398 ustr = u2s(u'\xe4\xf6\xfc\u20ac') |
|
3752
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
399 nid = self.db.issue.create(title=ustr, status='1') |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
400 self.assertEqual(self.db.issue.get(nid, 'title'), ustr) |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
401 |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
402 # change and make sure we retrieve the correct value |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
403 ustr2 = u2s(u'change \u20ac change') |
|
3752
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
404 self.db.issue.set(nid, title=ustr2) |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
405 self.db.commit() |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
406 self.assertEqual(self.db.issue.get(nid, 'title'), ustr2) |
|
c92687dce135
unicode / sqlite 3 problem [SF#1589292]
Richard Jones <richard@users.sourceforge.net>
parents:
3751
diff
changeset
|
407 |
|
5492
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
408 # test set & retrieve (this time for file contents) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
409 nid = self.db.file.create(content=ustr) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
410 self.assertEqual(self.db.file.get(nid, 'content'), ustr) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
411 self.assertEqual(self.db.file.get(nid, 'binary_content'), s2b(ustr)) |
|
6b0c542642be
blobfiles now always stores/returns bytes
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5488
diff
changeset
|
412 |
|
5725
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
413 def testStringBinary(self): |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
414 ''' Create file with binary content that is not able |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
415 to be interpreted as unicode. Try to cause file module |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
416 trigger and handle UnicodeDecodeError |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
417 and get valid output |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
418 ''' |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
419 # test set & retrieve |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
420 bstr = b'\x00\xF0\x34\x33' # random binary data |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
421 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
422 # test set & retrieve (this time for file contents) |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
423 # Since it has null in it, set it to a binary mime type |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
424 # so indexer's don't try to index it. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
425 nid = self.db.file.create(content=bstr, |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
426 type="application/octet-stream") |
|
5725
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
427 print(nid) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
428 print(repr(self.db.file.get(nid, 'content'))) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
429 print(repr(self.db.file.get(nid, 'binary_content'))) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
430 p3val='file1 is not text, retrieve using binary_content property. mdsum: 0e1d1b47e4bd1beab3afc9b79f596c1d' |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
431 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
432 if sys.version_info[0] > 2: |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
433 # python 3 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
434 self.assertEqual(self.db.file.get(nid, 'content'), p3val) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
435 self.assertEqual(self.db.file.get(nid, 'binary_content'), |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
436 bstr) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
437 else: |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
438 # python 2 |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
439 self.assertEqual(self.db.file.get(nid, 'content'), bstr) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
440 self.assertEqual(self.db.file.get(nid, 'binary_content'), bstr) |
|
6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
John Rouillard <rouilj@ieee.org>
parents:
5719
diff
changeset
|
441 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
442 # Link |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
443 def testLinkChange(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
444 self.assertRaises(IndexError, self.db.issue.create, title="spam", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
445 status='100') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
446 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
447 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
448 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
449 self.assertEqual(self.db.issue.get(nid, "status"), '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
450 self.db.issue.set(nid, status='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
451 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
452 self.assertEqual(self.db.issue.get(nid, "status"), '2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
453 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
454 def testLinkUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
455 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
456 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
457 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
458 self.db.issue.set(nid, status=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
459 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
460 self.assertEqual(self.db.issue.get(nid, "status"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
461 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
462 # Multilink |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
463 def testMultilinkChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
464 for commit in (0,1): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
465 self.assertRaises(IndexError, self.db.issue.create, title="spam", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
466 nosy=['foo%s'%commit]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
467 u1 = self.db.user.create(username='foo%s'%commit) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
468 u2 = self.db.user.create(username='bar%s'%commit) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
469 nid = self.db.issue.create(title="spam", nosy=[u1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
470 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
471 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
472 self.db.issue.set(nid, nosy=[]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
473 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
474 self.assertEqual(self.db.issue.get(nid, "nosy"), []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
475 self.db.issue.set(nid, nosy=[u1,u2]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
476 if commit: self.db.commit() |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
477 l = [u1,u2]; l.sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
478 m = self.db.issue.get(nid, "nosy"); m.sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
479 self.assertEqual(l, m) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
480 |
|
3872
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
481 # verify that when we pass None to an Multilink it sets |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
482 # it to an empty list |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
483 self.db.issue.set(nid, nosy=None) |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
484 if commit: self.db.commit() |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
485 self.assertEqual(self.db.issue.get(nid, "nosy"), []) |
|
34128a809e22
Allow multilinks to take None (treated as an empty list).
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3870
diff
changeset
|
486 |
|
4490
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
487 def testMakeSeveralMultilinkedNodes(self): |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
488 for commit in (0,1): |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
489 u1 = self.db.user.create(username='foo%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
490 u2 = self.db.user.create(username='bar%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
491 u3 = self.db.user.create(username='baz%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
492 nid = self.db.issue.create(title="spam", nosy=[u1]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
493 if commit: self.db.commit() |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
494 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
495 self.db.issue.set(nid, deadline=date.Date('.')) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
496 self.db.issue.set(nid, nosy=[u1,u2], title='ta%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
497 if commit: self.db.commit() |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
498 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1,u2]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
499 self.db.issue.set(nid, deadline=date.Date('.')) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
500 self.db.issue.set(nid, nosy=[u1,u2,u3], title='tb%s'%commit) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
501 if commit: self.db.commit() |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
502 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1,u2,u3]) |
|
559d9a2a0191
Fixed bug in filter_iter refactoring (lazy multilinks)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4480
diff
changeset
|
503 |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
504 def testMultilinkChangeIterable(self): |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
505 for commit in (0,1): |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
506 # invalid nosy value assertion |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
507 self.assertRaises(IndexError, self.db.issue.create, title='spam', |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
508 nosy=['foo%s'%commit]) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
509 # invalid type for nosy create |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
510 self.assertRaises(TypeError, self.db.issue.create, title='spam', |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
511 nosy=1) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
512 u1 = self.db.user.create(username='foo%s'%commit) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
513 u2 = self.db.user.create(username='bar%s'%commit) |
|
3870
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
514 # try a couple of the built-in iterable types to make |
|
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
515 # sure that we accept them and handle them properly |
|
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
516 # try a set as input for the multilink |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
517 nid = self.db.issue.create(title="spam", nosy=set(u1)) |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
518 if commit: self.db.commit() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
519 self.assertEqual(self.db.issue.get(nid, "nosy"), [u1]) |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
520 self.assertRaises(TypeError, self.db.issue.set, nid, |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
521 nosy='invalid type') |
|
3870
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
522 # test with a tuple |
|
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
523 self.db.issue.set(nid, nosy=tuple()) |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
524 if commit: self.db.commit() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
525 self.assertEqual(self.db.issue.get(nid, "nosy"), []) |
|
3870
f0eb93f25d1c
make comments more readable per alexander's suggestion
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3869
diff
changeset
|
526 # make sure we accept a frozen set |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
527 self.db.issue.set(nid, nosy=set([u1,u2])) |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
528 if commit: self.db.commit() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
529 l = [u1,u2]; l.sort() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
530 m = self.db.issue.get(nid, "nosy"); m.sort() |
|
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
531 self.assertEqual(l, m) |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
532 |
|
3869
16faac822fe5
Allow Multilinks to take any iterable
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3844
diff
changeset
|
533 |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
534 # XXX one day, maybe... |
|
6351
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
535 def testMultilinkOrdering(self): |
|
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
536 for i in range(10): |
|
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
537 self.db.user.create(username='foo%s'%i) |
|
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
538 i = self.db.issue.create(title="spam", nosy=['5','3','12','4']) |
|
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
539 self.db.commit() |
|
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
540 l = self.db.issue.get(i, "nosy") |
|
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
541 # all backends should return the Multilink numeric-id-sorted |
|
0db59cc2cd37
Enable testMultilinkOrdering check. Fix back_anydbm to pass.
John Rouillard <rouilj@ieee.org>
parents:
6332
diff
changeset
|
542 self.assertEqual(l, ['3', '4', '5', '12']) |
|
2899
09a4d6dd6dcb
Handle older (really older) anydbm databases in export code.
Richard Jones <richard@users.sourceforge.net>
parents:
2872
diff
changeset
|
543 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
544 # Date |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
545 def testDateChange(self): |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
546 self.assertRaises(TypeError, self.db.issue.create, |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
547 title='spam', deadline=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
548 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
549 nid = self.db.issue.create(title="spam", status='1') |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
550 self.assertRaises(TypeError, self.db.issue.set, nid, deadline=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
551 a = self.db.issue.get(nid, "deadline") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
552 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
553 self.db.issue.set(nid, deadline=date.Date()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
554 b = self.db.issue.get(nid, "deadline") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
555 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
556 self.assertNotEqual(a, b) |
|
3457
88f0a5030404
Fix invalid date spec in db tests
Richard Jones <richard@users.sourceforge.net>
parents:
3247
diff
changeset
|
557 self.assertNotEqual(b, date.Date('1970-1-1.00:00:00')) |
|
3822
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
558 # The 1970 date will fail for metakit -- it is used |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
559 # internally for storing NULL. The others would, too |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
560 # because metakit tries to convert date.timestamp to an int |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
561 # for storing and fails with an overflow. |
|
5390
0fd27da353eb
Python 3 preparation: use parentheses in list comprehension.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5388
diff
changeset
|
562 for d in [date.Date (x) for x in ('2038', '1970', '0033', '9999')]: |
|
3822
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
563 self.db.issue.set(nid, deadline=d) |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
564 if commit: self.db.commit() |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
565 c = self.db.issue.get(nid, "deadline") |
|
2a60b68985db
Fix arbitrary limit on dates.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3752
diff
changeset
|
566 self.assertEqual(c, d) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
567 |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
568 def testDateLeapYear(self): |
|
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
569 nid = self.db.issue.create(title='spam', status='1', |
|
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
570 deadline=date.Date('2008-02-29')) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
571 self.assertEqual(str(self.db.issue.get(nid, 'deadline')), |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
572 '2008-02-29.00:00:00') |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
573 self.assertEqual(self.db.issue.filter(None, |
|
3995
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
574 {'deadline': '2008-02-29'}), [nid]) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
575 self.assertEqual(list(self.db.issue.filter_iter(None, |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
576 {'deadline': '2008-02-29'})), [nid]) |
|
3995
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
577 self.db.issue.set(nid, deadline=date.Date('2008-03-01')) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
578 self.assertEqual(str(self.db.issue.get(nid, 'deadline')), |
|
3995
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
579 '2008-03-01.00:00:00') |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
580 self.assertEqual(self.db.issue.filter(None, |
|
3995
6bd3df4356b1
improved test case
Richard Jones <richard@users.sourceforge.net>
parents:
3973
diff
changeset
|
581 {'deadline': '2008-02-29'}), []) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
582 self.assertEqual(list(self.db.issue.filter_iter(None, |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
583 {'deadline': '2008-02-29'})), []) |
|
3973
85cbaa50eba1
xml-rpc security checks and tests across all backends [SF#1907211]
Richard Jones <richard@users.sourceforge.net>
parents:
3963
diff
changeset
|
584 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
585 def testDateUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
586 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
587 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
588 self.db.issue.set(nid, deadline=date.Date()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
589 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
590 self.assertNotEqual(self.db.issue.get(nid, "deadline"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
591 self.db.issue.set(nid, deadline=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
592 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
593 self.assertEqual(self.db.issue.get(nid, "deadline"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
594 |
| 4885 | 595 def testDateSort(self): |
| 596 d1 = date.Date('.') | |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
597 ae, iiter = self.filteringSetup() |
| 4885 | 598 nid = self.db.issue.create(title="nodeadline", status='1') |
| 599 self.db.commit() | |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
600 for filt in iiter(): |
| 4885 | 601 ae(filt(None, {}, ('+','deadline')), ['5', '2', '1', '3', '4']) |
| 602 ae(filt(None, {}, ('+','id'), ('+', 'deadline')), | |
| 603 ['5', '2', '1', '3', '4']) | |
| 604 ae(filt(None, {}, ('-','id'), ('-', 'deadline')), | |
| 605 ['4', '3', '1', '2', '5']) | |
| 606 | |
|
4886
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
607 def testDateSortMultilink(self): |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
608 d1 = date.Date('.') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
609 ae, iiter = self.filteringSetup() |
|
4886
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
610 nid = self.db.issue.create(title="nodeadline", status='1') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
611 self.db.commit() |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
612 ae(sorted(self.db.issue.get('1','nosy')), []) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
613 ae(sorted(self.db.issue.get('2','nosy')), []) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
614 ae(sorted(self.db.issue.get('3','nosy')), ['1','2']) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
615 ae(sorted(self.db.issue.get('4','nosy')), ['1','2','3']) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
616 ae(sorted(self.db.issue.get('5','nosy')), []) |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
617 ae(self.db.user.get('1','username'), 'admin') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
618 ae(self.db.user.get('2','username'), 'fred') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
619 ae(self.db.user.get('3','username'), 'bleep') |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
620 # filter_iter currently doesn't work for Multilink sort |
|
a116de39e38c
Fix sort-representation for RDBMS backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4885
diff
changeset
|
621 # so testing only filter |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
622 for f in iiter(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
623 if f.__name__ != 'filter': |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
624 continue |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
625 ae(f(None, {}, ('+', 'id'), ('+','nosy')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
626 ['1', '2', '5', '4', '3']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
627 ae(f(None, {}, ('+','deadline'), ('+', 'nosy')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
628 ['5', '2', '1', '4', '3']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
629 ae(f(None, {}, ('+','nosy'), ('+', 'deadline')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
630 ['5', '2', '1', '3', '4']) |
| 4885 | 631 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
632 # Interval |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
633 def testIntervalChange(self): |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
634 self.assertRaises(TypeError, self.db.issue.create, |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
635 title='spam', foo=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
636 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
637 nid = self.db.issue.create(title="spam", status='1') |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
638 self.assertRaises(TypeError, self.db.issue.set, nid, foo=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
639 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
640 a = self.db.issue.get(nid, "foo") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
641 i = date.Interval('-1d') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
642 self.db.issue.set(nid, foo=i) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
643 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
644 self.assertNotEqual(self.db.issue.get(nid, "foo"), a) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
645 self.assertEqual(i, self.db.issue.get(nid, "foo")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
646 j = date.Interval('1y') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
647 self.db.issue.set(nid, foo=j) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
648 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
649 self.assertNotEqual(self.db.issue.get(nid, "foo"), i) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
650 self.assertEqual(j, self.db.issue.get(nid, "foo")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
651 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
652 def testIntervalUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
653 for commit in (0,1): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
654 nid = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
655 self.db.issue.set(nid, foo=date.Interval('-1d')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
656 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
657 self.assertNotEqual(self.db.issue.get(nid, "foo"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
658 self.db.issue.set(nid, foo=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
659 if commit: self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
660 self.assertEqual(self.db.issue.get(nid, "foo"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
661 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
662 # Boolean |
|
2472
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
663 def testBooleanSet(self): |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
664 nid = self.db.user.create(username='one', assignable=1) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
665 self.assertEqual(self.db.user.get(nid, "assignable"), 1) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
666 nid = self.db.user.create(username='two', assignable=0) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
667 self.assertEqual(self.db.user.get(nid, "assignable"), 0) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
668 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
669 def testBooleanChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
670 userid = self.db.user.create(username='foo', assignable=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
671 self.assertEqual(1, self.db.user.get(userid, 'assignable')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
672 self.db.user.set(userid, assignable=0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
673 self.assertEqual(self.db.user.get(userid, 'assignable'), 0) |
|
2472
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
674 self.db.user.set(userid, assignable=1) |
|
f41539b3c486
fixed Boolean values in postgresql (bugs [SF#972546] and [SF#972600])
Richard Jones <richard@users.sourceforge.net>
parents:
2453
diff
changeset
|
675 self.assertEqual(self.db.user.get(userid, 'assignable'), 1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
676 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
677 def testBooleanUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
678 nid = self.db.user.create(username='foo', assignable=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
679 self.db.user.set(nid, assignable=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
680 self.assertEqual(self.db.user.get(nid, "assignable"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
681 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
682 # Number |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
683 def testNumberChange(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
684 nid = self.db.user.create(username='foo', age=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
685 self.assertEqual(1, self.db.user.get(nid, 'age')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
686 self.db.user.set(nid, age=3) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
687 self.assertNotEqual(self.db.user.get(nid, 'age'), 1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
688 self.db.user.set(nid, age=1.0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
689 self.assertEqual(self.db.user.get(nid, 'age'), 1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
690 self.db.user.set(nid, age=0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
691 self.assertEqual(self.db.user.get(nid, 'age'), 0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
692 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
693 nid = self.db.user.create(username='bar', age=0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
694 self.assertEqual(self.db.user.get(nid, 'age'), 0) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
695 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
696 def testNumberUnset(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
697 nid = self.db.user.create(username='foo', age=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
698 self.db.user.set(nid, age=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
699 self.assertEqual(self.db.user.get(nid, "age"), None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
700 |
|
5175
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
701 # Long number |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
702 def testDoubleChange(self): |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
703 lnl = 100.12345678 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
704 ln = 100.123456789 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
705 lng = 100.12345679 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
706 nid = self.db.user.create(username='foo', longnumber=ln) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
707 self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
708 self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
709 lnl = 1.0012345678e55 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
710 ln = 1.00123456789e55 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
711 lng = 1.0012345679e55 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
712 self.db.user.set(nid, longnumber=ln) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
713 self.assertEqual(self.db.user.get(nid, 'longnumber') < lng, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
714 self.assertEqual(self.db.user.get(nid, 'longnumber') > lnl, True) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
715 self.db.user.set(nid, longnumber=-1) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
716 self.assertEqual(self.db.user.get(nid, 'longnumber'), -1) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
717 self.db.user.set(nid, longnumber=0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
718 self.assertEqual(self.db.user.get(nid, 'longnumber'), 0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
719 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
720 nid = self.db.user.create(username='bar', longnumber=0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
721 self.assertEqual(self.db.user.get(nid, 'longnumber'), 0) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
722 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
723 def testDoubleUnset(self): |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
724 nid = self.db.user.create(username='foo', longnumber=1.2345) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
725 self.db.user.set(nid, longnumber=None) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
726 self.assertEqual(self.db.user.get(nid, "longnumber"), None) |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
727 |
|
e1e40674a0bc
Implement double-precision Number
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5163
diff
changeset
|
728 |
|
5067
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
729 # Integer |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
730 def testIntegerChange(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
731 nid = self.db.user.create(username='foo', rating=100) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
732 self.assertEqual(100, self.db.user.get(nid, 'rating')) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
733 self.db.user.set(nid, rating=300) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
734 self.assertNotEqual(self.db.user.get(nid, 'rating'), 100) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
735 self.db.user.set(nid, rating=-1) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
736 self.assertEqual(self.db.user.get(nid, 'rating'), -1) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
737 self.db.user.set(nid, rating=0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
738 self.assertEqual(self.db.user.get(nid, 'rating'), 0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
739 |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
740 nid = self.db.user.create(username='bar', rating=0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
741 self.assertEqual(self.db.user.get(nid, 'rating'), 0) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
742 |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
743 def testIntegerUnset(self): |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
744 nid = self.db.user.create(username='foo', rating=1) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
745 self.db.user.set(nid, rating=None) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
746 self.assertEqual(self.db.user.get(nid, "rating"), None) |
|
e424987d294a
Add support for an integer type to join the existing number type.
John Rouillard <rouilj@ieee.org>
parents:
5041
diff
changeset
|
747 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
748 # Password |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
749 def testPasswordChange(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
750 x = password.Password('x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
751 userid = self.db.user.create(username='foo', password=x) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
752 self.assertEqual(x, self.db.user.get(userid, 'password')) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
753 self.assertEqual(self.db.user.get(userid, 'password'), 'x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
754 y = password.Password('y') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
755 self.db.user.set(userid, password=y) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
756 self.assertEqual(self.db.user.get(userid, 'password'), 'y') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
757 self.assertRaises(TypeError, self.db.user.create, userid, |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
758 username='bar', password='x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
759 self.assertRaises(TypeError, self.db.user.set, userid, password='x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
760 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
761 def testPasswordUnset(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
762 x = password.Password('x') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
763 nid = self.db.user.create(username='foo', password=x) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
764 self.db.user.set(nid, assignable=None) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
765 self.assertEqual(self.db.user.get(nid, "assignable"), None) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
766 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
767 # key value |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
768 def testKeyValue(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
769 self.assertRaises(ValueError, self.db.user.create) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
770 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
771 newid = self.db.user.create(username="spam") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
772 self.assertEqual(self.db.user.lookup('spam'), newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
773 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
774 self.assertEqual(self.db.user.lookup('spam'), newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
775 self.db.user.retire(newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
776 self.assertRaises(KeyError, self.db.user.lookup, 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
777 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
778 # use the key again now that the old is retired |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
779 newid2 = self.db.user.create(username="spam") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
780 self.assertNotEqual(newid, newid2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
781 # try to restore old node. this shouldn't succeed! |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
782 self.assertRaises(KeyError, self.db.user.restore, newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
783 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
784 self.assertRaises(TypeError, self.db.issue.lookup, 'fubar') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
785 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
786 # label property |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
787 def testLabelProp(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
788 # key prop |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
789 self.assertEqual(self.db.status.labelprop(), 'name') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
790 self.assertEqual(self.db.user.labelprop(), 'username') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
791 # title |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
792 self.assertEqual(self.db.issue.labelprop(), 'title') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
793 # name |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
794 self.assertEqual(self.db.file.labelprop(), 'name') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
795 # id |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
796 self.assertEqual(self.db.stuff.labelprop(default_to_id=1), 'id') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
797 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
798 # retirement |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
799 def testRetire(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
800 self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
801 b = self.db.status.get('1', 'name') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
802 a = self.db.status.list() |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
803 nodeids = self.db.status.getnodeids() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
804 self.db.status.retire('1') |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
805 others = nodeids[:] |
|
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
806 others.remove('1') |
|
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
807 |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
808 self.assertEqual(set(self.db.status.getnodeids()), |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
809 set(nodeids)) |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
810 self.assertEqual(set(self.db.status.getnodeids(retired=True)), |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
811 set(['1'])) |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
812 self.assertEqual(set(self.db.status.getnodeids(retired=False)), |
|
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
813 set(others)) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
814 |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
815 self.assertTrue(self.db.status.is_retired('1')) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
816 |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
817 # make sure the list is different |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
818 self.assertNotEqual(a, self.db.status.list()) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
819 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
820 # can still access the node if necessary |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
821 self.assertEqual(self.db.status.get('1', 'name'), b) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
822 self.assertRaises(IndexError, self.db.status.set, '1', name='hello') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
823 self.db.commit() |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
824 self.assertTrue(self.db.status.is_retired('1')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
825 self.assertEqual(self.db.status.get('1', 'name'), b) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
826 self.assertNotEqual(a, self.db.status.list()) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
827 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
828 # try to restore retired node |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
829 self.db.status.restore('1') |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
830 |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
831 self.assertTrue(not self.db.status.is_retired('1')) |
|
3486
34ada15b9936
all backends implement the retired check in getnodeids [SF#1290560]
Richard Jones <richard@users.sourceforge.net>
parents:
3457
diff
changeset
|
832 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
833 def testCacheCreateSet(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
834 self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
835 a = self.db.issue.get('1', 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
836 self.assertEqual(a, 'spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
837 self.db.issue.set('1', title='ham') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
838 b = self.db.issue.get('1', 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
839 self.assertEqual(b, 'ham') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
840 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
841 def testSerialisation(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
842 nid = self.db.issue.create(title="spam", status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
843 deadline=date.Date(), foo=date.Interval('-1d')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
844 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
845 assert isinstance(self.db.issue.get(nid, 'deadline'), date.Date) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
846 assert isinstance(self.db.issue.get(nid, 'foo'), date.Interval) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
847 uid = self.db.user.create(username="fozzy", |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
848 password=password.Password('t. bear')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
849 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
850 assert isinstance(self.db.user.get(uid, 'password'), password.Password) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
851 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
852 def testTransactions(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
853 # remember the number of items we started |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
854 num_issues = len(self.db.issue.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
855 num_files = self.db.numfiles() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
856 self.db.issue.create(title="don't commit me!", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
857 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
858 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
859 self.assertEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
860 self.db.issue.create(title="please commit me!", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
861 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
862 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
863 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
864 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
865 self.assertNotEqual(num_issues, len(self.db.issue.list())) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
866 self.db.file.create(name="test", type="text/plain", content="hi") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
867 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
868 self.assertEqual(num_files, self.db.numfiles()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
869 for i in range(10): |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
870 self.db.file.create(name="test", type="text/plain", |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
871 content="hi %d"%(i)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
872 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
873 num_files2 = self.db.numfiles() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
874 self.assertNotEqual(num_files, num_files2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
875 self.db.file.create(name="test", type="text/plain", content="hi") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
876 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
877 self.assertNotEqual(num_files, self.db.numfiles()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
878 self.assertEqual(num_files2, self.db.numfiles()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
879 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
880 # rollback / cache interaction |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
881 name1 = self.db.user.get('1', 'username') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
882 self.db.user.set('1', username = name1+name1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
883 # get the prop so the info's forced into the cache (if there is one) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
884 self.db.user.get('1', 'username') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
885 self.db.rollback() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
886 name2 = self.db.user.get('1', 'username') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
887 self.assertEqual(name1, name2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
888 |
|
3906
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
889 def testDestroyBlob(self): |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
890 # destroy an uncommitted blob |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
891 f1 = self.db.file.create(content='hello', type="text/plain") |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
892 self.db.commit() |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
893 fn = self.db.filename('file', f1) |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
894 self.db.file.destroy(f1) |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
895 self.db.commit() |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
896 self.assertEqual(os.path.exists(fn), False) |
|
666b70676ec6
destroy blobfiles if they exist
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3882
diff
changeset
|
897 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
898 def testDestroyNoJournalling(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
899 self.innerTestDestroy(klass=self.db.session) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
900 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
901 def testDestroyJournalling(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
902 self.innerTestDestroy(klass=self.db.issue) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
903 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
904 def innerTestDestroy(self, klass): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
905 newid = klass.create(title='Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
906 n = len(klass.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
907 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
908 count = klass.count() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
909 klass.destroy(newid) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
910 self.assertNotEqual(count, klass.count()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
911 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
912 self.assertNotEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
913 if klass.do_journal: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
914 self.assertRaises(IndexError, klass.history, newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
915 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
916 # now with a commit |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
917 newid = klass.create(title='Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
918 n = len(klass.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
919 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
920 self.db.commit() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
921 count = klass.count() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
922 klass.destroy(newid) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
923 self.assertNotEqual(count, klass.count()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
924 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
925 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
926 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
927 self.assertNotEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
928 if klass.do_journal: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
929 self.assertRaises(IndexError, klass.history, newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
930 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
931 # now with a rollback |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
932 newid = klass.create(title='Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
933 n = len(klass.list()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
934 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
935 self.db.commit() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
936 count = klass.count() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
937 klass.destroy(newid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
938 self.assertNotEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
939 self.assertRaises(IndexError, klass.get, newid, 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
940 self.db.rollback() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
941 self.assertEqual(count, klass.count()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
942 self.assertEqual(klass.get(newid, 'title'), 'Mr Friendly') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
943 self.assertEqual(len(klass.list()), n) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
944 if klass.do_journal: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
945 self.assertNotEqual(klass.history(newid), []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
946 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
947 def testExceptions(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
948 # this tests the exceptions that should be raised |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
949 ar = self.assertRaises |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
950 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
951 ar(KeyError, self.db.getclass, 'fubar') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
952 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
953 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
954 # class create |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
955 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
956 # string property |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
957 ar(TypeError, self.db.status.create, name=1) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
958 # id, creation, creator and activity properties are reserved |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
959 ar(KeyError, self.db.status.create, id=1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
960 ar(KeyError, self.db.status.create, creation=1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
961 ar(KeyError, self.db.status.create, creator=1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
962 ar(KeyError, self.db.status.create, activity=1) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
963 ar(KeyError, self.db.status.create, actor=1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
964 # invalid property name |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
965 ar(KeyError, self.db.status.create, foo='foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
966 # key name clash |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
967 ar(ValueError, self.db.status.create, name='unread') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
968 # invalid link index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
969 ar(IndexError, self.db.issue.create, title='foo', status='bar') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
970 # invalid link value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
971 ar(ValueError, self.db.issue.create, title='foo', status=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
972 # invalid multilink type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
973 ar(TypeError, self.db.issue.create, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
974 nosy='hello') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
975 # invalid multilink index type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
976 ar(ValueError, self.db.issue.create, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
977 nosy=[1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
978 # invalid multilink index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
979 ar(IndexError, self.db.issue.create, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
980 nosy=['10']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
981 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
982 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
983 # key property |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
984 # |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
985 # key must be a String |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
986 ar(TypeError, self.db.file.setkey, 'fooz') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
987 # key must exist |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
988 ar(KeyError, self.db.file.setkey, 'fubar') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
989 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
990 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
991 # class get |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
992 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
993 # invalid node id |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
994 ar(IndexError, self.db.issue.get, '99', 'title') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
995 # invalid property name |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
996 ar(KeyError, self.db.status.get, '2', 'foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
997 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
998 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
999 # class set |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1000 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1001 # invalid node id |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1002 ar(IndexError, self.db.issue.set, '99', title='foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1003 # invalid property name |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1004 ar(KeyError, self.db.status.set, '1', foo='foo') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1005 # string property |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1006 ar(TypeError, self.db.status.set, '1', name=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1007 # key name clash |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1008 ar(ValueError, self.db.status.set, '2', name='unread') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1009 # set up a valid issue for me to work on |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1010 id = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1011 # invalid link index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1012 ar(IndexError, self.db.issue.set, id, title='foo', status='bar') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1013 # invalid link value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1014 ar(ValueError, self.db.issue.set, id, title='foo', status=1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1015 # invalid multilink type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1016 ar(TypeError, self.db.issue.set, id, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1017 nosy='hello') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1018 # invalid multilink index type |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1019 ar(ValueError, self.db.issue.set, id, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1020 nosy=[1]) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1021 # invalid multilink index |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1022 ar(IndexError, self.db.issue.set, id, title='foo', status='1', |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1023 nosy=['10']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1024 # NOTE: the following increment the username to avoid problems |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1025 # within metakit's backend (it creates the node, and then sets the |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1026 # info, so the create (and by a fluke the username set) go through |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1027 # before the age/assignable/etc. set, which raises the exception) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1028 # invalid number value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1029 ar(TypeError, self.db.user.create, username='foo', age='a') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1030 # invalid boolean value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1031 ar(TypeError, self.db.user.create, username='foo2', assignable='true') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1032 nid = self.db.user.create(username='foo3') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1033 # invalid number value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1034 ar(TypeError, self.db.user.set, nid, age='a') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1035 # invalid boolean value |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1036 ar(TypeError, self.db.user.set, nid, assignable='true') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1037 |
|
3743
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1038 def testAuditors(self): |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1039 class test: |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1040 called = False |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1041 def call(self, *args): self.called = True |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1042 create = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1043 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1044 self.db.user.audit('create', create.call) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1045 self.db.user.create(username="mary") |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1046 self.assertEqual(create.called, True) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1047 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1048 set = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1049 self.db.user.audit('set', set.call) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1050 self.db.user.set('1', username="joe") |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1051 self.assertEqual(set.called, True) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1052 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1053 retire = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1054 self.db.user.audit('retire', retire.call) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1055 self.db.user.retire('1') |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1056 self.assertEqual(retire.called, True) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1057 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1058 def testAuditorTwo(self): |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1059 class test: |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1060 n = 0 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1061 def a(self, *args): self.call_a = self.n; self.n += 1 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1062 def b(self, *args): self.call_b = self.n; self.n += 1 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1063 def c(self, *args): self.call_c = self.n; self.n += 1 |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1064 test = test() |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1065 self.db.user.audit('create', test.b, 1) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1066 self.db.user.audit('create', test.a, 1) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1067 self.db.user.audit('create', test.c, 2) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1068 self.db.user.create(username="mary") |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1069 self.assertEqual(test.call_a, 0) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1070 self.assertEqual(test.call_b, 1) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1071 self.assertEqual(test.call_c, 2) |
|
e754cc14e76a
fix unstable ordering of detectors [SF#1585378]
Richard Jones <richard@users.sourceforge.net>
parents:
3692
diff
changeset
|
1072 |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1073 def testDefault_Value(self): |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1074 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1075 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1076 # John Rouillard claims this should return the default value of 1 week for foo, |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1077 # but the hyperdb doesn't assign the default value for missing properties in the |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1078 # db on creation. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1079 result=self.db.issue.get(new_issue, 'foo') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1080 # When the defaultis automatically set by the hyperdb, change this to |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1081 # match the Interval test below. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1082 self.assertEqual(result, None) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1083 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1084 # but verify that the default value is retreivable |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1085 result=self.db.issue.properties['foo'].get_default_value() |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1086 self.assertEqual(result, date.Interval('-7d')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1087 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1088 def testQuietProperty(self): |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1089 # make sure that the quiet properties: "assignable" and "age" are not |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1090 # returned as part of the proplist |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1091 new_user=self.db.user.create(username="pete", age=10, assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1092 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1093 # change all quiet params. Verify they aren't returned in object. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1094 # between this and the issue class every type represented in hyperdb |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1095 # should be initalized with a quiet parameter. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1096 result=self.db.user.set(new_user, username="new", age=20, supervisor='3', assignable=True, |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1097 password=password.Password("3456"), rating=4, realname="newname") |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1098 self.assertEqual(result, {'supervisor': '3', 'username': "new"}) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1099 result=self.db.user.get(new_user, 'age') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1100 self.assertEqual(result, 20) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1101 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1102 # change all quiet params. Verify they aren't returned in object. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1103 result=self.db.issue.set(new_issue, title="title2", deadline=date.Date('2016-7-13.22:39'), |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1104 assignedto="2", nosy=["3", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1105 self.assertEqual(result, {'title': 'title2'}) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1106 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1107 # also test that we can make a property noisy |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1108 self.db.user.properties['age'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1109 result=self.db.user.set(new_user, username="old", age=30, supervisor='2', assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1110 self.assertEqual(result, {'age': 30, 'supervisor': '2', 'username': "old"}) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1111 self.db.user.properties['age'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1112 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1113 def testQuietChangenote(self): |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1114 # create user 3 for later use |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1115 self.db.user.create(username="pete", age=10, assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1116 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1117 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1118 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1119 # change all quiet params. Verify they aren't returned in CreateNote. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1120 result=self.db.issue.set(new_issue, title="title2", deadline=date.Date('2016-6-30.22:39'), |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1121 assignedto="2", nosy=["3", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1122 result=self.db.issue.generateCreateNote(new_issue) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1123 self.assertEqual(result, '\n----------\ntitle: title2') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1124 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1125 # also test that we can make a property noisy |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1126 self.db.issue.properties['nosy'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1127 self.db.issue.properties['deadline'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1128 result=self.db.issue.set(new_issue, title="title2", deadline=date.Date('2016-7-13.22:39'), |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1129 assignedto="2", nosy=["1", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1130 result=self.db.issue.generateCreateNote(new_issue) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1131 self.assertEqual(result, '\n----------\ndeadline: 2016-07-13.22:39:00\nnosy: admin, fred\ntitle: title2') |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1132 self.db.issue.properties['nosy'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1133 self.db.issue.properties['deadline'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1134 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1135 def testViewPremJournal(self): |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1136 pass |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1137 |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1138 def testQuietJournal(self): |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1139 ## This is an example of how to enable logging module |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1140 ## and report the results. It uses testfixtures |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1141 ## that can be installed via pip. |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1142 ## Uncomment below 2 lines: |
|
5263
f015df5f8edf
Also comment out testfixture used to capture debug logging.
John Rouillard <rouilj@ieee.org>
parents:
5262
diff
changeset
|
1143 #import logging |
|
f015df5f8edf
Also comment out testfixture used to capture debug logging.
John Rouillard <rouilj@ieee.org>
parents:
5262
diff
changeset
|
1144 #from testfixtures import LogCapture |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1145 ## then run every call to roundup functions with: |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1146 #with LogCapture('roundup.hyperdb', level=logging.DEBUG) as l: |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1147 # result=self.db.user.history('2') |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1148 #print l |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1149 ## change 'roundup.hyperdb' to the logging name you want to capture. |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1150 ## print l just prints the output. Run using: |
|
6297
a635a60ffb84
Remove standalone pytest run_tests.py bundle
John Rouillard <rouilj@ieee.org>
parents:
6242
diff
changeset
|
1151 ## python -m pytest --capture=no -k testQuietJournal test/test_anydbm.py |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1152 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1153 # FIXME There should be a test via |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1154 # template.py::_HTMLItem::history() and verify the output. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1155 # not sure how to get there from here. -- rouilj |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1156 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1157 # The Class::history() method now does filtering of quiet |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1158 # props. Make sure that the quiet properties: "assignable" |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1159 # and "age" are not returned as part of the journal |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1160 new_user=self.db.user.create(username="pete", age=10, assignable=False) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1161 new_issue=self.db.issue.create(title="title", deadline=date.Date('2016-6-30.22:39')) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1162 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1163 # change all quiet params. Verify they aren't returned in journal. |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1164 # between this and the issue class every type represented in hyperdb |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1165 # should be initalized with a quiet parameter. |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1166 result=self.db.user.set(new_user, username="new", age=20, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1167 supervisor='1', assignable=True, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1168 password=password.Password("3456"), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1169 rating=4, realname="newname") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1170 result=self.db.user.history(new_user, skipquiet=False) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1171 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1172 [('3', <Date 2017-04-14.02:12:20.922>, '1', 'create', {}), |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1173 ('3', <Date 2017-04-14.02:12:20.922>, '1', 'set', |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1174 {'username': 'pete', 'assignable': False, |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1175 'supervisor': None, 'realname': None, 'rating': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1176 'age': 10, 'password': None})] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1177 ''' |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1178 expected = {'username': 'pete', 'assignable': False, |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1179 'supervisor': None, 'realname': None, 'rating': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1180 'age': 10, 'password': None} |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1181 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1182 result.sort() |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1183 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1184 # check piecewise ignoring date of transaction |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1185 self.assertEqual('3', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1186 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1187 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1188 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1189 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1190 # change all quiet params on issue. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1191 result=self.db.issue.set(new_issue, title="title2", |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1192 deadline=date.Date('2016-07-30.22:39'), |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1193 assignedto="2", nosy=["3", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1194 result=self.db.issue.generateCreateNote(new_issue) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1195 self.assertEqual(result, '\n----------\ntitle: title2') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1196 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1197 # check history including quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1198 result=self.db.issue.history(new_issue, skipquiet=False) |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1199 print(result) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1200 ''' output should be like: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1201 [ ... ('1', <Date 2017-04-14.01:41:08.466>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1202 {'assignedto': None, 'nosy': (('+', ['3', '2']),), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1203 'deadline': <Date 2016-06-30.22:39:00.000>, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1204 'title': 'title'}) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1205 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1206 expected = {'assignedto': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1207 'nosy': (('+', ['3', '2']),), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1208 'deadline': date.Date('2016-06-30.22:39'), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1209 'title': 'title'} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1210 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1211 result.sort() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1212 print("history include quiet props", result[-1]) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1213 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1214 # check piecewise ignoring date of transaction |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1215 self.assertEqual('1', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1216 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1217 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1218 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1219 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1220 # check history removing quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1221 result=self.db.issue.history(new_issue) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1222 ''' output should be like: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1223 [ ... ('1', <Date 2017-04-14.01:41:08.466>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1224 {'title': 'title'}) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1225 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1226 expected = {'title': 'title'} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1227 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1228 result.sort() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1229 print("history remove quiet props", result[-1]) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1230 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1231 # check piecewise |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1232 self.assertEqual('1', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1233 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1234 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1235 self.assertEqual(expected, args) |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1236 |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1237 # also test that we can make a property noisy |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1238 self.db.issue.properties['nosy'].quiet=False |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1239 self.db.issue.properties['deadline'].quiet=False |
|
5234
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1240 |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1241 # FIXME: mysql use should be fixed or |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1242 # a different way of checking this should be done. |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1243 # this sleep is a hack. |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1244 # mysql transation timestamps are in whole |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1245 # seconds. To get the history to sort in proper |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1246 # order by using timestamps we have to sleep 2 seconds |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1247 # here tomake sure the timestamp between this transaction |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1248 # and the last transaction is at least 1 second apart. |
|
d8457c376a38
Work around for missing fractional second support in our use of mysql.
John Rouillard <rouilj@ieee.org>
parents:
5233
diff
changeset
|
1249 import time; time.sleep(2) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1250 result=self.db.issue.set(new_issue, title="title2", |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1251 deadline=date.Date('2016-7-13.22:39'), |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1252 assignedto="2", nosy=["1", "2"]) |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1253 result=self.db.issue.generateCreateNote(new_issue) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1254 self.assertEqual(result, '\n----------\ndeadline: 2016-07-13.22:39:00\nnosy: admin, fred\ntitle: title2') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1255 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1256 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1257 # check history removing the current quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1258 result=self.db.issue.history(new_issue) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1259 expected = {'nosy': (('+', ['1']), ('-', ['3'])), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1260 'deadline': date.Date("2016-07-30.22:39:00.000")} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1261 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1262 result.sort() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
1263 print("result unquiet", result) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1264 (id, tx_date, user, action, args) = result[-1] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1265 # check piecewise |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1266 self.assertEqual('1', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1267 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1268 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1269 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1270 |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1271 result=self.db.user.history('2') |
|
5262
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1272 result.sort() |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1273 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1274 # result should look like: |
|
5262
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1275 # [('2', <Date 2017-08-29.01:42:40.227>, '1', 'create', {}), |
|
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1276 # ('2', <Date 2017-08-29.01:42:44.283>, '1', 'link', |
|
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1277 # ('issue', '1', 'nosy')) ] |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1278 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1279 expected2 = ('issue', '1', 'nosy') |
|
5262
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1280 |
|
b5400cae9c2a
Make sure to sort the result otherwise anydbm and sql ordering is different.
John Rouillard <rouilj@ieee.org>
parents:
5261
diff
changeset
|
1281 (id, tx_date, user, action, args) = result[-1] |
|
5261
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1282 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1283 self.assertEqual(len(result),2) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1284 |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1285 self.assertEqual('2', id) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1286 self.assertEqual('1', user) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1287 self.assertEqual('link', action) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1288 self.assertEqual(expected2, args) |
|
53a853c06e9a
Fixed quiet history filter for linked items. Test for same fixed.
John Rouillard <rouilj@ieee.org>
parents:
5248
diff
changeset
|
1289 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1290 # reset quiet props |
|
5112
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1291 self.db.issue.properties['nosy'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1292 self.db.issue.properties['deadline'].quiet=True |
|
8901cc4ef0e0
- issue1714899: Feature Request: Optional Change Note. Added a new
John Rouillard <rouilj@ieee.org>
parents:
5110
diff
changeset
|
1293 |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1294 # Change the role for the new_user. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1295 # If journal is retrieved by admin this adds the role |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1296 # change as the last element. If retreived by non-admin |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1297 # it should not be returned because the user has no |
|
5235
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1298 # View permissons on role. |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1299 # FIXME delay by two seconds due to mysql missing |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1300 # fractional seconds. See sleep above for details |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1301 time.sleep(2) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1302 result=self.db.user.set(new_user, roles="foo, bar") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1303 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1304 # Verify last journal entry as admin is a role change |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1305 # from None |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1306 result=self.db.user.history(new_user, skipquiet=False) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1307 result.sort() |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1308 ''' result should end like: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1309 [ ... |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1310 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1311 {'username': 'pete', 'assignable': False, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1312 'supervisor': None, 'realname': None, |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1313 'rating': None, 'age': 10, 'password': None}), |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1314 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'link', |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1315 ('issue', '1', 'nosy')), |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1316 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'unlink', |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1317 ('issue', '1', 'nosy')), |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1318 ('3', <Date 2017-04-15.02:06:11.482>, '1', 'set', |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1319 {'roles': None})] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1320 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1321 (id, tx_date, user, action, args) = result[-1] |
|
5235
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1322 expected = {'roles': None } |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1323 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1324 self.assertEqual('3', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1325 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1326 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1327 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1328 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1329 # set an existing user's role to User so it can |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1330 # view some props of the user class (search backwards |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1331 # for QuietJournal to see the properties, they should be: |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1332 # 'username', 'supervisor', 'assignable' i.e. age is not |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1333 # one of them. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1334 id = self.db.user.lookup("fred") |
|
5235
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1335 # FIXME mysql timestamp issue see sleeps above |
|
9886917c8545
Add more sleeps to work around mysql timestamp issue.
John Rouillard <rouilj@ieee.org>
parents:
5234
diff
changeset
|
1336 time.sleep(2) |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1337 result=self.db.user.set(id, roles="User") |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1338 # make the user fred current. |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1339 self.db.setCurrentUser('fred') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1340 self.assertEqual(self.db.getuid(), id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1341 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1342 # check history as the user fred |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1343 # include quiet properties |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1344 # but require View perms |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1345 result=self.db.user.history(new_user, skipquiet=False) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1346 result.sort() |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1347 ''' result should look like |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1348 [('3', <Date 2017-04-15.01:43:26.911>, '1', 'create', {}), |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1349 ('3', <Date 2017-04-15.01:43:26.911>, '1', 'set', |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1350 {'username': 'pete', 'assignable': False, |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1351 'supervisor': None, 'age': 10})] |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1352 ''' |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1353 # analyze last item |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1354 (id, tx_date, user, action, args) = result[-1] |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1355 expected= {'username': 'pete', 'assignable': False, |
|
5232
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1356 'supervisor': None} |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1357 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1358 self.assertEqual('3', id) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1359 self.assertEqual('1', user) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1360 self.assertEqual('set', action) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1361 self.assertEqual(expected, args) |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1362 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1363 # reset the user to admin |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1364 self.db.setCurrentUser('admin') |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1365 self.assertEqual(self.db.getuid(), '1') # admin is always 1 |
|
462b0f76fce8
issue2550864 - Potential information leakage via journal/history
John Rouillard <rouilj@ieee.org>
parents:
5175
diff
changeset
|
1366 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1367 def testJournals(self): |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
1368 muid = self.db.user.create(username="mary") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1369 self.db.user.create(username="pete") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1370 self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1371 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1372 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1373 # journal entry for issue create |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1374 journal = self.db.getjournal('issue', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1375 self.assertEqual(1, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1376 (nodeid, date_stamp, journaltag, action, params) = journal[0] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1377 self.assertEqual(nodeid, '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1378 self.assertEqual(journaltag, self.db.user.lookup('admin')) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1379 self.assertEqual(action, 'create') |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
1380 keys = sorted(params.keys()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1381 self.assertEqual(keys, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1382 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1383 # journal entry for link |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1384 journal = self.db.getjournal('user', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1385 self.assertEqual(1, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1386 self.db.issue.set('1', assignedto='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1387 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1388 journal = self.db.getjournal('user', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1389 self.assertEqual(2, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1390 (nodeid, date_stamp, journaltag, action, params) = journal[1] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1391 self.assertEqual('1', nodeid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1392 self.assertEqual('1', journaltag) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1393 self.assertEqual('link', action) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1394 self.assertEqual(('issue', '1', 'assignedto'), params) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1395 |
|
2754
1f89984c0ea5
testJournals: if backend is too fast, two journal entries...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2753
diff
changeset
|
1396 # wait a bit to keep proper order of journal entries |
|
1f89984c0ea5
testJournals: if backend is too fast, two journal entries...
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2753
diff
changeset
|
1397 time.sleep(0.01) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1398 # journal entry for unlink |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
1399 self.db.setCurrentUser('mary') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1400 self.db.issue.set('1', assignedto='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1401 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1402 journal = self.db.getjournal('user', '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1403 self.assertEqual(3, len(journal)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1404 (nodeid, date_stamp, journaltag, action, params) = journal[2] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1405 self.assertEqual('1', nodeid) |
|
2906
a8808157f892
fix some bugs introduced in refactoring of blobfiles filename()
Richard Jones <richard@users.sourceforge.net>
parents:
2899
diff
changeset
|
1406 self.assertEqual(muid, journaltag) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1407 self.assertEqual('unlink', action) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1408 self.assertEqual(('issue', '1', 'assignedto'), params) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1409 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1410 # test disabling journalling |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1411 # ... get the last entry |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1412 jlen = len(self.db.getjournal('user', '1')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1413 self.db.issue.disableJournalling() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1414 self.db.issue.set('1', title='hello world') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1415 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1416 # see if the change was journalled when it shouldn't have been |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1417 self.assertEqual(jlen, len(self.db.getjournal('user', '1'))) |
|
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1418 jlen = len(self.db.getjournal('issue', '1')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1419 self.db.issue.enableJournalling() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1420 self.db.issue.set('1', title='hello world 2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1421 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1422 # see if the change was journalled |
|
2098
18addf2a8596
Implemented proper datatypes in mysql and postgresql backends...
Richard Jones <richard@users.sourceforge.net>
parents:
2089
diff
changeset
|
1423 self.assertNotEqual(jlen, len(self.db.getjournal('issue', '1'))) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1424 |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1425 def testJournalNonexistingProperty(self): |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1426 # Test for non-existing properties, link/unlink events to |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1427 # non-existing classes and link/unlink events to non-existing |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1428 # properties in a class: These all may be the result of a schema |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1429 # change and should not lead to a traceback. |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1430 self.db.user.create(username="mary", roles="User") |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1431 id = self.db.issue.create(title="spam", status='1') |
|
5330
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1432 # FIXME delay by two seconds due to mysql missing |
|
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1433 # fractional seconds. This keeps the journal order correct. |
|
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1434 time.sleep(2) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1435 self.db.issue.set(id, title='green eggs') |
|
5330
c5e72a3c69dd
I forgot that mysql is missing fractional seconds in it's
John Rouillard <rouilj@ieee.org>
parents:
5329
diff
changeset
|
1436 time.sleep(2) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1437 self.db.commit() |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1438 journal = self.db.getjournal('issue', id) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1439 now = date.Date('.') |
|
6968
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1440 sec1 = date.Interval('0:00:01') |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1441 sec2 = date.Interval('0:00:02') |
|
6968
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1442 sec3 = date.Interval('0:00:03') |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1443 jp0 = dict(title = 'spam') |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1444 # Non-existing property changed |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1445 jp1 = dict(nonexisting = None) |
|
6968
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1446 journal.append ((id, now+sec1, '1', 'set', jp1)) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1447 # Link from user-class to non-existing property |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1448 jp2 = ('user', '1', 'xyzzy') |
|
6968
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1449 journal.append ((id, now+sec2, '1', 'link', jp2)) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1450 # Link from non-existing class |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1451 jp3 = ('frobozz', '1', 'xyzzy') |
|
6968
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1452 journal.append ((id, now+sec3, '1', 'link', jp3)) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1453 self.db.setjournal('issue', id, journal) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1454 self.db.commit() |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1455 result=self.db.issue.history(id) |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1456 result.sort() |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1457 # anydbm drops unknown properties during serialisation |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1458 if self.db.dbtype == 'anydbm': |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1459 self.assertEqual(len(result), 4) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1460 self.assertEqual(result [1][4], jp0) |
|
5317
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1461 self.assertEqual(result [2][4], jp2) |
|
c0cda00af479
Fix tests for memorydb and anydbm backends
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5315
diff
changeset
|
1462 self.assertEqual(result [3][4], jp3) |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1463 else: |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1464 self.assertEqual(len(result), 5) |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1465 self.assertEqual(result [1][4], jp0) |
|
5753
486824f4455a
Dump results of test. Getting intermittent failure from
John Rouillard <rouilj@ieee.org>
parents:
5725
diff
changeset
|
1466 print(result) # following test fails sometimes under sqlite |
|
486824f4455a
Dump results of test. Getting intermittent failure from
John Rouillard <rouilj@ieee.org>
parents:
5725
diff
changeset
|
1467 # in travis. Looks like an ordering issue |
|
486824f4455a
Dump results of test. Getting intermittent failure from
John Rouillard <rouilj@ieee.org>
parents:
5725
diff
changeset
|
1468 # in python 3.5. Print result to debug. |
|
6968
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1469 # is system runs fast enough, timestamp can |
|
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1470 # be the same on two journal items. Ordering |
|
4169f27f15f6
force time offset when loading journal
John Rouillard <rouilj@ieee.org>
parents:
6915
diff
changeset
|
1471 # in that case is random. |
|
5329
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1472 self.assertEqual(result [2][4], jp1) |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1473 self.assertEqual(result [3][4], jp2) |
|
19e12a540b91
Add a valid journal entry to the testJournalNonexistingProperty tests
John Rouillard <rouilj@ieee.org>
parents:
5319
diff
changeset
|
1474 self.assertEqual(result [4][4], jp3) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1475 self.db.close() |
|
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1476 # Verify that normal user doesn't see obsolete props/classes |
|
6365
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6351
diff
changeset
|
1477 self.open_database('mary') |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6351
diff
changeset
|
1478 setupSchema(self.db, 0, self.module) |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6351
diff
changeset
|
1479 # allow mary to see issue fields like title |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6351
diff
changeset
|
1480 self.db.security.addPermissionToRole('User', 'View', 'issue') |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6351
diff
changeset
|
1481 result=self.db.issue.history(id) |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6351
diff
changeset
|
1482 self.assertEqual(len(result), 2) |
|
7f00fc5958ca
Make memorydb persistent across re-open
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6351
diff
changeset
|
1483 self.assertEqual(result [1][4], jp0) |
|
5315
5a014410f254
Fix issue2550954: History display breaks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5311
diff
changeset
|
1484 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1485 def testJournalPreCommit(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1486 id = self.db.user.create(username="mary") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1487 self.assertEqual(len(self.db.getjournal('user', id)), 1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1488 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1489 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1490 def testPack(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1491 id = self.db.issue.create(title="spam", status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1492 self.db.commit() |
|
2255
4990fd3d57a7
fix mysql testing date granularity thingy
Richard Jones <richard@users.sourceforge.net>
parents:
2247
diff
changeset
|
1493 time.sleep(1) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1494 self.db.issue.set(id, status='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1495 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1496 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1497 # sleep for at least a second, then get a date to pack at |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1498 time.sleep(1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1499 pack_before = date.Date('.') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1500 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1501 # wait another second and add one more entry |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1502 time.sleep(1) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1503 self.db.issue.set(id, status='3') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1504 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1505 jlen = len(self.db.getjournal('issue', id)) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1506 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1507 # pack |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1508 self.db.pack(pack_before) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1509 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1510 # we should have the create and last set entries now |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1511 self.assertEqual(jlen-1, len(self.db.getjournal('issue', id))) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1512 |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1513 def testIndexerSearching(self): |
|
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1514 f1 = self.db.file.create(content='hello', type="text/plain") |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1515 # content='world' has the wrong content-type and won't be indexed |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1516 f2 = self.db.file.create(content='world', type="text/frozz", |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1517 comment='blah blah') |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1518 i1 = self.db.issue.create(files=[f1, f2], title="flebble plop") |
|
2872
d530b68e4b42
don't index common words [SF#1046612]
Richard Jones <richard@users.sourceforge.net>
parents:
2820
diff
changeset
|
1519 i2 = self.db.issue.create(title="flebble the frooz") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1520 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1521 self.assertEqual(self.db.indexer.search([], self.db.issue), {}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1522 self.assertEqual(self.db.indexer.search(['hello'], self.db.issue), |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1523 {i1: {'files': [f1]}}) |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
1524 # content='world' has the wrong content-type and shouldn't be indexed |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1525 self.assertEqual(self.db.indexer.search(['world'], self.db.issue), {}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1526 self.assertEqual(self.db.indexer.search(['frooz'], self.db.issue), |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1527 {i2: {}}) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1528 self.assertEqual(self.db.indexer.search(['flebble'], self.db.issue), |
|
1986
910b39f8c5b8
use the upload-supplied content-type if there is one
Richard Jones <richard@users.sourceforge.net>
parents:
1955
diff
changeset
|
1529 {i1: {}, i2: {}}) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1530 |
|
3048
d9b4224f955c
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3033
diff
changeset
|
1531 # test AND'ing of search terms |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1532 self.assertEqual(self.db.indexer.search(['frooz', 'flebble'], |
|
3048
d9b4224f955c
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3033
diff
changeset
|
1533 self.db.issue), {i2: {}}) |
|
d9b4224f955c
merge from maint-0-8
Richard Jones <richard@users.sourceforge.net>
parents:
3033
diff
changeset
|
1534 |
|
2872
d530b68e4b42
don't index common words [SF#1046612]
Richard Jones <richard@users.sourceforge.net>
parents:
2820
diff
changeset
|
1535 # unindexed stopword |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1536 self.assertEqual(self.db.indexer.search(['the'], self.db.issue), {}) |
|
2872
d530b68e4b42
don't index common words [SF#1046612]
Richard Jones <richard@users.sourceforge.net>
parents:
2820
diff
changeset
|
1537 |
|
6915
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1538 def testIndexerSearchingIgnoreProps(self): |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1539 f1 = self.db.file.create(content='hello', type="text/plain") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1540 # content='world' has the wrong content-type and won't be indexed |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1541 f2 = self.db.file.create(content='world', type="text/frozz", |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1542 comment='blah blah') |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1543 i1 = self.db.issue.create(files=[f1, f2], title="flebble plop") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1544 i2 = self.db.issue.create(title="flebble the frooz") |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1545 self.db.commit() |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1546 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1547 # filter out hits that are in the titpe prop of issues |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1548 self.assertEqual(self.db.indexer.search(['frooz'], self.db.issue, |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1549 ignore={('issue', 'title'): True}), |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1550 {}) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1551 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1552 # filter out hits in the title prop of content. Note the returned |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1553 # match is in a file not an issue, so ignore has no effect. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1554 # also there is no content property for issue. |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1555 self.assertEqual(self.db.indexer.search(['hello'], self.db.issue, |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1556 ignore={('issue', 'content'): True}), |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1557 {f1: {'files': ['1']}}) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1558 |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1559 # filter out file content property hit leaving no results |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1560 self.assertEqual(self.db.indexer.search(['hello'], self.db.issue, |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1561 ignore={('file', 'content'): True}), |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1562 {}) |
|
9ff091537f43
postgresql native-fts; more indexer tests
John Rouillard <rouilj@ieee.org>
parents:
6677
diff
changeset
|
1563 |
|
3997
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1564 def testIndexerSearchingLink(self): |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1565 m1 = self.db.msg.create(content="one two") |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1566 i1 = self.db.issue.create(messages=[m1]) |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1567 m2 = self.db.msg.create(content="two three") |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1568 i2 = self.db.issue.create(feedback=m2) |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1569 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1570 self.assertEqual(self.db.indexer.search(['two'], self.db.issue), |
|
3997
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1571 {i1: {'messages': [m1]}, i2: {'feedback': [m2]}}) |
|
edbb89730dc2
Fix indexer handling of indexed Link properties
Richard Jones <richard@users.sourceforge.net>
parents:
3995
diff
changeset
|
1572 |
|
3751
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1573 def testIndexerSearchMulti(self): |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1574 m1 = self.db.msg.create(content="one two") |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1575 m2 = self.db.msg.create(content="two three") |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1576 i1 = self.db.issue.create(messages=[m1]) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1577 i2 = self.db.issue.create(spam=[m2]) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1578 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1579 self.assertEqual(self.db.indexer.search([], self.db.issue), {}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1580 self.assertEqual(self.db.indexer.search(['one'], self.db.issue), |
|
3751
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1581 {i1: {'messages': [m1]}}) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1582 self.assertEqual(self.db.indexer.search(['two'], self.db.issue), |
|
3751
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1583 {i1: {'messages': [m1]}, i2: {'spam': [m2]}}) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1584 self.assertEqual(self.db.indexer.search(['three'], self.db.issue), |
|
3751
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1585 {i2: {'spam': [m2]}}) |
|
44603dd791b7
full-text search wasn't coping with multiple multilinks to the same class
Richard Jones <richard@users.sourceforge.net>
parents:
3746
diff
changeset
|
1586 |
|
3547
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1587 def testReindexingChange(self): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1588 search = self.db.indexer.search |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1589 issue = self.db.issue |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1590 i1 = issue.create(title="flebble plop") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1591 i2 = issue.create(title="flebble frooz") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1592 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1593 self.assertEqual(search(['plop'], issue), {i1: {}}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1594 self.assertEqual(search(['flebble'], issue), {i1: {}, i2: {}}) |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1595 |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1596 # change i1's title |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1597 issue.set(i1, title="plop") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1598 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1599 self.assertEqual(search(['plop'], issue), {i1: {}}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1600 self.assertEqual(search(['flebble'], issue), {i2: {}}) |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1601 |
|
3547
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1602 def testReindexingClear(self): |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1603 search = self.db.indexer.search |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1604 issue = self.db.issue |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1605 i1 = issue.create(title="flebble plop") |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1606 i2 = issue.create(title="flebble frooz") |
|
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1607 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1608 self.assertEqual(search(['plop'], issue), {i1: {}}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1609 self.assertEqual(search(['flebble'], issue), {i1: {}, i2: {}}) |
|
3547
7728ee93efd2
fix reindexing in Xapian
Richard Jones <richard@users.sourceforge.net>
parents:
3546
diff
changeset
|
1610 |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1611 # unset i1's title |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1612 issue.set(i1, title="") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1613 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1614 self.assertEqual(search(['plop'], issue), {}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1615 self.assertEqual(search(['flebble'], issue), {i2: {}}) |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1616 |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1617 def testFileClassReindexing(self): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1618 f1 = self.db.file.create(content='hello') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1619 f2 = self.db.file.create(content='hello, world') |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1620 i1 = self.db.issue.create(files=[f1, f2]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1621 self.db.commit() |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1622 d = self.db.indexer.search(['hello'], self.db.issue) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
1623 self.assertTrue(i1 in d) |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1624 d[i1]['files'].sort() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1625 self.assertEqual(d, {i1: {'files': [f1, f2]}}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1626 self.assertEqual(self.db.indexer.search(['world'], self.db.issue), |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1627 {i1: {'files': [f2]}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1628 self.db.file.set(f1, content="world") |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1629 self.db.commit() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1630 d = self.db.indexer.search(['world'], self.db.issue) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1631 d[i1]['files'].sort() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1632 self.assertEqual(d, {i1: {'files': [f1, f2]}}) |
|
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1633 self.assertEqual(self.db.indexer.search(['hello'], self.db.issue), |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1634 {i1: {'files': [f2]}}) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
1635 |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1636 def testFileClassIndexingNoNoNo(self): |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1637 f1 = self.db.file.create(content='hello') |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1638 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1639 self.assertEqual(self.db.indexer.search(['hello'], self.db.file), |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1640 {'1': {}}) |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1641 |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1642 f1 = self.db.file_nidx.create(content='hello') |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1643 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1644 self.assertEqual(self.db.indexer.search(['hello'], self.db.file_nidx), |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1645 {}) |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
1646 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1647 def testForcedReindexing(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1648 self.db.issue.create(title="flebble frooz") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1649 self.db.commit() |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1650 self.assertEqual(self.db.indexer.search(['flebble'], self.db.issue), |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1651 {'1': {}}) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1652 self.db.indexer.quiet = 1 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1653 self.db.indexer.force_reindex() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1654 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1655 self.db.indexer.quiet = 9 |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1656 self.assertEqual(self.db.indexer.search(['flebble'], self.db.issue), |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1657 {'1': {}}) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1658 |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
1659 def testIndexingPropertiesOnImport(self): |
|
3935
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
1660 # import an issue |
|
3844
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1661 title = 'Bzzt' |
|
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1662 nodeid = self.db.issue.import_list(['title', 'messages', 'files', |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
1663 'spam', 'nosy', 'superseder', 'keywords', 'keywords2'], |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
1664 [repr(title), '[]', '[]', '[]', '[]', '[]', '[]', '[]']) |
|
3844
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1665 self.db.commit() |
|
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1666 |
|
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1667 # Content of title attribute is indexed |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
1668 self.assertEqual(self.db.indexer.search([title], self.db.issue), |
|
3935
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
1669 {str(nodeid):{}}) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
1670 |
|
3844
cf8b716d9ac2
Fix for [SF#698136] Trouble with full-text indexer, with test.
Erik Forsberg <forsberg@users.sourceforge.net>
parents:
3826
diff
changeset
|
1671 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1672 # |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1673 # searching tests follow |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1674 # |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1675 def testFindIncorrectProperty(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1676 self.assertRaises(TypeError, self.db.issue.find, title='fubar') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1677 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1678 def _find_test_setup(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1679 self.db.file.create(content='') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1680 self.db.file.create(content='') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1681 self.db.user.create(username='') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1682 one = self.db.issue.create(status="1", nosy=['1']) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1683 two = self.db.issue.create(status="2", nosy=['2'], files=['1'], |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1684 assignedto='2') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1685 three = self.db.issue.create(status="1", nosy=['1','2']) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1686 four = self.db.issue.create(status="3", assignedto='1', |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1687 files=['1','2']) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1688 return one, two, three, four |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1689 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1690 def testFindLink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1691 one, two, three, four = self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1692 got = self.db.issue.find(status='1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1693 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1694 self.assertEqual(got, [one, three]) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1695 got = self.db.issue.find(status={'1':1}) |
|
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1696 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1697 self.assertEqual(got, [one, three]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1698 |
|
6427
f08907bfd5a1
Fix find() with anydbm. Add fast return shortcut.
John Rouillard <rouilj@ieee.org>
parents:
6415
diff
changeset
|
1699 def testFindProtectedLink(self): |
|
f08907bfd5a1
Fix find() with anydbm. Add fast return shortcut.
John Rouillard <rouilj@ieee.org>
parents:
6415
diff
changeset
|
1700 one, two, three, four = self._find_test_setup() |
|
f08907bfd5a1
Fix find() with anydbm. Add fast return shortcut.
John Rouillard <rouilj@ieee.org>
parents:
6415
diff
changeset
|
1701 got = self.db.issue.find(creator='1') |
|
f08907bfd5a1
Fix find() with anydbm. Add fast return shortcut.
John Rouillard <rouilj@ieee.org>
parents:
6415
diff
changeset
|
1702 got.sort() |
|
f08907bfd5a1
Fix find() with anydbm. Add fast return shortcut.
John Rouillard <rouilj@ieee.org>
parents:
6415
diff
changeset
|
1703 self.assertEqual(got, [one, two, three, four]) |
|
f08907bfd5a1
Fix find() with anydbm. Add fast return shortcut.
John Rouillard <rouilj@ieee.org>
parents:
6415
diff
changeset
|
1704 |
|
6151
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1705 def testFindRevLinkMultilink(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1706 ae, dummy = self.filteringSetupTransitiveSearch('user') |
|
6151
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1707 ni = 'nosy_issues' |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1708 self.db.issue.set('6', nosy=['3', '4', '5']) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1709 self.db.issue.set('7', nosy=['5']) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1710 # After this setup we have the following values for nosy: |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1711 # issue assignedto nosy |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1712 # 1: 6 4 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1713 # 2: 6 5 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1714 # 3: 7 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1715 # 4: 8 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1716 # 5: 9 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1717 # 6: 10 3, 4, 5 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1718 # 7: 10 5 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1719 # 8: 10 |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1720 # assignedto links back from 'issues' |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1721 # nosy links back from 'nosy_issues' |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1722 self.assertEqual(self.db.user.find(issues={'1':1}), ['6']) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1723 self.assertEqual(self.db.user.find(issues={'8':1}), ['10']) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1724 self.assertEqual(self.db.user.find(issues={'2':1, '5':1}), ['6', '9']) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1725 self.assertEqual(self.db.user.find(nosy_issues={'8':1}), []) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1726 self.assertEqual(self.db.user.find(nosy_issues={'6':1}), |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1727 ['3', '4', '5']) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1728 self.assertEqual(self.db.user.find(nosy_issues={'3':1, '5':1}), []) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1729 self.assertEqual(self.db.user.find(nosy_issues={'2':1, '6':1, '7':1}), |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1730 ['3', '4', '5']) |
|
ff059afae50a
Make 'find' work for rev_multilink properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6148
diff
changeset
|
1731 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1732 def testFindLinkFail(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1733 self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1734 self.assertEqual(self.db.issue.find(status='4'), []) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1735 self.assertEqual(self.db.issue.find(status={'4':1}), []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1736 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1737 def testFindLinkUnset(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1738 one, two, three, four = self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1739 got = self.db.issue.find(assignedto=None) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1740 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1741 self.assertEqual(got, [one, three]) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1742 got = self.db.issue.find(assignedto={None:1}) |
|
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1743 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1744 self.assertEqual(got, [one, three]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1745 |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2472
diff
changeset
|
1746 def testFindMultipleLink(self): |
|
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2472
diff
changeset
|
1747 one, two, three, four = self._find_test_setup() |
|
2968
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1748 l = self.db.issue.find(status={'1':1, '3':1}) |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1749 l.sort() |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1750 self.assertEqual(l, [one, three, four]) |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1751 l = self.db.issue.find(status=('1', '3')) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1752 l.sort() |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1753 self.assertEqual(l, [one, three, four]) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1754 l = self.db.issue.find(status=['1', '3']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1755 l.sort() |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
1756 self.assertEqual(l, [one, three, four]) |
|
2968
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1757 l = self.db.issue.find(assignedto={None:1, '1':1}) |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1758 l.sort() |
|
0aaf356fd105
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2906
diff
changeset
|
1759 self.assertEqual(l, [one, three, four]) |
|
2494
ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
Richard Jones <richard@users.sourceforge.net>
parents:
2472
diff
changeset
|
1760 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1761 def testFindMultilink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1762 one, two, three, four = self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1763 got = self.db.issue.find(nosy='2') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1764 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1765 self.assertEqual(got, [two, three]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1766 got = self.db.issue.find(nosy={'2':1}) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1767 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1768 self.assertEqual(got, [two, three]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1769 got = self.db.issue.find(nosy={'2':1}, files={}) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1770 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1771 self.assertEqual(got, [two, three]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1772 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1773 def testFindMultiMultilink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1774 one, two, three, four = self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1775 got = self.db.issue.find(nosy='2', files='1') |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1776 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1777 self.assertEqual(got, [two, three, four]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1778 got = self.db.issue.find(nosy={'2':1}, files={'1':1}) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1779 got.sort() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1780 self.assertEqual(got, [two, three, four]) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1781 |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1782 def testFindMultilinkFail(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1783 self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1784 self.assertEqual(self.db.issue.find(nosy='3'), []) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1785 self.assertEqual(self.db.issue.find(nosy={'3':1}), []) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1786 |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1787 def testFindMultilinkUnset(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1788 self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1789 self.assertEqual(self.db.issue.find(nosy={}), []) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1790 |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1791 def testFindLinkAndMultilink(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1792 one, two, three, four = self._find_test_setup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1793 got = self.db.issue.find(status='1', nosy='2') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1794 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1795 self.assertEqual(got, [one, two, three]) |
|
1912
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1796 got = self.db.issue.find(status={'1':1}, nosy={'2':1}) |
|
2b0ab61db194
fixes for [SF#818339]
Richard Jones <richard@users.sourceforge.net>
parents:
1906
diff
changeset
|
1797 got.sort() |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1798 self.assertEqual(got, [one, two, three]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1799 |
|
1988
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1800 def testFindRetired(self): |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1801 one, two, three, four = self._find_test_setup() |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1802 self.assertEqual(len(self.db.issue.find(status='1')), 2) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1803 self.db.issue.retire(one) |
|
5660b89f8903
more compliance testing, this time for find()
Richard Jones <richard@users.sourceforge.net>
parents:
1986
diff
changeset
|
1804 self.assertEqual(len(self.db.issue.find(status='1')), 1) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1805 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1806 def testStringFind(self): |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1807 self.assertRaises(TypeError, self.db.issue.stringFind, status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1808 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1809 ids = [] |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1810 ids.append(self.db.issue.create(title="spam")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1811 self.db.issue.create(title="not spam") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1812 ids.append(self.db.issue.create(title="spam")) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1813 ids.sort() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1814 got = self.db.issue.stringFind(title='spam') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1815 got.sort() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1816 self.assertEqual(got, ids) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1817 self.assertEqual(self.db.issue.stringFind(title='fubar'), []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1818 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1819 # test retiring a node |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1820 self.db.issue.retire(ids[0]) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1821 self.assertEqual(len(self.db.issue.stringFind(title='spam')), 1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
1822 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1823 def filteringSetup(self, classname='issue'): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1824 for user in ( |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1825 {'username': 'bleep', 'age': 1, 'assignable': True}, |
|
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1826 {'username': 'blop', 'age': 1.5, 'assignable': True}, |
|
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1827 {'username': 'blorp', 'age': 2, 'assignable': False}): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1828 self.db.user.create(**user) |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1829 file_content = ''.join([chr(i) for i in range(255)]) |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1830 f = self.db.file.create(content=file_content) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1831 for issue in ( |
|
1955
b00ad075bb2f
more unit tests, fixes and cleanups
Richard Jones <richard@users.sourceforge.net>
parents:
1951
diff
changeset
|
1832 {'title': 'issue one', 'status': '2', 'assignedto': '1', |
|
2536
70ede89e8056
handle postgresql bug in SQL generation [SF#984591]
Richard Jones <richard@users.sourceforge.net>
parents:
2533
diff
changeset
|
1833 'foo': date.Interval('1:10'), 'priority': '3', |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1834 'deadline': date.Date('2003-02-16.22:50')}, |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1835 {'title': 'issue two', 'status': '1', 'assignedto': '2', |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
1836 'foo': date.Interval('1d'), 'priority': '3', |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
1837 'deadline': date.Date('2003-01-01.00:00')}, |
|
2601
113548baeed2
API clarification.
Richard Jones <richard@users.sourceforge.net>
parents:
2536
diff
changeset
|
1838 {'title': 'issue three', 'status': '1', 'priority': '2', |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1839 'nosy': ['1','2'], 'deadline': date.Date('2003-02-18')}, |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1840 {'title': 'non four', 'status': '3', |
|
2536
70ede89e8056
handle postgresql bug in SQL generation [SF#984591]
Richard Jones <richard@users.sourceforge.net>
parents:
2533
diff
changeset
|
1841 'foo': date.Interval('0:10'), 'priority': '2', |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
1842 'nosy': ['1','2','3'], 'deadline': date.Date('2004-03-08'), |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
1843 'files': [f]}): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1844 self.db.issue.create(**issue) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1845 self.db.commit() |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1846 return self.iterSetup(classname) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1847 |
|
6677
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1848 def testFilteringNone(self): |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1849 ae, iiter = self.filteringSetup() |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1850 for filt in iiter(): |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1851 ae(filt(None, None, ('+','id'), (None,None)), ['1', '2', '3', '4']) |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1852 |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1853 def testSortingNone(self): |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1854 ae, iiter = self.filteringSetup() |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1855 for filt in iiter(): |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1856 ae(filt(None, {'id': ['1','3','4']}, None, ('-', 'status')), |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1857 ['3', '4', '1']) |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1858 |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1859 def testGroupingNone(self): |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1860 ae, iiter = self.filteringSetup() |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1861 for filt in iiter(): |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1862 ae(filt(None, {'title': ['issue']}, [('-', 'id')], |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1863 None), ['3', '2', '1']) |
|
8ab98de22df0
issue2551159 - cl.filter fails if filterspec is None ...
John Rouillard <rouilj@ieee.org>
parents:
6604
diff
changeset
|
1864 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1865 def testFilteringID(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1866 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1867 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1868 ae(filt(None, {'id': '1'}, ('+','id'), (None,None)), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1869 ae(filt(None, {'id': '2'}, ('+','id'), (None,None)), ['2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1870 ae(filt(None, {'id': '100'}, ('+','id'), (None,None)), []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1871 |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1872 def testFilteringBoolean(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1873 ae, iiter = self.filteringSetup('user') |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1874 a = 'assignable' |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1875 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1876 ae(filt(None, {a: '1'}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1877 ae(filt(None, {a: '0'}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1878 ae(filt(None, {a: ['1']}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1879 ae(filt(None, {a: ['0']}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1880 ae(filt(None, {a: ['0','1']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1881 ['3','4','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1882 ae(filt(None, {a: 'True'}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1883 ae(filt(None, {a: 'False'}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1884 ae(filt(None, {a: ['True']}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1885 ae(filt(None, {a: ['False']}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1886 ae(filt(None, {a: ['False','True']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1887 ['3','4','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1888 ae(filt(None, {a: True}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1889 ae(filt(None, {a: False}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1890 ae(filt(None, {a: 1}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1891 ae(filt(None, {a: 0}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1892 ae(filt(None, {a: [1]}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1893 ae(filt(None, {a: [0]}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1894 ae(filt(None, {a: [0,1]}, ('+','id'), (None,None)), ['3','4','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1895 ae(filt(None, {a: [True]}, ('+','id'), (None,None)), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1896 ae(filt(None, {a: [False]}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1897 ae(filt(None, {a: [False,True]}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1898 ['3','4','5']) |
|
4365
667c818f6a22
- unify bool searching (filter method) across backends
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4364
diff
changeset
|
1899 |
|
2418
89072e66b5f5
fixed filtering by floats in anydbm [SF#963584]
Richard Jones <richard@users.sourceforge.net>
parents:
2400
diff
changeset
|
1900 def testFilteringNumber(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1901 ae, iiter = self.filteringSetup('user') |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1902 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1903 ae(filt(None, {'age': '1'}, ('+','id'), (None,None)), ['3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1904 ae(filt(None, {'age': '1.5'}, ('+','id'), (None,None)), ['4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1905 ae(filt(None, {'age': '2'}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1906 ae(filt(None, {'age': ['1','2']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1907 ['3','5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1908 ae(filt(None, {'age': 2}, ('+','id'), (None,None)), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1909 ae(filt(None, {'age': [1,2]}, ('+','id'), (None,None)), ['3','5']) |
|
2418
89072e66b5f5
fixed filtering by floats in anydbm [SF#963584]
Richard Jones <richard@users.sourceforge.net>
parents:
2400
diff
changeset
|
1910 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1911 def testFilteringString(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1912 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1913 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1914 ae(filt(None, {'title': ['one']}, ('+','id'), (None,None)), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1915 ae(filt(None, {'title': ['issue one']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1916 ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1917 ae(filt(None, {'title': ['issue', 'one']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1918 ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1919 ae(filt(None, {'title': ['issue']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1920 ['1','2','3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1921 ae(filt(None, {'title': ['one', 'two']}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1922 []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1923 |
|
4787
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1924 def testFilteringStringCase(self): |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1925 """ |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1926 Similar to testFilteringString except the search parameters |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1927 have different capitalization. |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1928 """ |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1929 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1930 for filt in iiter(): |
|
4787
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1931 ae(filt(None, {'title': ['One']}, ('+','id'), (None,None)), ['1']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1932 ae(filt(None, {'title': ['Issue One']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1933 ['1']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1934 ae(filt(None, {'title': ['ISSUE', 'ONE']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1935 ['1']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1936 ae(filt(None, {'title': ['iSSUE']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1937 ['1','2','3']) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1938 ae(filt(None, {'title': ['One', 'Two']}, ('+','id'), (None,None)), |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1939 []) |
|
4a017661e414
Closed issue2550805 (Postgresql should search title case insensitive), by Tom Ekberg.
Bernhard Reiter <bernhard@intevation.de>
parents:
4786
diff
changeset
|
1940 |
|
5867
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1941 def testFilteringStringExactMatch(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1942 ae, iiter = self.filteringSetup() |
|
5867
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1943 # Change title of issue2 to 'issue' so we can test substring |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1944 # search vs exact search |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1945 self.db.issue.set('2', title='issue') |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1946 #self.db.commit() |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1947 for filt in iiter(): |
|
5867
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1948 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1949 {'title': ['one']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1950 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1951 {'title': ['issue one']}), ['1']) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1952 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1953 {'title': ['issue', 'one']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1954 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1955 {'title': ['issue']}), ['2']) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1956 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1957 {'title': ['one', 'two']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1958 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1959 {'title': ['One']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1960 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1961 {'title': ['Issue One']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1962 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1963 {'title': ['ISSUE', 'ONE']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1964 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1965 {'title': ['iSSUE']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1966 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1967 {'title': ['One', 'Two']}), []) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1968 ae(filt(None, {}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1969 {'title': ['non four']}), ['4']) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1970 # Both, filterspec and exact_match_spec on same prop |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1971 ae(filt(None, {'title': 'iSSUE'}, exact_match_spec = |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1972 {'title': ['issue']}), ['2']) |
|
ee2e8f8d6648
Implement exact string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5790
diff
changeset
|
1973 |
|
4849
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1974 def testFilteringSpecialChars(self): |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1975 """ Special characters in SQL search are '%' and '_', some used |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1976 to lead to a traceback. |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1977 """ |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1978 ae, iiter = self.filteringSetup() |
|
4849
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1979 self.db.issue.set('1', title="With % symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1980 self.db.issue.set('2', title="With _ symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1981 self.db.issue.set('3', title="With \\ symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1982 self.db.issue.set('4', title="With ' symbol") |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1983 d = dict (status = '1') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1984 for filt in iiter(): |
|
4849
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1985 ae(filt(None, dict(title='%'), ('+','id'), (None,None)), ['1']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1986 ae(filt(None, dict(title='_'), ('+','id'), (None,None)), ['2']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1987 ae(filt(None, dict(title='\\'), ('+','id'), (None,None)), ['3']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1988 ae(filt(None, dict(title="'"), ('+','id'), (None,None)), ['4']) |
|
e68920390aad
Fix SQL wildcards in string search
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4787
diff
changeset
|
1989 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
1990 def testFilteringLink(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1991 ae, iiter = self.filteringSetup() |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1992 a = 'assignedto' |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1993 grp = (None, None) |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
1994 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1995 ae(filt(None, {'status': '1'}, ('+','id'), grp), ['2','3']) |
|
6410
66ccddb034f2
Bug-fix in expression parser
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6403
diff
changeset
|
1996 ae(filt(None, {'status': [], 'status.name': 'unread'}), []) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1997 ae(filt(None, {a: '-1'}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1998 ae(filt(None, {a: None}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
1999 ae(filt(None, {a: [None]}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2000 ae(filt(None, {a: ['-1', None]}, ('+','id'), grp), ['3','4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2001 ae(filt(None, {a: ['1', None]}, ('+','id'), grp), ['1', '3','4']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2002 |
|
6412
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2003 def testFilteringLinkExpression(self): |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2004 ae, iiter = self.filteringSetup() |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2005 a = 'assignedto' |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2006 for filt in iiter(): |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2007 ae(filt(None, {}, ('+',a)), ['3','4','1','2']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2008 ae(filt(None, {a: '1'}, ('+',a)), ['1']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2009 ae(filt(None, {a: '2'}, ('+',a)), ['2']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2010 ae(filt(None, {a: '-1'}, ('+','status')), ['4','3']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2011 ae(filt(None, {a: []}, ('+','id')), ['3','4']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2012 ae(filt(None, {a: ['-1']}, ('+',a)), ['3','4']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2013 ae(filt(None, {a: []}, ('+',a)), ['3','4']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2014 ae(filt(None, {a: '-1'}, ('+',a)), ['3','4']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2015 ae(filt(None, {a: ['1','-1']}), ['1','3','4']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2016 ae(filt(None, {a: ['1','-1']}, ('+',a)), ['3','4','1']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2017 ae(filt(None, {a: ['2','-1']}, ('+',a)), ['3','4','2']) |
|
7680
25a03f1a8159
Add two small tests for link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
7668
diff
changeset
|
2018 ae(filt(None, {a: ['2','-1','-4']}, ('+',a)), ['3','4','2']) |
|
25a03f1a8159
Add two small tests for link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
7668
diff
changeset
|
2019 ae(filt(None, {a: ['2','-1','-4','-2']}, ('+',a)), ['1']) |
|
6412
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2020 ae(filt(None, {a: ['1','-2']}), ['2','3','4']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2021 ae(filt(None, {a: ['1','-2']}, ('+',a)), ['3','4','2']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2022 ae(filt(None, {a: ['-1','-2']}, ('+',a)), ['1','2']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2023 ae(filt(None, {a: ['1','2','-3']}, ('+',a)), []) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2024 ae(filt(None, {a: ['1','2','-4']}, ('+',a)), ['1','2']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2025 ae(filt(None, {a: ['1','-2','2','-2','-3']}, ('+',a)), ['3','4']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2026 ae(filt(None, {a: ['1','-2','2','-2','-4']}, ('+',a)), |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2027 ['3','4','1','2']) |
|
a0c0ee3ed8b1
Tests for Link expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6411
diff
changeset
|
2028 |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2029 def testFilteringRevLink(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2030 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2031 # We have |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2032 # issue assignedto |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2033 # 1: 6 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2034 # 2: 6 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2035 # 3: 7 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2036 # 4: 8 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2037 # 5: 9 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2038 # 6: 10 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2039 # 7: 10 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2040 # 8: 10 |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2041 for filt in iiter(): |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2042 ae(filt(None, {'issues': ['3', '4']}), ['7', '8']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2043 ae(filt(None, {'issues': ['1', '4', '8']}), ['6', '8', '10']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2044 ae(filt(None, {'issues.title': ['ts2']}), ['6']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2045 ae(filt(None, {'issues': ['-1']}), ['1', '2', '3', '4', '5']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2046 ae(filt(None, {'issues': '-1'}), ['1', '2', '3', '4', '5']) |
|
6179
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2047 def ls(x): |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2048 return list(sorted(x)) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2049 self.assertEqual(ls(self.db.user.get('6', 'issues')), ['1', '2']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2050 self.assertEqual(ls(self.db.user.get('7', 'issues')), ['3']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2051 self.assertEqual(ls(self.db.user.get('10', 'issues')), ['6', '7', '8']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2052 n = self.db.user.getnode('6') |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2053 self.assertEqual(ls(n.issues), ['1', '2']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2054 # Now retire some linked-to issues and retry |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2055 self.db.issue.retire('6') |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2056 self.db.issue.retire('2') |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2057 self.db.issue.retire('3') |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2058 self.db.commit() |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2059 for filt in iiter(): |
|
6179
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2060 ae(filt(None, {'issues': ['3', '4']}), ['8']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2061 ae(filt(None, {'issues': ['1', '4', '8']}), ['6', '8', '10']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2062 ae(filt(None, {'issues.title': ['ts2']}), []) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2063 ae(filt(None, {'issues': ['-1']}), ['1', '2', '3', '4', '5', '7']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2064 ae(filt(None, {'issues': '-1'}), ['1', '2', '3', '4', '5', '7']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2065 self.assertEqual(ls(self.db.user.get('6', 'issues')), ['1']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2066 self.assertEqual(ls(self.db.user.get('7', 'issues')), []) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2067 self.assertEqual(ls(self.db.user.get('10', 'issues')), ['7', '8']) |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2068 |
|
6402
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2069 def testFilteringRevLinkExpression(self): |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2070 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2071 # We have |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2072 # issue assignedto |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2073 # 1: 6 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2074 # 2: 6 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2075 # 3: 7 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2076 # 4: 8 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2077 # 5: 9 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2078 # 6: 10 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2079 # 7: 10 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2080 # 8: 10 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2081 for filt in iiter(): |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2082 # Explicit 'or' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2083 ae(filt(None, {'issues': ['3', '4', '-4']}), ['7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2084 # Implicit or with '-1' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2085 ae(filt(None, {'issues': ['3', '4', '-1']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2086 ['1', '2', '3', '4', '5', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2087 # Explicit or with '-1': 3 or 4 or empty |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2088 ae(filt(None, {'issues': ['3', '4', '-4', '-1', '-4']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2089 ['1', '2', '3', '4', '5', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2090 # '3' and empty |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2091 ae(filt(None, {'issues': ['3', '-1', '-3']}), []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2092 # '6' and '7' and '8' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2093 ae(filt(None, {'issues': ['6', '7', '-3', '8', '-3']}), ['10']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2094 # '6' and '7' or '1' and '2' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2095 ae(filt(None, {'issues': ['6', '7', '-3', '1', '2', '-3', '-4']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2096 ['6', '10']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2097 # '1' or '4' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2098 ae(filt(None, {'issues': ['1', '4', '-4']}), ['6', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2099 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2100 # Now retire some linked-to issues and retry |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2101 self.db.issue.retire('6') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2102 self.db.issue.retire('2') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2103 self.db.issue.retire('3') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2104 self.db.commit() |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2105 # We have now |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2106 # issue assignedto |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2107 # 1: 6 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2108 # 4: 8 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2109 # 5: 9 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2110 # 7: 10 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2111 # 8: 10 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2112 for filt in iiter(): |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2113 # Explicit 'or' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2114 ae(filt(None, {'issues': ['3', '4', '-4']}), ['8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2115 # Implicit or with '-1' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2116 ae(filt(None, {'issues': ['3', '4', '-1']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2117 ['1', '2', '3', '4', '5', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2118 # Explicit or with '-1': 3 or 4 or empty |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2119 ae(filt(None, {'issues': ['3', '4', '-4', '-1', '-4']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2120 ['1', '2', '3', '4', '5', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2121 # '3' and empty |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2122 ae(filt(None, {'issues': ['3', '-1', '-3']}), []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2123 # '6' and '7' and '8' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2124 ae(filt(None, {'issues': ['6', '7', '-3', '8', '-3']}), []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2125 # '7' and '8' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2126 ae(filt(None, {'issues': ['7', '8', '-3']}), ['10']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2127 # '6' and '7' or '1' and '2' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2128 ae(filt(None, {'issues': ['6', '7', '-3', '1', '2', '-3', '-4']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2129 []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2130 # '1' or '4' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2131 ae(filt(None, {'issues': ['1', '4', '-4']}), ['6', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2132 |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
2133 def testFilteringLinkSortSearchMultilink(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2134 ae, iiter = self.filteringSetup() |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
2135 a = 'assignedto' |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
2136 grp = (None, None) |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2137 for filt in iiter(): |
|
4850
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
2138 ae(filt(None, {'status.mls': '1'}, ('+','status')), ['2','3']) |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
2139 ae(filt(None, {'status.mls': '2'}, ('+','status')), ['2','3']) |
|
6998ad77841e
Fix bug in SQL generation
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4849
diff
changeset
|
2140 |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2141 def testFilteringMultilinkAndGroup(self): |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2142 """testFilteringMultilinkAndGroup: |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2143 See roundup Bug 1541128: apparently grouping by something and |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2144 searching a Multilink failed with MySQL 5.0 |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2145 """ |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2146 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2147 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2148 ae(f(None, {'files': '1'}, ('-','activity'), ('+','status')), ['4']) |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2149 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2150 def testFilteringRetired(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2151 ae, iiter = self.filteringSetup() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2152 self.db.issue.retire('2') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2153 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2154 ae(f(None, {'status': '1'}, ('+','id'), (None,None)), ['3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2155 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2156 def testFilteringMultilink(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2157 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2158 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2159 ae(filt(None, {'nosy': '3'}, ('+','id'), (None,None)), ['4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2160 ae(filt(None, {'nosy': '-1'}, ('+','id'), (None,None)), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2161 ae(filt(None, {'nosy': ['1','2']}, ('+', 'status'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2162 ('-', 'deadline')), ['4', '3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2163 |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2164 def testFilteringMultilinkExpression(self): |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2165 ae, iiter = self.filteringSetup() |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2166 kw1 = self.db.keyword.create(name='Key1') |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2167 kw2 = self.db.keyword.create(name='Key2') |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2168 kw3 = self.db.keyword.create(name='Key3') |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2169 kw4 = self.db.keyword.create(name='Key4') |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2170 self.db.issue.set('1', keywords=[kw1, kw2]) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2171 self.db.issue.set('2', keywords=[kw1, kw3]) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2172 self.db.issue.set('3', keywords=[kw2, kw3, kw4]) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2173 self.db.issue.set('4', keywords=[kw1, kw2, kw4]) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2174 self.db.commit() |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2175 kw = 'keywords' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2176 for filt in iiter(): |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2177 # '1' and '2' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2178 ae(filt(None, {kw: ['1', '2', '-3']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2179 ['1', '4']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2180 # ('2' and '4') and '1' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2181 ae(filt(None, {kw: ['1', '2', '4', '-3', '-3']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2182 ['4']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2183 # not '4' and '3' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2184 ae(filt(None, {kw: ['3', '4', '-2', '-3']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2185 ['2']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2186 # (not '4' and '3') and '2' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2187 ae(filt(None, {kw: ['2', '3', '4', '-2', '-3', '-3']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2188 []) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2189 # '1' or '2' without explicit 'or' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2190 ae(filt(None, {kw: ['1', '2']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2191 ['1', '2', '3', '4']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2192 # '1' or '2' with explicit 'or' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2193 ae(filt(None, {kw: ['1', '2', '-4']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2194 ['1', '2', '3', '4']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2195 # '3' or '4' without explicit 'or' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2196 ae(filt(None, {kw: ['3', '4']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2197 ['2', '3', '4']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2198 # '3' or '4' with explicit 'or' |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2199 ae(filt(None, {kw: ['3', '4', '-4']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2200 ['2', '3', '4']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2201 # ('3' and '4') or ('1' and '2') |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2202 ae(filt(None, {kw: ['3', '4', '-3', '1', '2', '-3', '-4']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2203 ['1', '3', '4']) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2204 # '2' and empty |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2205 ae(filt(None, {kw: ['2', '-1', '-3']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2206 []) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2207 self.db.issue.set('1', keywords=[]) |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2208 self.db.commit() |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2209 for filt in iiter(): |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2210 ae(filt(None, {kw: ['-1']}), |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2211 ['1']) |
|
6396
75a53956cf13
Multilink expressions with simple "or"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6395
diff
changeset
|
2212 # '3' or empty (without explicit 'or') |
|
75a53956cf13
Multilink expressions with simple "or"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6395
diff
changeset
|
2213 ae(filt(None, {kw: ['3', '-1']}), |
|
75a53956cf13
Multilink expressions with simple "or"
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6395
diff
changeset
|
2214 ['1', '2', '3']) |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2215 # '3' or empty (with explicit 'or') |
|
6399
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2216 ae(filt(None, {kw: ['3', '-1', '-4']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2217 ['1', '2', '3']) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2218 # empty or '3' (with explicit 'or') |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2219 ae(filt(None, {kw: ['-1', '3', '-4']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2220 ['1', '2', '3']) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2221 # '3' and empty (should always return empty list) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2222 ae(filt(None, {kw: ['3', '-1', '-3']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2223 []) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2224 # empty and '3' (should always return empty list) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2225 ae(filt(None, {kw: ['3', '-1', '-3']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2226 []) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2227 # ('4' and empty) or ('3' or empty) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2228 ae(filt(None, {kw: ['4', '-1', '-3', '3', '-1', '-4', '-4']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2229 ['1', '2', '3']) |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
2230 |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2231 def testFilteringTwoMultilinksExpression(self): |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2232 ae, iiter = self.filteringSetup() |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2233 kw1 = self.db.keyword.create(name='Key1', order=10) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2234 kw2 = self.db.keyword.create(name='Key2', order=20) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2235 kw3 = self.db.keyword.create(name='Key3', order=30) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2236 kw4 = self.db.keyword.create(name='Key4', order=40) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2237 self.db.issue.set('1', keywords=[kw1, kw2]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2238 self.db.issue.set('2', keywords=[kw1, kw3]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2239 self.db.issue.set('3', keywords=[kw2, kw3, kw4]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2240 self.db.issue.set('4', keywords=[]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2241 self.db.issue.set('1', keywords2=[kw3, kw4]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2242 self.db.issue.set('2', keywords2=[kw2, kw3]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2243 self.db.issue.set('3', keywords2=[kw1, kw3, kw4]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2244 self.db.issue.set('4', keywords2=[]) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2245 self.db.commit() |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2246 kw = 'keywords' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2247 kw2 = 'keywords2' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2248 for filt in iiter(): |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2249 # kw: '1' and '3' kw2: '2' and '3' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2250 ae(filt(None, {kw: ['1', '3', '-3'], kw2: ['2', '3', '-3']}), ['2']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2251 # kw: empty kw2: empty |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2252 ae(filt(None, {kw: ['-1'], kw2: ['-1']}), ['4']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2253 # kw: empty kw2: empty |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2254 ae(filt(None, {kw: [], kw2: []}), ['4']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2255 # look for both keyword name and order |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2256 ae(filt(None, {'keywords.name': 'y4', 'keywords.order': 40}), ['3']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2257 # look for both keyword and order non-matching |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2258 ae(filt(None, {kw: '3', 'keywords.order': 40}), []) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2259 # look for both keyword and order non-matching with kw and kw2 |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2260 ae(filt(None, {kw: '3', 'keywords2.order': 40}), ['3']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2261 |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2262 def testFilteringRevMultilink(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2263 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2264 ni = 'nosy_issues' |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2265 self.db.issue.set('6', nosy=['3', '4', '5']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2266 self.db.issue.set('7', nosy=['5']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2267 # After this setup we have the following values for nosy: |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2268 # issue nosy |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2269 # 1: 4 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2270 # 2: 5 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2271 # 3: |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2272 # 4: |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2273 # 5: |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2274 # 6: 3, 4, 5 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2275 # 7: 5 |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2276 # 8: |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2277 for filt in iiter(): |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2278 ae(filt(None, {ni: ['1', '2']}), ['4', '5']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2279 ae(filt(None, {ni: ['6','7']}), ['3', '4', '5']) |
|
6179
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2280 ae(filt(None, {'nosy_issues.title': ['ts2']}), ['5']) |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2281 ae(filt(None, {ni: ['-1']}), ['1', '2', '6', '7', '8', '9', '10']) |
|
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2282 ae(filt(None, {ni: '-1'}), ['1', '2', '6', '7', '8', '9', '10']) |
|
6179
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2283 def ls(x): |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2284 return list(sorted(x)) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2285 self.assertEqual(ls(self.db.user.get('4', ni)), ['1', '6']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2286 self.assertEqual(ls(self.db.user.get('5', ni)), ['2', '6', '7']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2287 n = self.db.user.getnode('4') |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2288 self.assertEqual(ls(n.nosy_issues), ['1', '6']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2289 # Now retire some linked-to issues and retry |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2290 self.db.issue.retire('2') |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2291 self.db.issue.retire('6') |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2292 self.db.commit() |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2293 for filt in iiter(): |
|
6179
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2294 ae(filt(None, {ni: ['1', '2']}), ['4']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2295 ae(filt(None, {ni: ['6','7']}), ['5']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2296 ae(filt(None, {'nosy_issues.title': ['ts2']}), []) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2297 ae(filt(None, {ni: ['-1']}), |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2298 ['1', '2', '3', '6', '7', '8', '9', '10']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2299 ae(filt(None, {ni: '-1'}), |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2300 ['1', '2', '3', '6', '7', '8', '9', '10']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2301 self.assertEqual(ls(self.db.user.get('4', ni)), ['1']) |
|
a701c9c81597
Fix rev_multilink properties search/retrieval
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6151
diff
changeset
|
2302 self.assertEqual(ls(self.db.user.get('5', ni)), ['7']) |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
2303 |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2304 def testFilteringRevMultilinkQ2(self): |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2305 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2306 ni = 'nosy_issues' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2307 nis = 'nosy_issues.status' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2308 self.db.issue.set('6', nosy=['3', '4', '5']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2309 self.db.issue.set('7', nosy=['5']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2310 self.db.commit() |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2311 # After this setup we have the following values for nosy: |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2312 # The issues '1', '3', '5', '7' have status '2' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2313 # issue nosy |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2314 # 1: 4 |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2315 # 2: 5 |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2316 # 3: |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2317 # 4: |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2318 # 5: |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2319 # 6: 3, 4, 5 |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2320 # 7: 5 |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2321 # 8: |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2322 for filt in iiter(): |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2323 # status of issue is '2' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2324 ae(filt(None, {nis: ['2']}), |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2325 ['4', '5']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2326 # Issue non-empty and status of issue is '2' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2327 ae(filt(None, {nis: ['2'], ni:['-1', '-2']}), |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2328 ['4', '5']) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2329 # empty and status '2' |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2330 # This is the test-case for issue2551119 |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2331 ae(filt(None, {nis: ['2'], ni:['-1']}), []) |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
2332 |
|
6397
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2333 def testFilteringRevMultilinkExpression(self): |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2334 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2335 ni = 'nosy_issues' |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2336 self.db.issue.set('6', nosy=['3', '4', '5']) |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2337 self.db.issue.set('7', nosy=['5']) |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2338 # After this setup we have the following values for nosy: |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2339 # issue nosy |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2340 # 1: 4 |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2341 # 2: 5 |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2342 # 3: |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2343 # 4: |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2344 # 5: |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2345 # 6: 3, 4, 5 |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2346 # 7: 5 |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2347 # 8: |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2348 # Retire users '9' and '10' to reduce list |
|
6402
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2349 self.db.user.retire('9') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2350 self.db.user.retire('10') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2351 self.db.commit() |
|
6397
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2352 for filt in iiter(): |
|
6402
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2353 # not empty |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2354 ae(filt(None, {ni: ['-1', '-2']}), ['3', '4', '5']) |
|
6397
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2355 # '1' or '2' |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2356 ae(filt(None, {ni: ['1', '2', '-4']}), ['4', '5']) |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2357 # '6' or '7' |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2358 ae(filt(None, {ni: ['6', '7', '-4']}), ['3', '4', '5']) |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2359 # '6' and '7' |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2360 ae(filt(None, {ni: ['6', '7', '-3']}), ['5']) |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2361 # '6' and not '1' |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2362 ae(filt(None, {ni: ['6', '1', '-2', '-3']}), ['3', '5']) |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2363 # '2' or empty (implicit or) |
|
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2364 ae(filt(None, {ni: ['-1', '2']}), ['1', '2', '5', '6', '7', '8']) |
|
6399
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2365 # '2' or empty (explicit or) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2366 ae(filt(None, {ni: ['-1', '2', '-4']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2367 ['1', '2', '5', '6', '7', '8']) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2368 # empty or '2' (explicit or) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2369 ae(filt(None, {ni: ['2', '-1', '-4']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2370 ['1', '2', '5', '6', '7', '8']) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2371 # '2' and empty (should always return empty list) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2372 ae(filt(None, {ni: ['-1', '2', '-3']}), []) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2373 # empty and '2' (should always return empty list) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2374 ae(filt(None, {ni: ['2', '-1', '-3']}), []) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2375 # ('4' and empty) or ('2' or empty) |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2376 ae(filt(None, {ni: ['4', '-1', '-3', '2', '-1', '-4', '-4']}), |
|
f3fcd6628c0c
Allow '-1' (empty) in multilink expression
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6397
diff
changeset
|
2377 ['1', '2', '5', '6', '7', '8']) |
|
6402
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2378 # Retire issues 2, 6 and retry |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2379 self.db.issue.retire('2') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2380 self.db.issue.retire('6') |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2381 self.db.commit() |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2382 # After this setup we have the following values for nosy: |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2383 # issue nosy |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2384 # 1: 4 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2385 # 3: |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2386 # 4: |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2387 # 5: |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2388 # 7: 5 |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2389 # 8: |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2390 for filt in iiter(): |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2391 # not empty |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2392 ae(filt(None, {ni: ['-1', '-2']}), ['4', '5']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2393 # '1' or '2' (implicit) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2394 ae(filt(None, {ni: ['1', '2']}), ['4']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2395 # '1' or '2' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2396 ae(filt(None, {ni: ['1', '2', '-4']}), ['4']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2397 # '6' or '7' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2398 ae(filt(None, {ni: ['6', '7', '-4']}), ['5']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2399 # '6' and '7' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2400 ae(filt(None, {ni: ['6', '7', '-3']}), []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2401 # '6' and not '1' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2402 ae(filt(None, {ni: ['6', '1', '-2', '-3']}), []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2403 # not '1' |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2404 ae(filt(None, {ni: ['1', '-2']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2405 ['1', '2', '3', '5', '6', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2406 # '2' or empty (implicit or) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2407 ae(filt(None, {ni: ['-1', '2']}), ['1', '2', '3', '6', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2408 # '2' or empty (explicit or) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2409 ae(filt(None, {ni: ['-1', '2', '-4']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2410 ['1', '2', '3', '6', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2411 # empty or '2' (explicit or) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2412 ae(filt(None, {ni: ['2', '-1', '-4']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2413 ['1', '2', '3', '6', '7', '8']) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2414 # '2' and empty (should always return empty list) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2415 ae(filt(None, {ni: ['-1', '2', '-3']}), []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2416 # empty and '2' (should always return empty list) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2417 ae(filt(None, {ni: ['2', '-1', '-3']}), []) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2418 # ('4' and empty) or ('2' or empty) |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2419 ae(filt(None, {ni: ['4', '-1', '-3', '2', '-1', '-4', '-4']}), |
|
619807d9a2df
Make rev multilink for Link work
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6401
diff
changeset
|
2420 ['1', '2', '3', '6', '7', '8']) |
|
6397
1361e07f5b24
Add test for rev multilink expressions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6396
diff
changeset
|
2421 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2422 def testFilteringMany(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2423 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2424 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2425 ae(f(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2426 ['3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2427 |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2428 def testFilteringRangeBasic(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2429 ae, iiter = self.filteringSetup() |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2430 d = 'deadline' |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2431 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2432 ae(f(None, {d: 'from 2003-02-10 to 2003-02-23'}), ['1','3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2433 ae(f(None, {d: '2003-02-10; 2003-02-23'}), ['1','3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2434 ae(f(None, {d: '; 2003-02-16'}), ['2']) |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2435 |
|
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2436 def testFilteringRangeTwoSyntaxes(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2437 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2438 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2439 ae(filt(None, {'deadline': 'from 2003-02-16'}), ['1', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2440 ae(filt(None, {'deadline': '2003-02-16;'}), ['1', '3', '4']) |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2441 |
|
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2442 def testFilteringRangeYearMonthDay(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2443 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2444 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2445 ae(filt(None, {'deadline': '2002'}), []) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2446 ae(filt(None, {'deadline': '2003'}), ['1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2447 ae(filt(None, {'deadline': '2004'}), ['4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2448 ae(filt(None, {'deadline': '2003-02-16'}), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2449 ae(filt(None, {'deadline': '2003-02-17'}), []) |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2450 |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
2451 def testFilteringRangeMonths(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2452 ae, iiter = self.filteringSetup() |
|
3955
de6326aee6d0
Final fix for date range searching stuff: fix the test :)
Richard Jones <richard@users.sourceforge.net>
parents:
3953
diff
changeset
|
2453 for month in range(1, 13): |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
2454 for n in range(1, month+1): |
|
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
2455 i = self.db.issue.create(title='%d.%d'%(month, n), |
|
3955
de6326aee6d0
Final fix for date range searching stuff: fix the test :)
Richard Jones <richard@users.sourceforge.net>
parents:
3953
diff
changeset
|
2456 deadline=date.Date('2001-%02d-%02d.00:00'%(month, n))) |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
2457 self.db.commit() |
|
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
2458 |
|
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
2459 for month in range(1, 13): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2460 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2461 r = filt(None, dict(deadline='2001-%02d'%month)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2462 assert len(r) == month, 'month %d != length %d'%(month, len(r)) |
|
3952
c68581212cf7
add some Range testing, all of which currently fails
Richard Jones <richard@users.sourceforge.net>
parents:
3935
diff
changeset
|
2463 |
| 6118 | 2464 def testFilteringDateRangeMulti(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2465 ae, iiter = self.filteringSetup() |
| 6118 | 2466 self.db.issue.create(title='no deadline') |
| 2467 self.db.commit() | |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2468 for filt in iiter(): |
| 6118 | 2469 r = filt (None, dict(deadline='-')) |
| 2470 self.assertEqual(r, ['5']) | |
| 2471 r = filt (None, dict(deadline=';2003-02-01,2004;')) | |
| 2472 self.assertEqual(r, ['2', '4']) | |
| 2473 r = filt (None, dict(deadline='-,;2003-02-01,2004;')) | |
| 2474 self.assertEqual(r, ['2', '4', '5']) | |
| 2475 | |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2476 def testFilteringRangeInterval(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2477 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2478 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2479 ae(filt(None, {'foo': 'from 0:50 to 2:00'}), ['1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2480 ae(filt(None, {'foo': 'from 0:50 to 1d 2:00'}), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2481 ae(filt(None, {'foo': 'from 5:50'}), ['2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2482 ae(filt(None, {'foo': 'to 0:05'}), []) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2483 |
|
3746
5cde43526788
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
3743
diff
changeset
|
2484 def testFilteringRangeGeekInterval(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2485 ae, iiter = self.filteringSetup() |
| 4876 | 2486 # Note: When querying, create date one minute later than the |
| 2487 # timespan later queried to avoid race conditions where the | |
| 2488 # creation of the deadline is more than a second ago when | |
| 2489 # queried -- in that case we wouldn't get the expected result. | |
| 2490 # By extending the interval by a minute we would need a very | |
| 2491 # slow machine for this test to fail :-) | |
|
3586
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
2492 for issue in ( |
| 4876 | 2493 { 'deadline': date.Date('. -2d') + date.Interval ('00:01')}, |
| 2494 { 'deadline': date.Date('. -1d') + date.Interval ('00:01')}, | |
| 2495 { 'deadline': date.Date('. -8d') + date.Interval ('00:01')}, | |
|
3586
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
2496 ): |
|
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
2497 self.db.issue.create(**issue) |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2498 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2499 ae(filt(None, {'deadline': '-2d;'}), ['5', '6']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2500 ae(filt(None, {'deadline': '-1d;'}), ['6']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2501 ae(filt(None, {'deadline': '-1w;'}), ['5', '6']) |
| 4876 | 2502 ae(filt(None, {'deadline': '. -2d;'}), ['5', '6']) |
| 2503 ae(filt(None, {'deadline': '. -1d;'}), ['6']) | |
| 2504 ae(filt(None, {'deadline': '. -1w;'}), ['5', '6']) | |
|
3586
f47bddab5a49
date spec wasn't allowing week intervals
Richard Jones <richard@users.sourceforge.net>
parents:
3554
diff
changeset
|
2505 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2506 def testFilteringIntervalSort(self): |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2507 # 1: '1:10' |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2508 # 2: '1d' |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2509 # 3: None |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2510 # 4: '0:10' |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2511 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2512 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2513 # ascending should sort None, 1:10, 1d |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2514 ae(filt(None, {}, ('+','foo'), (None,None)), ['3', '4', '1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2515 # descending should sort 1d, 1:10, None |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2516 ae(filt(None, {}, ('-','foo'), (None,None)), ['2', '1', '4', '3']) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2517 |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2518 def testFilteringStringSort(self): |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2519 # 1: 'issue one' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2520 # 2: 'issue two' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2521 # 3: 'issue three' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2522 # 4: 'non four' |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2523 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2524 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2525 ae(filt(None, {}, ('+','title')), ['1', '3', '2', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2526 ae(filt(None, {}, ('-','title')), ['4', '2', '3', '1']) |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2527 # Test string case: For now allow both, w/wo case matching. |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2528 # 1: 'issue one' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2529 # 2: 'issue two' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2530 # 3: 'Issue three' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2531 # 4: 'non four' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2532 self.db.issue.set('3', title='Issue three') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2533 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2534 ae(filt(None, {}, ('+','title')), ['1', '3', '2', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2535 ae(filt(None, {}, ('-','title')), ['4', '2', '3', '1']) |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2536 # Obscure bug in anydbm backend trying to convert to number |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2537 # 1: '1st issue' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2538 # 2: '2' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2539 # 3: 'Issue three' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2540 # 4: 'non four' |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2541 self.db.issue.set('1', title='1st issue') |
|
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2542 self.db.issue.set('2', title='2') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2543 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2544 ae(filt(None, {}, ('+','title')), ['1', '2', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2545 ae(filt(None, {}, ('-','title')), ['4', '3', '2', '1']) |
|
3681
b9301ae1c34d
Added a test case for string comparison:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3675
diff
changeset
|
2546 |
|
2185
c52a931879c4
sort/group by multilink in RDBMS
Richard Jones <richard@users.sourceforge.net>
parents:
2102
diff
changeset
|
2547 def testFilteringMultilinkSort(self): |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2548 # 1: [] Reverse: 1: [] |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2549 # 2: [] 2: [] |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
2550 # 3: ['admin','fred'] 3: ['fred','admin'] |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2551 # 4: ['admin','bleep','fred'] 4: ['fred','bleep','admin'] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2552 # Note the sort order for the multilink doen't change when |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2553 # reversing the sort direction due to the re-sorting of the |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2554 # multilink! |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2555 # Note that we don't test filter_iter here, Multilink sort-order |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2556 # isn't defined for that. |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2557 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2558 for filt in iiter(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2559 if filt.__name__ != 'filter': |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2560 continue |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2561 ae(filt(None, {}, ('+','nosy'), (None,None)), ['1', '2', '4', '3']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2562 ae(filt(None, {}, ('-','nosy'), (None,None)), ['4', '3', '1', '2']) |
|
2185
c52a931879c4
sort/group by multilink in RDBMS
Richard Jones <richard@users.sourceforge.net>
parents:
2102
diff
changeset
|
2563 |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2564 def testFilteringMultilinkSortGroup(self): |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2565 # 1: status: 2 "in-progress" nosy: [] |
|
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2566 # 2: status: 1 "unread" nosy: [] |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2567 # 3: status: 1 "unread" nosy: ['admin','fred'] |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2568 # 4: status: 3 "testing" nosy: ['admin','bleep','fred'] |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2569 # Note that we don't test filter_iter here, Multilink sort-order |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2570 # isn't defined for that. |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2571 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2572 for filt in iiter(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2573 if filt.__name__ != 'filter': |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2574 continue |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2575 ae(filt(None, {}, ('+','nosy'), ('+','status')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2576 ['1', '4', '2', '3']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2577 ae(filt(None, {}, ('-','nosy'), ('+','status')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2578 ['1', '4', '3', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2579 ae(filt(None, {}, ('+','nosy'), ('-','status')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2580 ['2', '3', '4', '1']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2581 ae(filt(None, {}, ('-','nosy'), ('-','status')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2582 ['3', '2', '4', '1']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2583 ae(filt(None, {}, ('+','status'), ('+','nosy')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2584 ['1', '2', '4', '3']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2585 ae(filt(None, {}, ('-','status'), ('+','nosy')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2586 ['2', '1', '4', '3']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2587 ae(filt(None, {}, ('+','status'), ('-','nosy')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2588 ['4', '3', '1', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2589 ae(filt(None, {}, ('-','status'), ('-','nosy')), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2590 ['4', '3', '2', '1']) |
|
3675
f3785d646f22
Added two new tests:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3636
diff
changeset
|
2591 |
|
3525
7be25d75c3d5
Fixed SQL generation for sort/group by separate Link properties [SF#1417565]
Richard Jones <richard@users.sourceforge.net>
parents:
3486
diff
changeset
|
2592 def testFilteringLinkSortGroup(self): |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2593 # 1: status: 2 -> 'i', priority: 3 -> 1 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2594 # 2: status: 1 -> 'u', priority: 3 -> 1 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2595 # 3: status: 1 -> 'u', priority: 2 -> 3 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2596 # 4: status: 3 -> 't', priority: 2 -> 3 |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2597 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2598 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2599 ae(filt(None, {}, ('+','status'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2600 ['1', '2', '4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2601 ae(filt(None, {'priority':'2'}, ('+','status'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2602 ['4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2603 ae(filt(None, {'priority.order':'3'}, ('+','status'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2604 ('+','priority')), ['4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2605 ae(filt(None, {'priority':['2','3']}, ('+','priority'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2606 ('+','status')), ['1', '4', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2607 ae(filt(None, {}, ('+','priority'), ('+','status')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2608 ['1', '4', '2', '3']) |
|
3525
7be25d75c3d5
Fixed SQL generation for sort/group by separate Link properties [SF#1417565]
Richard Jones <richard@users.sourceforge.net>
parents:
3486
diff
changeset
|
2609 |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2610 def testFilteringDateSort(self): |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
2611 # '1': '2003-02-16.22:50' |
|
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
2612 # '2': '2003-01-01.00:00' |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2613 # '3': '2003-02-18' |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2614 # '4': '2004-03-08' |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2615 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2616 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2617 # ascending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2618 ae(f(None, {}, ('+','deadline'), (None,None)), ['2', '1', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2619 # descending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2620 ae(f(None, {}, ('-','deadline'), (None,None)), ['4', '3', '1', '2']) |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2621 |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2622 def testFilteringDateSortPriorityGroup(self): |
|
2603
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
2623 # '1': '2003-02-16.22:50' 1 => 2 |
|
5ccd99777869
fix metakit handling of filter on Link==None; fix some unit tests
Richard Jones <richard@users.sourceforge.net>
parents:
2602
diff
changeset
|
2624 # '2': '2003-01-01.00:00' 3 => 1 |
|
2318
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2625 # '3': '2003-02-18' 2 => 3 |
|
fa2f7ba34399
merge from maint-0-7
Richard Jones <richard@users.sourceforge.net>
parents:
2255
diff
changeset
|
2626 # '4': '2004-03-08' 1 => 2 |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2627 ae, iiter = self.filteringSetup() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2628 |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2629 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2630 # ascending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2631 ae(filt(None, {}, ('+','deadline'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2632 ['2', '1', '3', '4']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2633 ae(filt(None, {}, ('-','deadline'), ('+','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2634 ['1', '2', '4', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2635 # descending |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2636 ae(filt(None, {}, ('+','deadline'), ('-','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2637 ['3', '4', '2', '1']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2638 ae(filt(None, {}, ('-','deadline'), ('-','priority')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2639 ['4', '3', '1', '2']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2640 |
|
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2641 def testFilteringTransitiveLinkUser(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2642 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2643 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2644 ae(f(None, {'supervisor.username': 'ceo'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2645 ['4', '5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2646 ae(f(None, {'supervisor.supervisor.username': 'ceo'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2647 ('+','username')), ['6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2648 ae(f(None, {'supervisor.supervisor': '3'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2649 ['6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2650 ae(f(None, {'supervisor.supervisor.id': '3'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2651 ['6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2652 ae(f(None, {'supervisor.username': 'grouplead1'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2653 ['6', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2654 ae(f(None, {'supervisor.username': 'grouplead2'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2655 ['8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2656 ae(f(None, {'supervisor.username': 'grouplead2', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2657 'supervisor.supervisor.username': 'ceo'}, ('+','username')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2658 ['8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2659 ae(f(None, {'supervisor.supervisor': '3', 'supervisor': '4'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2660 ('+','username')), ['6', '7']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2661 |
|
5869
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2662 def testFilteringTransitiveLinkUserLimit(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2663 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2664 for f in iiter(): |
|
5869
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2665 ae(f(None, {'supervisor.username': 'ceo'}, ('+','username'), |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2666 limit=1), ['4']) |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2667 ae(f(None, {'supervisor.supervisor.username': 'ceo'}, |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2668 ('+','username'), limit=4), ['6', '7', '8', '9']) |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2669 ae(f(None, {'supervisor.supervisor': '3'}, ('+','username'), |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2670 limit=2, offset=2), ['8', '9']) |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2671 ae(f(None, {'supervisor.supervisor.id': '3'}, ('+','username'), |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2672 limit=3, offset=1), ['7', '8', '9']) |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2673 ae(f(None, {'supervisor.username': 'grouplead2'}, ('+','username'), |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2674 limit=2, offset=2), ['10']) |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2675 ae(f(None, {'supervisor.username': 'grouplead2', |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2676 'supervisor.supervisor.username': 'ceo'}, ('+','username'), |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2677 limit=4, offset=3), []) |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2678 ae(f(None, {'supervisor.supervisor': '3', 'supervisor': '4'}, |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2679 ('+','username'), limit=1, offset=5), []) |
|
16e1255b16cf
Implement limit and offset for filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5867
diff
changeset
|
2680 |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2681 def testFilteringTransitiveLinkSort(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2682 ae, iiter = self.filteringSetupTransitiveSearch() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2683 ae, uiter = self.iterSetup('user') |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2684 # Need to make ceo his own (and first two users') supervisor, |
|
3685
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2685 # otherwise we will depend on sorting order of NULL values. |
|
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2686 # Leave that to a separate test. |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2687 self.db.user.set('1', supervisor = '3') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2688 self.db.user.set('2', supervisor = '3') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2689 self.db.user.set('3', supervisor = '3') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2690 for ufilt in uiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2691 ae(ufilt(None, {'supervisor':'3'}, []), ['1', '2', '3', '4', '5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2692 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2693 ('+','supervisor.supervisor'), ('+','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2694 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2695 ['1', '3', '2', '4', '5', '6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2696 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2697 ('-','supervisor.supervisor'), ('-','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2698 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2699 ['8', '9', '10', '6', '7', '1', '3', '2', '4', '5']) |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2700 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2701 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2702 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2703 ('+','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2704 ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2705 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2706 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2707 ('-','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2708 ['4', '5', '6', '7', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2709 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2710 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2711 ('+','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2712 ('-','status')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2713 ['2', '1', '3', '4', '5', '6', '8', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2714 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2715 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2716 ('+','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2717 ('+','status')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2718 ['1', '2', '3', '4', '5', '7', '6', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2719 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2720 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2721 ('-','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2722 ('+','status')]), ['4', '5', '7', '6', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2723 ae(f(None, {'assignedto':['6','7','8','9','10']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2724 [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2725 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2726 ('-','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2727 ('+','status')]), ['4', '5', '7', '6', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2728 ae(f(None, {'assignedto':['6','7','8','9']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2729 [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2730 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2731 ('-','assignedto.supervisor'), ('+','assignedto'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2732 ('+','status')]), ['4', '5', '1', '2', '3']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2733 |
|
3685
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2734 def testFilteringTransitiveLinkSortNull(self): |
|
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2735 """Check sorting of NULL values""" |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2736 ae, iiter = self.filteringSetupTransitiveSearch() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2737 ae, uiter = self.iterSetup('user') |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2738 for ufilt in uiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2739 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2740 ('+','supervisor.supervisor'), ('+','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2741 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2742 ['1', '3', '2', '4', '5', '6', '7', '8', '9', '10']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2743 ae(ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2744 ('-','supervisor.supervisor'), ('-','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2745 ('+','username')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2746 ['8', '9', '10', '6', '7', '4', '5', '1', '3', '2']) |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2747 for f in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2748 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2749 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2750 ('+','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2751 ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2752 ae(f(None, {}, [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2753 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2754 ('-','assignedto.supervisor'), ('+','assignedto')]), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2755 ['4', '5', '6', '7', '8', '1', '2', '3']) |
|
3685
4d9adb8bc3b1
Null-value sorting fixes:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3684
diff
changeset
|
2756 |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2757 def testFilteringTransitiveLinkIssue(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2758 ae, iiter = self.filteringSetupTransitiveSearch() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2759 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2760 ae(filt(None, {'assignedto.supervisor.username': 'grouplead1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2761 ('+','id')), ['1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2762 ae(filt(None, {'assignedto.supervisor.username': 'grouplead2'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2763 ('+','id')), ['4', '5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2764 ae(filt(None, {'assignedto.supervisor.username': 'grouplead2', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2765 'status': '1'}, ('+','id')), ['4', '6', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2766 ae(filt(None, {'assignedto.supervisor.username': 'grouplead2', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2767 'status': '2'}, ('+','id')), ['5', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2768 ae(filt(None, {'assignedto.supervisor.username': ['grouplead2'], |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2769 'status': '2'}, ('+','id')), ['5', '7']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2770 ae(filt(None, {'assignedto.supervisor': ['4', '5'], 'status': '2'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2771 ('+','id')), ['1', '3', '5', '7']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2772 |
|
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2773 def testFilteringTransitiveMultilink(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2774 ae, iiter = self.filteringSetupTransitiveSearch() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2775 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2776 ae(filt(None, {'messages.author.username': 'grouplead1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2777 ('+','id')), []) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2778 ae(filt(None, {'messages.author': '6'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2779 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2780 ae(filt(None, {'messages.author.id': '6'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2781 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2782 ae(filt(None, {'messages.author.username': 'worker1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2783 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2784 ae(filt(None, {'messages.author': '10'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2785 ('+','id')), ['6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2786 ae(filt(None, {'messages.author': '9'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2787 ('+','id')), ['5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2788 ae(filt(None, {'messages.author': ['9', '10']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2789 ('+','id')), ['5', '6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2790 ae(filt(None, {'messages.author': ['8', '9']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2791 ('+','id')), ['4', '5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2792 ae(filt(None, {'messages.author': ['8', '9'], 'status' : '1'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2793 ('+','id')), ['4', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2794 ae(filt(None, {'messages.author': ['8', '9'], 'status' : '2'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2795 ('+','id')), ['5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2796 ae(filt(None, {'messages.author': ['8', '9', '10'], |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2797 'messages.date': '2006-01-22.21:00;2006-01-23'}, ('+','id')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2798 ['6', '7', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2799 ae(filt(None, {'nosy.supervisor.username': 'ceo'}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2800 ('+','id')), ['1', '2']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2801 ae(filt(None, {'messages.author': ['6', '9']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2802 ('+','id')), ['1', '2', '5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2803 ae(filt(None, {'messages': ['5', '7']}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2804 ('+','id')), ['3', '5', '8']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2805 ae(filt(None, {'messages.author': ['6', '9'], |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2806 'messages': ['5', '7']}, ('+','id')), ['5', '8']) |
|
3634
57c66056ffe4
Implemented what I'll call for now "transitive searching"...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3601
diff
changeset
|
2807 |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2808 def testFilteringTransitiveMultilinkSort(self): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2809 # Note that we don't test filter_iter here, Multilink sort-order |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2810 # isn't defined for that. |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2811 ae, iiter = self.filteringSetupTransitiveSearch() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2812 for filt in iiter(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2813 if filt.__name__ != 'filter': |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2814 continue |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2815 ae(filt(None, {}, [('+','messages.author')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2816 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2817 ae(filt(None, {}, [('-','messages.author')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2818 ['8', '6', '7', '5', '4', '3', '1', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2819 ae(filt(None, {}, [('+','messages.date')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2820 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2821 ae(filt(None, {}, [('-','messages.date')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2822 ['1', '2', '3', '4', '8', '5', '6', '7']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2823 ae(filt(None, {}, [('+','messages.author'),('+','messages.date')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2824 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2825 ae(filt(None, {}, [('-','messages.author'),('+','messages.date')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2826 ['8', '6', '7', '5', '4', '3', '1', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2827 ae(filt(None, {}, [('+','messages.author'),('-','messages.date')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2828 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2829 ae(filt(None, {}, [('-','messages.author'),('-','messages.date')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2830 ['8', '6', '7', '5', '4', '3', '1', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2831 ae(filt(None, {}, [('+','messages.author'),('+','assignedto')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2832 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2833 ae(filt(None, {}, [('+','messages.author'), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2834 ('-','assignedto.supervisor'),('-','assignedto')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2835 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2836 ae(filt(None, {}, |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2837 [('+','messages.author.supervisor.supervisor.supervisor'), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2838 ('+','messages.author.supervisor.supervisor'), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2839 ('+','messages.author.supervisor'), ('+','messages.author')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2840 ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2841 self.db.user.setorderprop('age') |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2842 self.db.msg.setorderprop('date') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2843 for filt in iiter(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2844 if filt.__name__ != 'filter': |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2845 continue |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2846 ae(filt(None, {}, [('+','messages'), ('+','messages.author')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2847 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2848 ae(filt(None, {}, [('+','messages.author'), ('+','messages')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2849 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2850 self.db.msg.setorderprop('author') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2851 for filt in iiter(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2852 if filt.__name__ != 'filter': |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2853 continue |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2854 # Orderprop is a Link/Multilink: |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2855 # messages are sorted by orderprop().labelprop(), i.e. by |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2856 # author.username, *not* by author.orderprop() (author.age)! |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2857 ae(filt(None, {}, [('+','messages')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2858 ['1', '2', '3', '4', '5', '8', '6', '7']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2859 ae(filt(None, {}, [('+','messages.author'), ('+','messages')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2860 ['6', '7', '8', '5', '4', '3', '1', '2']) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2861 # The following will sort by |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2862 # author.supervisor.username and then by |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2863 # author.username |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2864 # I've resited the tempation to implement recursive orderprop |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2865 # here: There could even be loops if several classes specify a |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2866 # Link or Multilink as the orderprop... |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2867 # msg: 4: worker1 (id 5) : grouplead1 (id 4) ceo (id 3) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2868 # msg: 5: worker2 (id 7) : grouplead1 (id 4) ceo (id 3) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2869 # msg: 6: worker3 (id 8) : grouplead2 (id 5) ceo (id 3) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2870 # msg: 7: worker4 (id 9) : grouplead2 (id 5) ceo (id 3) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2871 # msg: 8: worker5 (id 10) : grouplead2 (id 5) ceo (id 3) |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2872 # issue 1: messages 4 sortkey:[[grouplead1], [worker1], 1] |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2873 # issue 2: messages 4 sortkey:[[grouplead1], [worker1], 2] |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2874 # issue 3: messages 5 sortkey:[[grouplead1], [worker2], 3] |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2875 # issue 4: messages 6 sortkey:[[grouplead2], [worker3], 4] |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2876 # issue 5: messages 7 sortkey:[[grouplead2], [worker4], 5] |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2877 # issue 6: messages 8 sortkey:[[grouplead2], [worker5], 6] |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2878 # issue 7: messages 8 sortkey:[[grouplead2], [worker5], 7] |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2879 # issue 8: messages 7,8 sortkey:[[grouplead2, grouplead2], ...] |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2880 self.db.user.setorderprop('supervisor') |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2881 for filt in iiter(): |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2882 if filt.__name__ != 'filter': |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2883 continue |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2884 ae(filt(None, {}, [('+','messages.author'), ('-','messages')]), |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2885 ['3', '1', '2', '6', '7', '5', '4', '8']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2886 |
|
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2887 def testFilteringSortId(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2888 ae, iiter = self.filteringSetupTransitiveSearch('user') |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2889 for filt in iiter(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2890 ae(filt(None, {}, ('+','id')), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
2891 ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']) |
|
3682
193f316dbbe9
More transitive-property support.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3681
diff
changeset
|
2892 |
|
5318
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2893 def testFilteringRetiredString(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2894 ae, iiter = self.filteringSetup() |
|
5318
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2895 self.db.issue.retire('1') |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2896 self.db.commit() |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2897 r = { None: (['1'], ['1'], ['1'], ['1', '2', '3'], []) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2898 , True: (['1'], ['1'], ['1'], ['1'], []) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2899 , False: ([], [], [], ['2', '3'], []) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2900 } |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2901 for filt in iiter(): |
|
5318
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2902 for retire in True, False, None: |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2903 ae(filt(None, {'title': ['one']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2904 retired=retire), r[retire][0]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2905 ae(filt(None, {'title': ['issue one']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2906 retired=retire), r[retire][1]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2907 ae(filt(None, {'title': ['issue', 'one']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2908 retired=retire), r[retire][2]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2909 ae(filt(None, {'title': ['issue']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2910 retired=retire), r[retire][3]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2911 ae(filt(None, {'title': ['one', 'two']}, ('+','id'), |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2912 retired=retire), r[retire][4]) |
|
506c7ee9a385
Add a 'retired' parameter to Class.filter
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5317
diff
changeset
|
2913 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2914 # XXX add sorting tests for other types |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
2915 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2916 # nuke and re-create db for restore |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2917 def nukeAndCreate(self): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2918 # shut down this db and nuke it |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2919 self.db.close() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2920 self.nuke_database() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2921 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2922 # open a new, empty database |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2923 os.makedirs(config.DATABASE + '/files') |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2924 self.db = self.module.Database(config, 'admin') |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2925 setupSchema(self.db, 0, self.module) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
2926 |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2927 def testImportExport(self): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2928 # use the filtering setup to create a bunch of items |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
2929 ae, dummy = self.filteringSetup() |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2930 # Get some stuff into the journal for testing import/export of |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2931 # journal data: |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2932 self.db.user.set('4', password = password.Password('xyzzy')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2933 self.db.user.set('4', age = 3) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2934 self.db.user.set('4', assignable = True) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2935 self.db.issue.set('1', title = 'i1', status = '3') |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2936 self.db.issue.set('1', deadline = date.Date('2007')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2937 self.db.issue.set('1', foo = date.Interval('1:20')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2938 p = self.db.priority.create(name = 'some_prio_without_order') |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2939 self.db.commit() |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2940 self.db.user.set('4', password = password.Password('123xyzzy')) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2941 self.db.user.set('4', assignable = False) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2942 self.db.priority.set(p, order = '4711') |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2943 self.db.commit() |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2944 |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2945 self.db.user.retire('3') |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2946 self.db.issue.retire('2') |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2947 |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2948 # Key fields must be unique. There can only be one unretired |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2949 # object with a given key value. When importing verify that |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2950 # having the unretired object with a key value before a retired |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2951 # object with the same key value is handled properly. |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2952 |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2953 # Since the order of the exported objects is not consistant |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2954 # across backends, we sort the objects by id (as an int) and |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2955 # make sure that the active (non-retired) entry sorts before |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2956 # the retired entry. |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2957 active_dupe_id = self.db.user.create(username="duplicate", |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2958 roles='User', |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2959 password=password.Password('sekrit'), address='dupe1@example.com') |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2960 self.db.user.retire(active_dupe_id) # allow us to create second dupe |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2961 |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2962 retired_dupe_id = self.db.user.create(username="duplicate", |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2963 roles='User', |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2964 password=password.Password('sekrit'), address='dupe2@example.com') |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2965 self.db.user.retire(retired_dupe_id) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2966 self.db.user.restore(active_dupe_id) # unretire lower numbered id |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2967 self.db.commit() |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2968 |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2969 # grab snapshot of the current database |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2970 orig = {} |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2971 origj = {} |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2972 for cn,klass in self.db.classes.items(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2973 cl = orig[cn] = {} |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2974 jn = origj[cn] = {} |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2975 for id in klass.list(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2976 it = cl[id] = {} |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
2977 jn[id] = self.db.getjournal(cn, id) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2978 for name in klass.getprops().keys(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2979 it[name] = klass.get(id, name) |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
2980 |
| 2496 | 2981 os.mkdir('_test_export') |
| 2982 try: | |
| 2983 # grab the export | |
| 2984 export = {} | |
| 2985 journals = {} | |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2986 active_dupe_id_first = -1 # -1 unknown, False or True |
| 2496 | 2987 for cn,klass in self.db.classes.items(): |
| 2988 names = klass.export_propnames() | |
| 2989 cl = export[cn] = [names+['is retired']] | |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2990 classname = klass.classname |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2991 nodeids = klass.getnodeids() |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2992 # sort to enforce retired/unretired order |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2993 nodeids.sort(key=int) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2994 for id in nodeids: |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2995 if (classname == 'user' and |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2996 id == retired_dupe_id and |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2997 active_dupe_id_first == -1): |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2998 active_dupe_id_first = False |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
2999 if (classname == 'user' and |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3000 id == active_dupe_id and |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3001 active_dupe_id_first == -1): |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3002 active_dupe_id_first = True |
| 2496 | 3003 cl.append(klass.export_list(names, id)) |
| 3004 if hasattr(klass, 'export_files'): | |
| 3005 klass.export_files('_test_export', id) | |
| 3006 journals[cn] = klass.export_journals() | |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3007 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3008 self.nukeAndCreate() |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3009 |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3010 if not active_dupe_id_first: |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3011 # verify that the test is configured properly to |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3012 # trigger the exception code to handle uniqueness |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3013 # failure. |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3014 self.fail("Setup failure: active user id not first.") |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3015 |
| 2496 | 3016 # import |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3017 with self._caplog.at_level(logging.INFO, |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3018 logger="roundup.hyperdb.backend"): |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3019 # not supported in python2, so use caplog rather than len(log) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3020 # X in log[0] ... |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3021 # with self.assertLogs('roundup.hyperdb.backend', |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3022 # level="INFO") as log: |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3023 for cn, items in export.items(): |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3024 klass = self.db.classes[cn] |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3025 names = items[0] |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3026 maxid = 1 |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3027 for itemprops in items[1:]: |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3028 id = int(klass.import_list(names, itemprops)) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3029 if hasattr(klass, 'import_files'): |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3030 klass.import_files('_test_export', str(id)) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3031 maxid = max(maxid, id) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3032 self.db.setid(cn, str(maxid+1)) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3033 klass.import_journals(journals[cn]) |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3034 |
|
6432
97a45bfa62a8
issue2551142 - Import of retired node ... fails with unique constraint
John Rouillard <rouilj@ieee.org>
parents:
6431
diff
changeset
|
3035 if self.db.dbtype not in ['anydbm', 'memorydb']: |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3036 # no logs or fixup needed under anydbm |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
3037 # postgres requires commits and rollbacks |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
3038 # as part of error recovery, so we get commit |
|
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
3039 # logging that we need to account for |
|
6434
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3040 log = [] |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
3041 if self.db.dbtype == 'postgres': |
|
6434
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3042 # remove commit and rollback log messages |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3043 # so the indexes below work correctly. |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3044 for i in range(0,len(self._caplog.record_tuples)): |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3045 if self._caplog.record_tuples[i][2] not in \ |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3046 ["commit", "rollback"]: |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3047 log.append(self._caplog.record_tuples[i]) |
|
6433
c1d3fbcdbfbd
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6432
diff
changeset
|
3048 else: |
|
6434
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3049 log = self._caplog.record_tuples[:] |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3050 |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3051 log_count=2 |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3052 handle_msg_location=0 |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3053 success_msg_location = handle_msg_location+1 |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3054 |
|
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3055 self.assertEqual(log_count, len(log)) |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3056 self.assertIn('Attempting to handle import exception for id 7:', |
|
6434
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3057 log[handle_msg_location][2]) |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3058 self.assertIn('Successfully handled import exception for id 7 ' |
|
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3059 'which conflicted with 6', |
|
6434
269f39e28d5c
issue2551142 - Import of retired node ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6433
diff
changeset
|
3060 log[success_msg_location][2]) |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3061 |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3062 # This is needed, otherwise journals won't be there for anydbm |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3063 self.db.commit() |
|
7666
027912a59f49
test: add explicit check for imported data.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
3064 |
|
027912a59f49
test: add explicit check for imported data.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
3065 self.assertEqual(self.db.user.lookup("duplicate"), active_dupe_id) |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3066 self.assertEqual(self.db.user.is_retired(retired_dupe_id), True) |
|
7666
027912a59f49
test: add explicit check for imported data.
John Rouillard <rouilj@ieee.org>
parents:
7582
diff
changeset
|
3067 |
| 2496 | 3068 finally: |
| 3069 shutil.rmtree('_test_export') | |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3070 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3071 # compare with snapshot of the database |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3072 for cn, items in orig.items(): |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3073 klass = self.db.classes[cn] |
|
2102
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3074 propdefs = klass.getprops(1) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3075 # ensure retired items are retired :) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3076 l = sorted(items.keys()) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3077 m = klass.list(); m.sort() |
|
2217
98d3bf8ffb19
store Intervals as two columns (and other fixes
Richard Jones <richard@users.sourceforge.net>
parents:
2198
diff
changeset
|
3078 ae(l, m, '%s id list wrong %r vs. %r'%(cn, l, m)) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3079 for id, props in items.items(): |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3080 for name, value in props.items(): |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
3081 l = klass.get(id, name) |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
3082 if isinstance(value, type([])): |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
3083 value.sort() |
|
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
3084 l.sort() |
|
2102
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3085 try: |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3086 ae(l, value) |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3087 except AssertionError: |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3088 if not isinstance(propdefs[name], Date): |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3089 raise |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3090 # don't get hung up on rounding errors |
|
666402433998
Fix some tests.
Richard Jones <richard@users.sourceforge.net>
parents:
2098
diff
changeset
|
3091 assert not l.__cmp__(value, int_seconds=1) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3092 for jc, items in origj.items(): |
|
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3093 for id, oj in items.items(): |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3094 rj = self.db.getjournal(jc, id) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3095 # Both mysql and postgresql have some minor issues with |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3096 # rounded seconds on export/import, so we compare only |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3097 # the integer part. |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3098 for j in oj: |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3099 j[1].second = float(int(j[1].second)) |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3100 for j in rj: |
|
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3101 j[1].second = float(int(j[1].second)) |
|
5481
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5476
diff
changeset
|
3102 oj.sort(key = NoneAndDictComparable) |
|
9a09719b0d8e
helper to allow comparing dicts and None values in Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5476
diff
changeset
|
3103 rj.sort(key = NoneAndDictComparable) |
|
3826
bf2e9535da00
Journal and database testing.
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
3822
diff
changeset
|
3104 ae(oj, rj) |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3105 |
|
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3106 # make sure the retired items are actually imported |
|
2089
93f03c6714d8
A few big changes in this commit:
Richard Jones <richard@users.sourceforge.net>
parents:
2082
diff
changeset
|
3107 ae(self.db.user.get('4', 'username'), 'blop') |
|
1920
f9316d2cd5ba
Fixed retirement of items in rdbms imports [SF#841355]
Richard Jones <richard@users.sourceforge.net>
parents:
1912
diff
changeset
|
3108 ae(self.db.issue.get('2', 'title'), 'issue two') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3109 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3110 # make sure id counters are set correctly |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3111 maxid = max([int(id) for id in self.db.user.list()]) |
|
5468
0cde8a595893
fix tests for Python 3
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5395
diff
changeset
|
3112 newid = int(self.db.user.create(username='testing')) |
|
6431
ada1edcc9132
issue2551142 - Import ... unique constraint failure.
John Rouillard <rouilj@ieee.org>
parents:
6427
diff
changeset
|
3113 self.assertGreater(newid, maxid) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3114 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3115 # test import/export via admin interface |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3116 def testAdminImportExport(self): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3117 import roundup.admin |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3118 import csv |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3119 # use the filtering setup to create a bunch of items |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
3120 ae, dummy = self.filteringSetup() |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3121 # create large field |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3122 self.db.priority.create(name = 'X' * 500) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3123 self.db.config.CSV_FIELD_SIZE = 400 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3124 self.db.commit() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3125 output = [] |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3126 # ugly hack to get stderr output and disable stdout output |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3127 # during regression test. Depends on roundup.admin not using |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3128 # anything but stdout/stderr from sys (which is currently the |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3129 # case) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3130 def stderrwrite(s): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3131 output.append(s) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3132 roundup.admin.sys = MockNull () |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3133 try: |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3134 roundup.admin.sys.stderr.write = stderrwrite |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3135 tool = roundup.admin.AdminTool() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3136 home = '.' |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3137 tool.tracker_home = home |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3138 tool.db = self.db |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3139 tool.verbose = False |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3140 tool.do_export (['_test_export']) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3141 self.assertEqual(len(output), 2) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3142 self.assertEqual(output [1], '\n') |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
3143 self.assertTrue(output [0].startswith |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3144 ('Warning: config csv_field_size should be at least')) |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
3145 self.assertTrue(int(output[0].split()[-1]) > 500) |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3146 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3147 if hasattr(roundup.admin.csv, 'field_size_limit'): |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3148 self.nukeAndCreate() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3149 self.db.config.CSV_FIELD_SIZE = 400 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3150 tool = roundup.admin.AdminTool() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3151 tool.tracker_home = home |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3152 tool.db = self.db |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3153 tool.verbose = False |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3154 self.assertRaises(csv.Error, tool.do_import, ['_test_export']) |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3155 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3156 self.nukeAndCreate() |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3157 |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3158 # make sure we have an empty db |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3159 with self.assertRaises(IndexError) as e: |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3160 # users 1 and 2 always are created on schema load. |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3161 # so don't use them. |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3162 self.db.user.getnode("5").values() |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3163 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3164 self.db.config.CSV_FIELD_SIZE = 3200 |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3165 tool = roundup.admin.AdminTool() |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3166 tool.tracker_home = home |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3167 tool.db = self.db |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3168 # Force import code to commit when more than 5 |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3169 # savepoints have been created. |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3170 tool.settings['savepoint_limit'] = 5 |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3171 tool.verbose = False |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3172 tool.do_import(['_test_export']) |
|
7668
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3173 |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3174 # verify the data is loaded. |
|
5b41018617f2
fix: out of memory error when importing under postgresql
John Rouillard <rouilj@ieee.org>
parents:
7666
diff
changeset
|
3175 self.db.user.getnode("5").values() |
|
4255
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3176 finally: |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3177 roundup.admin.sys = sys |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3178 shutil.rmtree('_test_export') |
|
88af08f8666f
New config option csv_field_size:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4102
diff
changeset
|
3179 |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3180 # test props from args parsing |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3181 def testAdminOtherCommands(self): |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3182 import roundup.admin |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3183 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3184 # use the filtering setup to create a bunch of items |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
3185 ae, dummy = self.filteringSetup() |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3186 # create large field |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3187 self.db.priority.create(name = 'X' * 500) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3188 self.db.config.CSV_FIELD_SIZE = 400 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3189 self.db.commit() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3190 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3191 eoutput = [] # stderr output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3192 soutput = [] # stdout output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3193 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3194 def stderrwrite(s): |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3195 eoutput.append(s) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3196 def stdoutwrite(s): |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3197 soutput.append(s) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3198 roundup.admin.sys = MockNull () |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3199 try: |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3200 roundup.admin.sys.stderr.write = stderrwrite |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3201 roundup.admin.sys.stdout.write = stdoutwrite |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3202 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3203 tool = roundup.admin.AdminTool() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3204 home = '.' |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3205 tool.tracker_home = home |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3206 tool.db = self.db |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3207 tool.verbose = False |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3208 tool.separator = "\n" |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3209 tool.print_designator = True |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3210 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3211 # test props_from_args |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3212 self.assertRaises(UsageError, tool.props_from_args, "fullname") # invalid propname |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3213 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3214 self.assertEqual(tool.props_from_args("="), {'': None}) # not sure this desired, I'd expect UsageError |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
3215 |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3216 props = tool.props_from_args(["fullname=robert", "friends=+rouilj,+other", "key="]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3217 self.assertEqual(props, {'fullname': 'robert', 'friends': '+rouilj,+other', 'key': None}) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3218 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3219 # test get_class() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3220 self.assertRaises(UsageError, tool.get_class, "bar") # invalid class |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3221 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3222 # This writes to stdout, need to figure out how to redirect to a variable. |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3223 # classhandle = tool.get_class("user") # valid class |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3224 # FIXME there should be some test here |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
3225 |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3226 issue_class_spec = tool.do_specification(["issue"]) |
|
5469
115efa91f7a1
only compare sorted output as order depends on implementation details
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5468
diff
changeset
|
3227 self.assertEqual(sorted (soutput), |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3228 ['assignedto: <roundup.hyperdb.Link to "user">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3229 'deadline: <roundup.hyperdb.Date>\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3230 'feedback: <roundup.hyperdb.Link to "msg">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3231 'files: <roundup.hyperdb.Multilink to "file">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3232 'foo: <roundup.hyperdb.Interval>\n', |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
3233 'keywords2: <roundup.hyperdb.Multilink to "keyword">\n', |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3234 'keywords: <roundup.hyperdb.Multilink to "keyword">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3235 'messages: <roundup.hyperdb.Multilink to "msg">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3236 'nosy: <roundup.hyperdb.Multilink to "user">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3237 'priority: <roundup.hyperdb.Link to "priority">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3238 'spam: <roundup.hyperdb.Multilink to "msg">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3239 'status: <roundup.hyperdb.Link to "status">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3240 'superseder: <roundup.hyperdb.Multilink to "issue">\n', |
|
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3241 'title: <roundup.hyperdb.String>\n']) |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3242 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3243 #userclassprop=tool.do_list(["mls"]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3244 #tool.print_designator = False |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3245 #userclassprop=tool.do_get(["realname","user1"]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3246 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3247 # test do_create |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3248 soutput[:] = [] # empty for next round of output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3249 userclass=tool.do_create(["issue", "title='title1 title'", "nosy=1,3"]) # should be issue 5 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3250 userclass=tool.do_create(["issue", "title='title2 title'", "nosy=2,3"]) # should be issue 6 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3251 self.assertEqual(soutput, ['5\n', '6\n']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3252 # verify nosy setting |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3253 props=self.db.issue.get('5', "nosy") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3254 self.assertEqual(props, ['1','3']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3255 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3256 # test do_set using newly created issues |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3257 # remove user 3 from issues |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3258 # verifies issue2550572 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3259 userclass=tool.do_set(["issue5,issue6", "nosy=-3"]) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3260 # verify proper result |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3261 props=self.db.issue.get('5', "nosy") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3262 self.assertEqual(props, ['1']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3263 props=self.db.issue.get('6', "nosy") |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3264 self.assertEqual(props, ['2']) |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3265 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3266 # basic usage test. TODO add full output verification |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3267 soutput[:] = [] # empty for next round of output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3268 tool.usage(message="Hello World") |
|
5788
28141c7dfc19
Replace depricated assertEquals with assertEqual failUnless with asserTrue.
John Rouillard <rouilj@ieee.org>
parents:
5753
diff
changeset
|
3269 self.assertTrue(soutput[0].startswith('Problem: Hello World'), None) |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3270 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3271 # check security output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3272 soutput[:] = [] # empty for next round of output |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3273 tool.do_security("Admin") |
|
6013
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3274 expected = [ 'New Web users get the Role "User"\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3275 'New Email users get the Role "User"\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3276 'Role "admin":\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3277 ' User may create everything (Create)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3278 ' User may edit everything (Edit)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3279 ' User may restore everything (Restore)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3280 ' User may retire everything (Retire)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3281 ' User may view everything (View)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3282 ' User may access the web interface (Web Access)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3283 ' User may access the rest interface (Rest Access)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3284 ' User may access the xmlrpc interface (Xmlrpc Access)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3285 ' User may manipulate user Roles through the web (Web Roles)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3286 ' User may use the email interface (Email Access)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3287 'Role "anonymous":\n', 'Role "user":\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3288 ' User is allowed to access msg (View for "msg" only)\n', |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3289 ' Prevent users from seeing roles (View for "user": [\'username\', \'supervisor\', \'assignable\'] only)\n'] |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3290 |
|
491fdb189a12
Restructure test code. Assign expected value to variable.
John Rouillard <rouilj@ieee.org>
parents:
5880
diff
changeset
|
3291 self.assertEqual(soutput, expected) |
|
5110
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3292 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3293 |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3294 self.nukeAndCreate() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3295 tool = roundup.admin.AdminTool() |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3296 tool.tracker_home = home |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3297 tool.db = self.db |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3298 tool.verbose = False |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3299 finally: |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3300 roundup.admin.sys = sys |
|
87b0358790ed
Adding some tests for admin.py. Specifically for issue2550572: setting
John Rouillard <rouilj@ieee.org>
parents:
5067
diff
changeset
|
3301 |
|
5163
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3302 |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3303 # test duplicate relative tracker home initialisation (issue2550757) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3304 def testAdminDuplicateInitialisation(self): |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3305 import roundup.admin |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3306 output = [] |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3307 def stderrwrite(s): |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3308 output.append(s) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3309 roundup.admin.sys = MockNull () |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3310 t = '_test_initialise' |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3311 try: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3312 roundup.admin.sys.stderr.write = stderrwrite |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3313 tool = roundup.admin.AdminTool() |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3314 tool.force = True |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3315 args = (None, 'classic', 'anydbm', |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3316 'MAIL_DOMAIN=%s' % config.MAIL_DOMAIN) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3317 tool.do_install(t, args=args) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3318 args = (None, 'mypasswd') |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3319 tool.do_initialise(t, args=args) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3320 tool.do_initialise(t, args=args) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3321 try: # python >=2.7 |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3322 self.assertNotIn(t, os.listdir(t)) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3323 except AttributeError: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3324 self.assertFalse('db' in os.listdir(t)) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3325 finally: |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3326 roundup.admin.sys = sys |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3327 if os.path.exists(t): |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3328 shutil.rmtree(t) |
|
6ae426092d7d
Some patches from wking to make admin.py bypass checks like nuking a
John Rouillard <rouilj@ieee.org>
parents:
5139
diff
changeset
|
3329 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3330 def testAddProperty(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3331 self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3332 self.db.commit() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3333 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3334 self.db.issue.addprop(fixer=Link("user")) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3335 # force any post-init stuff to happen |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3336 self.db.post_init() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3337 props = self.db.issue.getprops() |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3338 keys = sorted(props.keys()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
3339 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3340 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
3341 'id', 'keywords', 'keywords2', 'messages', 'nosy', 'priority', |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
3342 'spam', 'status', 'superseder', 'title']) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3343 self.assertEqual(self.db.issue.get('1', "fixer"), None) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3344 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3345 def testRemoveProperty(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3346 self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3347 self.db.commit() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3348 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3349 del self.db.issue.properties['title'] |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3350 self.db.post_init() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3351 props = self.db.issue.getprops() |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3352 keys = sorted(props.keys()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
3353 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', |
|
6394
495fd3033280
Add test for multilink expression feature
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6366
diff
changeset
|
3354 'creator', 'deadline', 'feedback', 'files', 'foo', 'id', |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
3355 'keywords', 'keywords2', 'messages', 'nosy', 'priority', 'spam', |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
3356 'status', 'superseder']) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3357 self.assertEqual(self.db.issue.list(), ['1']) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3358 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3359 def testAddRemoveProperty(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3360 self.db.issue.create(title="spam", status='1') |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3361 self.db.commit() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3362 |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3363 self.db.issue.addprop(fixer=Link("user")) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3364 del self.db.issue.properties['title'] |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3365 self.db.post_init() |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3366 props = self.db.issue.getprops() |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3367 keys = sorted(props.keys()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
3368 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', |
|
3999
953234004ba2
unit test fix for added property
Richard Jones <richard@users.sourceforge.net>
parents:
3997
diff
changeset
|
3369 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', 'id', |
|
6403
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
3370 'keywords', 'keywords2', 'messages', 'nosy', 'priority', 'spam', |
|
9957d8d10783
Tests and bug-fix for issue2551119
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6402
diff
changeset
|
3371 'status', 'superseder']) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3372 self.assertEqual(self.db.issue.list(), ['1']) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3373 |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3374 def testNosyMail(self) : |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3375 """Creates one issue with two attachments, one smaller and one larger |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3376 than the set max_attachment_size. |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3377 """ |
|
4407
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
3378 old_translate_ = roundupdb._ |
|
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
3379 roundupdb._ = i18n.get_translation(language='C').gettext |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3380 db = self.db |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3381 db.config.NOSY_MAX_ATTACHMENT_SIZE = 4096 |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3382 res = dict(mail_to = None, mail_msg = None) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3383 def dummy_snd(s, to, msg, res=res) : |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3384 res["mail_to"], res["mail_msg"] = to, msg |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3385 backup, Mailer.smtp_send = Mailer.smtp_send, dummy_snd |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3386 try : |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3387 f1 = db.file.create(name="test1.txt", content="x" * 20, type="application/octet-stream") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3388 f2 = db.file.create(name="test2.txt", content="y" * 5000, type="application/octet-stream") |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3389 m = db.msg.create(content="one two", author="admin", |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3390 files = [f1, f2]) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3391 i = db.issue.create(title='spam', files = [f1, f2], |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3392 messages = [m], nosy = [db.user.lookup("fred")]) |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3393 |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3394 db.issue.nosymessage(i, m, {}) |
|
4102
dcca66d56815
fix unit test compatibility
Richard Jones <richard@users.sourceforge.net>
parents:
4089
diff
changeset
|
3395 mail_msg = str(res["mail_msg"]) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3396 self.assertEqual(res["mail_to"], ["fred@example.com"]) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3397 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3398 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3399 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3400 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3401 self.assertTrue("File 'test1.txt' not attached" not in mail_msg) |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
3402 self.assertTrue(b2s(base64_encode(s2b("xxx"))).rstrip() in mail_msg) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3403 self.assertTrue("File 'test2.txt' not attached" in mail_msg) |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
3404 self.assertTrue(b2s(base64_encode(s2b("yyy"))).rstrip() not in mail_msg) |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3405 finally : |
|
4407
f6a2bfd351ee
force tests checking text output to work in the "C" locale
Richard Jones <richard@users.sourceforge.net>
parents:
4365
diff
changeset
|
3406 roundupdb._ = old_translate_ |
|
3882
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3407 Mailer.smtp_send = backup |
|
46ef2a6fd79d
config option to limit nosy attachments based on size
Justus Pendleton <jpend@users.sourceforge.net>
parents:
3872
diff
changeset
|
3408 |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3409 def testNosyMailTextAndBinary(self) : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3410 """Creates one issue with two attachments, one as text and one as binary. |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3411 """ |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3412 old_translate_ = roundupdb._ |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3413 roundupdb._ = i18n.get_translation(language='C').gettext |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3414 db = self.db |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3415 res = dict(mail_to = None, mail_msg = None) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3416 def dummy_snd(s, to, msg, res=res) : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3417 res["mail_to"], res["mail_msg"] = to, msg |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3418 backup, Mailer.smtp_send = Mailer.smtp_send, dummy_snd |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3419 try : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3420 f1 = db.file.create(name="test1.txt", content="Hello world", type="text/plain") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3421 f2 = db.file.create(name="test2.bin", content=b"\x01\x02\x03\xfe\xff", type="application/octet-stream") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3422 m = db.msg.create(content="one two", author="admin", |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3423 files = [f1, f2]) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3424 i = db.issue.create(title='spam', files = [f1, f2], |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3425 messages = [m], nosy = [db.user.lookup("fred")]) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3426 |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3427 db.issue.nosymessage(i, m, {}) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3428 mail_msg = str(res["mail_msg"]) |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3429 self.assertEqual(res["mail_to"], ["fred@example.com"]) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3430 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3431 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3432 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3433 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3434 self.assertTrue("Hello world" in mail_msg) |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
3435 self.assertTrue(b2s(base64_encode(b"\x01\x02\x03\xfe\xff")).rstrip() in mail_msg) |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3436 finally : |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3437 roundupdb._ = old_translate_ |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3438 Mailer.smtp_send = backup |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3439 |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
3440 @pytest.mark.skipif(gpgmelib.gpg is None, reason='Skipping PGPNosy test') |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3441 def testPGPNosyMail(self) : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3442 """Creates one issue with two attachments, one smaller and one larger |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3443 than the set max_attachment_size. Recipients are one with and |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3444 one without encryption enabled via a gpg group. |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3445 """ |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3446 old_translate_ = roundupdb._ |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3447 roundupdb._ = i18n.get_translation(language='C').gettext |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3448 db = self.db |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3449 db.config.NOSY_MAX_ATTACHMENT_SIZE = 4096 |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3450 db.config['PGP_HOMEDIR'] = gpgmelib.pgphome |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3451 db.config['PGP_ROLES'] = 'pgp' |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3452 db.config['PGP_ENABLE'] = True |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3453 db.config['PGP_ENCRYPT'] = True |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3454 gpgmelib.setUpPGP() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3455 res = [] |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3456 def dummy_snd(s, to, msg, res=res) : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3457 res.append (dict (mail_to = to, mail_msg = msg)) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3458 backup, Mailer.smtp_send = Mailer.smtp_send, dummy_snd |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3459 try : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3460 john = db.user.create(username="john", roles='User,pgp', |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3461 address='john@test.test', realname='John Doe') |
|
5493
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3462 f1 = db.file.create(name="test1.txt", content="x" * 20, type="application/octet-stream") |
|
725266c03eab
updated mailgw to no longer use mimetools based on jerrykan's patch
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5492
diff
changeset
|
3463 f2 = db.file.create(name="test2.txt", content="y" * 5000, type="application/octet-stream") |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3464 m = db.msg.create(content="one two", author="admin", |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3465 files = [f1, f2]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3466 i = db.issue.create(title='spam', files = [f1, f2], |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3467 messages = [m], nosy = [db.user.lookup("fred"), john]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3468 |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3469 db.issue.nosymessage(i, m, {}) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3470 res.sort(key=lambda x: x['mail_to']) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3471 self.assertEqual(res[0]["mail_to"], ["fred@example.com"]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3472 self.assertEqual(res[1]["mail_to"], ["john@test.test"]) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3473 mail_msg = str(res[0]["mail_msg"]) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3474 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3475 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3476 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3477 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3478 self.assertTrue("File 'test1.txt' not attached" not in mail_msg) |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
3479 self.assertTrue(b2s(base64_encode(s2b("xxx"))).rstrip() in mail_msg) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3480 self.assertTrue("File 'test2.txt' not attached" in mail_msg) |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
3481 self.assertTrue(b2s(base64_encode(s2b("yyy"))).rstrip() not in mail_msg) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3482 mail_msg = str(res[1]["mail_msg"]) |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
3483 parts = message_from_string(mail_msg).get_payload() |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3484 self.assertEqual(len(parts),2) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3485 self.assertEqual(parts[0].get_payload().strip(), 'Version: 1') |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
3486 crypt = gpgmelib.gpg.core.Data(parts[1].get_payload()) |
|
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
3487 plain = gpgmelib.gpg.core.Data() |
|
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
3488 ctx = gpgmelib.gpg.core.Context() |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3489 res = ctx.op_decrypt(crypt, plain) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3490 self.assertEqual(res, None) |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3491 plain.seek(0,0) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3492 self.assertTrue("From: admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3493 self.assertTrue("Subject: [issue1] spam" in mail_msg) |
|
5494
b7fa56ced601
use gpg module instead of pyme module for PGP encryption
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5493
diff
changeset
|
3494 mail_msg = str(message_from_bytes(plain.read())) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3495 self.assertTrue("New submission from admin" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3496 self.assertTrue("one two" in mail_msg) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3497 self.assertTrue("File 'test1.txt' not attached" not in mail_msg) |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
3498 self.assertTrue(b2s(base64_encode(s2b("xxx"))).rstrip() in mail_msg) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3499 self.assertTrue("File 'test2.txt' not attached" in mail_msg) |
|
5790
046717e09beb
base64.encodestring is deprecated on python > 3.1. Eliminate warning
John Rouillard <rouilj@ieee.org>
parents:
5788
diff
changeset
|
3500 self.assertTrue(b2s(base64_encode(s2b("yyy"))).rstrip() not in mail_msg) |
|
4542
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3501 finally : |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3502 roundupdb._ = old_translate_ |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3503 Mailer.smtp_send = backup |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3504 gpgmelib.tearDownPGP() |
|
46239c21a1eb
Sending of PGP-Encrypted mail to all users or selected users (via roles)...
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4490
diff
changeset
|
3505 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3506 class ROTest(MyTestCase): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3507 def setUp(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3508 # remove previous test, ignore errors |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3509 if os.path.exists(config.DATABASE): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3510 shutil.rmtree(config.DATABASE) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3511 os.makedirs(config.DATABASE + '/files') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3512 self.db = self.module.Database(config, 'admin') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3513 setupSchema(self.db, 1, self.module) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3514 self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3515 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3516 self.db = self.module.Database(config) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3517 setupSchema(self.db, 0, self.module) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3518 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3519 def testExceptions(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3520 # this tests the exceptions that should be raised |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3521 ar = self.assertRaises |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3522 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3523 # this tests the exceptions that should be raised |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3524 ar(DatabaseError, self.db.status.create, name="foo") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3525 ar(DatabaseError, self.db.status.set, '1', name="foo") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3526 ar(DatabaseError, self.db.status.retire, '1') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3527 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3528 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3529 class SchemaTest(MyTestCase): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3530 def setUp(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3531 # remove previous test, ignore errors |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3532 if os.path.exists(config.DATABASE): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3533 shutil.rmtree(config.DATABASE) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3534 os.makedirs(config.DATABASE + '/files') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3535 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3536 def test_reservedProperties(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
3537 self.open_database() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3538 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3539 creation=String()) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3540 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3541 activity=String()) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3542 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3543 creator=String()) |
|
2077
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
3544 self.assertRaises(ValueError, self.module.Class, self.db, "a", |
|
3e0961d6d44d
Added the "actor" property.
Richard Jones <richard@users.sourceforge.net>
parents:
2075
diff
changeset
|
3545 actor=String()) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3546 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3547 def init_a(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
3548 self.open_database() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3549 a = self.module.Class(self.db, "a", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3550 a.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3551 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3552 |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
3553 def test_fileClassProps(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
3554 self.open_database() |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
3555 a = self.module.FileClass(self.db, 'a') |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3556 l = sorted(a.getprops().keys()) |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3557 self.assertTrue(l, ['activity', 'actor', 'content', 'created', |
|
3601
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
3558 'creation', 'type']) |
|
7b25567f0f54
indexing may be turned off for FileClass "content" now
Richard Jones <richard@users.sourceforge.net>
parents:
3586
diff
changeset
|
3559 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3560 def init_ab(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
3561 self.open_database() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3562 a = self.module.Class(self.db, "a", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3563 a.setkey("name") |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
3564 b = self.module.Class(self.db, "b", name=String(), |
|
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
3565 fooz=Multilink('a')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3566 b.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3567 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3568 |
|
6238
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3569 def test_splitDesignator(self): |
|
6240
0c3def4b5275
Check for DesignatorError rather than ValueError
John Rouillard <rouilj@ieee.org>
parents:
6239
diff
changeset
|
3570 from roundup.hyperdb import splitDesignator, DesignatorError |
|
6238
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3571 |
|
6242
b14359503b49
Try to remove errors from postgres/mysql
John Rouillard <rouilj@ieee.org>
parents:
6240
diff
changeset
|
3572 self.open_database() # allow setup/shutdown to work to postgres/mysql |
|
b14359503b49
Try to remove errors from postgres/mysql
John Rouillard <rouilj@ieee.org>
parents:
6240
diff
changeset
|
3573 |
|
6238
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3574 valid_test_cases = [('zip2py44', ('zip2py', '44')), |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3575 ('zippy2', ('zippy', '2')), |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3576 ('a9', ('a', '9')), |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3577 ('a1234', ('a', '1234')), |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3578 ('a_1234', ('a_', '1234')), |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3579 ] |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3580 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3581 invalid_test_cases = ['_zip2py44','1zippy44', |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3582 'zippy244a' ] |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3583 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3584 for designator in valid_test_cases: |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3585 print("Testing %s"%designator[0]) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3586 self.assertEqual(splitDesignator(designator[0]), designator[1]) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3587 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3588 for designator in invalid_test_cases: |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3589 print("Testing %s"%designator) |
|
6240
0c3def4b5275
Check for DesignatorError rather than ValueError
John Rouillard <rouilj@ieee.org>
parents:
6239
diff
changeset
|
3590 with self.assertRaises(DesignatorError) as ctx: |
|
6238
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3591 splitDesignator(designator) |
|
6239
d3878ac549e9
Fix splitDesignator test.
John Rouillard <rouilj@ieee.org>
parents:
6238
diff
changeset
|
3592 error = '"%s" not a node designator' % designator |
|
6238
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3593 self.assertEqual(str(ctx.exception), error) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3594 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3595 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3596 def test_addNewClass(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3597 self.init_a() |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3598 |
|
6238
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3599 with self.assertRaises(ValueError) as ctx: |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3600 self.module.Class(self.db, "a", name=String()) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3601 error = 'Class "a" already defined.' |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3602 self.assertEqual(str(ctx.exception), error) |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3603 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3604 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3605 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3606 |
|
6238
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3607 # Test permutations of valid/invalid classnames |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3608 self.init_a() |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3609 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3610 for classname in [ "1badclassname", "badclassname1", |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3611 "_badclassname", "_", "5" ]: |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3612 print("testing %s\n" % classname) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3613 with self.assertRaises(ValueError) as ctx: |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3614 self.module.Class(self.db, classname, name=String()) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3615 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3616 error = ('Class name %s is not valid. It must start ' |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3617 'with a letter, end with a letter or "_", and ' |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3618 'only have alphanumerics and "_" in the middle.' % (classname,)) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3619 self.assertEqual(str(ctx.exception), error) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3620 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3621 for classname in [ 'cla2ss', 'c_lass', 'CL_2ass', 'Z', |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3622 'class2_' ]: |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3623 print("testing %s\n" % classname) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3624 c = self.module.Class(self.db, classname, name=String()) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3625 self.assertEqual(str(c), '<hyperdb.Class "%s">' % classname) |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3626 |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3627 # don't pollute the db with junk valid cases |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3628 # self.db.commit(); close to discard all changes in this block. |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3629 self.db.close() |
|
6834bb5473da
Summary: Constrain format of classname and document
John Rouillard <rouilj@ieee.org>
parents:
6179
diff
changeset
|
3630 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3631 # add a new class to the schema and check creation of new items |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3632 # (and existence of old ones) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3633 self.init_ab() |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
3634 bid = self.db.b.create(name='bear', fooz=[aid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3635 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3636 self.db.commit() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3637 self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3638 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3639 # now check we can recall the added class' items |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3640 self.init_ab() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3641 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3642 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3643 self.assertEqual(self.db.b.get(bid, 'name'), 'bear') |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
3644 self.assertEqual(self.db.b.get(bid, 'fooz'), [aid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3645 self.assertEqual(self.db.b.lookup('bear'), bid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3646 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3647 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3648 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3649 self.db.getjournal('b', bid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3650 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3651 def init_amod(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
3652 self.open_database() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3653 a = self.module.Class(self.db, "a", name=String(), newstr=String(), |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3654 newint=Interval(), newnum=Number(), newbool=Boolean(), |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3655 newdate=Date()) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3656 a.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3657 b = self.module.Class(self.db, "b", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3658 b.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3659 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3660 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3661 def test_modifyClass(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3662 self.init_ab() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3663 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3664 # add item to user and issue class |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3665 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3666 bid = self.db.b.create(name='bear') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3667 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3668 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3669 # modify "a" schema |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3670 self.init_amod() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3671 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3672 self.assertEqual(self.db.a.get(aid, 'newstr'), None) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3673 self.assertEqual(self.db.a.get(aid, 'newint'), None) |
|
3935
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
3674 # hack - metakit can't return None for missing values, and we're not |
|
1dab48842cbd
Throwing up hands in resignation and finally deleting the metakit backend.
Richard Jones <richard@users.sourceforge.net>
parents:
3931
diff
changeset
|
3675 # really checking for that behavior here anyway |
|
5649
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3676 self.assertTrue(not self.db.a.get(aid, 'newnum')) |
|
f8893e1cde0d
assert_ is depricated. Replacing with assertTrue to reduce logs in travisci.
John Rouillard <rouilj@ieee.org>
parents:
5494
diff
changeset
|
3677 self.assertTrue(not self.db.a.get(aid, 'newbool')) |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3678 self.assertEqual(self.db.a.get(aid, 'newdate'), None) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3679 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3680 aid2 = self.db.a.create(name='aardvark', newstr='booz') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3681 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3682 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3683 # test |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3684 self.init_amod() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3685 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3686 self.assertEqual(self.db.a.get(aid, 'newstr'), None) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3687 self.assertEqual(self.db.b.get(aid, 'name'), 'bear') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3688 self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3689 self.assertEqual(self.db.a.get(aid2, 'newstr'), 'booz') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3690 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3691 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3692 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3693 self.db.getjournal('a', aid2) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3694 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3695 def init_amodkey(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
3696 self.open_database() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3697 a = self.module.Class(self.db, "a", name=String(), newstr=String()) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3698 a.setkey("newstr") |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3699 b = self.module.Class(self.db, "b", name=String()) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3700 b.setkey("name") |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3701 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3702 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3703 def test_changeClassKey(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3704 self.init_amod() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3705 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3706 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3707 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3708 |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3709 # change the key to newstr on a |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3710 self.init_amodkey() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3711 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3712 self.assertEqual(self.db.a.get(aid, 'newstr'), None) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3713 self.assertRaises(KeyError, self.db.a.lookup, 'apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3714 aid2 = self.db.a.create(name='aardvark', newstr='booz') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3715 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3716 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3717 # check |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3718 self.init_amodkey() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3719 self.assertEqual(self.db.a.lookup('booz'), aid2) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3720 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3721 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3722 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3723 |
|
3554
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3724 def test_removeClassKey(self): |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3725 self.init_amod() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3726 aid = self.db.a.create(name='apple') |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3727 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3728 self.db.commit(); self.db.close() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3729 |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3730 self.db = self.module.Database(config, 'admin') |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3731 a = self.module.Class(self.db, "a", name=String(), newstr=String()) |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3732 self.db.post_init() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3733 |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3734 aid2 = self.db.a.create(name='apple', newstr='booz') |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3735 self.db.commit() |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3736 |
|
5e70726a86dd
fixed schema migration problem when Class keys were removed
Richard Jones <richard@users.sourceforge.net>
parents:
3547
diff
changeset
|
3737 |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
3738 def init_amodml(self): |
|
4349
f0faef4dd023
Make memorydb pass all tests;
Richard Jones <richard@users.sourceforge.net>
parents:
4347
diff
changeset
|
3739 self.open_database() |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
3740 a = self.module.Class(self.db, "a", name=String(), |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3741 newml=Multilink('a')) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3742 a.setkey('name') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3743 self.db.post_init() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3744 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3745 def test_makeNewMultilink(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3746 self.init_a() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3747 aid = self.db.a.create(name='apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3748 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3749 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3750 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3751 # add a multilink prop |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
3752 self.init_amodml() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3753 bid = self.db.a.create(name='bear', newml=[aid]) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3754 self.assertEqual(self.db.a.find(newml=aid), [bid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3755 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3756 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3757 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3758 # check |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
3759 self.init_amodml() |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3760 self.assertEqual(self.db.a.find(newml=aid), [bid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3761 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
3762 self.assertEqual(self.db.a.lookup('bear'), bid) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3763 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3764 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3765 self.db.getjournal('a', aid) |
|
2196
85954067e496
mysql and postgresql schema mutation now handle added Multilinks; fixed test too
Richard Jones <richard@users.sourceforge.net>
parents:
2185
diff
changeset
|
3766 self.db.getjournal('a', bid) |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3767 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3768 def test_removeMultilink(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3769 # add a multilink prop |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
3770 self.init_amodml() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3771 aid = self.db.a.create(name='apple') |
|
2727
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3772 bid = self.db.a.create(name='bear', newml=[aid]) |
|
93e2e5b55a3c
new Interval props weren't created properly in rdbms
Richard Jones <richard@users.sourceforge.net>
parents:
2695
diff
changeset
|
3773 self.assertEqual(self.db.a.find(newml=aid), [bid]) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3774 self.assertEqual(self.db.a.lookup('apple'), aid) |
| 2197 | 3775 self.assertEqual(self.db.a.lookup('bear'), bid) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3776 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3777 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3778 # remove the multilink |
| 2197 | 3779 self.init_a() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3780 self.assertEqual(self.db.a.lookup('apple'), aid) |
| 2197 | 3781 self.assertEqual(self.db.a.lookup('bear'), bid) |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3782 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3783 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3784 self.db.getjournal('a', aid) |
| 2197 | 3785 self.db.getjournal('a', bid) |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3786 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3787 def test_removeClass(self): |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
3788 self.init_ab() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3789 aid = self.db.a.create(name='apple') |
|
2198
41a73b06d2ee
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2197
diff
changeset
|
3790 bid = self.db.b.create(name='bear') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3791 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3792 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3793 # drop the b class |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3794 self.init_a() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3795 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3796 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3797 self.db.commit(); self.db.close() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3798 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3799 # now check we can recall the added class' items |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3800 self.init_a() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3801 self.assertEqual(self.db.a.get(aid, 'name'), 'apple') |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3802 self.assertEqual(self.db.a.lookup('apple'), aid) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3803 |
|
1883
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3804 # confirm journal's ok |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3805 self.db.getjournal('a', aid) |
|
043e1b699047
more unit test work
Richard Jones <richard@users.sourceforge.net>
parents:
1873
diff
changeset
|
3806 |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3807 class RDBMSTest: |
|
4089
eddb82d0964c
Add compatibility package to allow us to deal with Python versions 2.3..2.6.
Richard Jones <richard@users.sourceforge.net>
parents:
4082
diff
changeset
|
3808 """ tests specific to RDBMS backends """ |
|
1951
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3809 def test_indexTest(self): |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3810 self.assertEqual(self.db.sql_index_exists('_issue', '_issue_id_idx'), 1) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3811 self.assertEqual(self.db.sql_index_exists('_issue', '_issue_x_idx'), 0) |
|
767ff2a03eee
more unit tests to improve coverage (up from 85% to 88% for anydbm! :)
Richard Jones <richard@users.sourceforge.net>
parents:
1929
diff
changeset
|
3812 |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3813 class FilterCacheTest(commonDBTest): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3814 def testFilteringTransitiveLinkCache(self): |
|
6332
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
3815 ae, dummy = self.filteringSetupTransitiveSearch() |
|
6a6b4651be1f
Use server-side cursor for postgres in some cases
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6300
diff
changeset
|
3816 ae, dummy = self.iterSetup('user') |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3817 # Need to make ceo his own (and first two users') supervisor |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3818 self.db.user.set('1', supervisor = '3') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3819 self.db.user.set('2', supervisor = '3') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3820 self.db.user.set('3', supervisor = '3') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3821 # test bool value |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3822 self.db.user.set('4', assignable = True) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3823 self.db.user.set('3', assignable = False) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3824 filt = self.db.issue.filter_iter |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3825 ufilt = self.db.user.filter_iter |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3826 user_result = \ |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3827 { '1' : {'username': 'admin', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3828 'supervisor': '3', 'realname': None, 'roles': 'Admin', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3829 'creator': '1', 'age': None, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3830 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3831 , '2' : {'username': 'fred', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3832 'supervisor': '3', 'realname': None, 'roles': 'User', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3833 'creator': '1', 'age': None, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3834 'address': 'fred@example.com'} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3835 , '3' : {'username': 'ceo', 'assignable': False, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3836 'supervisor': '3', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3837 'creator': '1', 'age': 129.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3838 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3839 , '4' : {'username': 'grouplead1', 'assignable': True, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3840 'supervisor': '3', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3841 'creator': '1', 'age': 29.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3842 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3843 , '5' : {'username': 'grouplead2', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3844 'supervisor': '3', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3845 'creator': '1', 'age': 29.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3846 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3847 , '6' : {'username': 'worker1', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3848 'supervisor': '4', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3849 'creator': '1', 'age': 25.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3850 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3851 , '7' : {'username': 'worker2', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3852 'supervisor': '4', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3853 'creator': '1', 'age': 24.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3854 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3855 , '8' : {'username': 'worker3', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3856 'supervisor': '5', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3857 'creator': '1', 'age': 23.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3858 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3859 , '9' : {'username': 'worker4', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3860 'supervisor': '5', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3861 'creator': '1', 'age': 22.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3862 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3863 , '10' : {'username': 'worker5', 'assignable': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3864 'supervisor': '5', 'realname': None, 'roles': None, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3865 'creator': '1', 'age': 21.0, 'actor': '1', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3866 'address': None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3867 } |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3868 foo = date.Interval('-1d') |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3869 issue_result = \ |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3870 { '1' : {'title': 'ts1', 'status': '2', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3871 'priority': '3', 'messages' : ['4'], 'nosy' : ['4']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3872 , '2' : {'title': 'ts2', 'status': '1', 'assignedto': '6', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3873 'priority': '3', 'messages' : ['4'], 'nosy' : ['5']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3874 , '3' : {'title': 'ts4', 'status': '2', 'assignedto': '7', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3875 'priority': '3', 'messages' : ['5']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3876 , '4' : {'title': 'ts5', 'status': '1', 'assignedto': '8', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3877 'priority': '3', 'messages' : ['6']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3878 , '5' : {'title': 'ts6', 'status': '2', 'assignedto': '9', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3879 'priority': '3', 'messages' : ['7']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3880 , '6' : {'title': 'ts7', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3881 'priority': '3', 'messages' : ['8'], 'foo' : None} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3882 , '7' : {'title': 'ts8', 'status': '2', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3883 'priority': '3', 'messages' : ['8'], 'foo' : foo} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3884 , '8' : {'title': 'ts9', 'status': '1', 'assignedto': '10', |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3885 'priority': '3', 'messages' : ['7', '8']} |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3886 } |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3887 result = [] |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3888 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3889 for id in ufilt(None, {}, [('+','supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3890 ('-','supervisor.supervisor'), ('-','supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3891 ('+','username')]): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3892 result.append(id) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3893 nodeid = id |
|
6413
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3894 # Note in the recent implementation we do not recursively |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3895 # cache results in filter_iter |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3896 assert(('user', nodeid) in self.db.cache) |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3897 n = self.db.user.getnode(nodeid) |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3898 for k, v in user_result[nodeid].items(): |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3899 ae((k, n[k]), (k, v)) |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3900 for k in 'creation', 'activity': |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3901 assert(n[k]) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3902 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3903 ae (result, ['8', '9', '10', '6', '7', '1', '3', '2', '4', '5']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3904 |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3905 result = [] |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3906 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3907 for id in filt(None, {}, |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3908 [('+','assignedto.supervisor.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3909 ('+','assignedto.supervisor.supervisor'), |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3910 ('-','assignedto.supervisor'), ('+','assignedto')]): |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3911 result.append(id) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3912 assert(('issue', id) in self.db.cache) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3913 n = self.db.issue.getnode(id) |
|
5395
23b8e6067f7c
Python 3 preparation: update calls to dict methods.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5390
diff
changeset
|
3914 for k, v in issue_result[id].items(): |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3915 ae((k, n[k]), (k, v)) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3916 for k in 'creation', 'activity': |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3917 assert(n[k]) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3918 nodeid = n.assignedto |
|
6413
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3919 # Note in the recent implementation we do not recursively |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3920 # cache results in filter_iter |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3921 n = self.db.user.getnode(nodeid) |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3922 for k, v in user_result[nodeid].items(): |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3923 ae((k, n[k]), (k, v)) |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3924 for k in 'creation', 'activity': |
|
7b1b6dffc7ed
Fix searching+sorting for Link properties
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6412
diff
changeset
|
3925 assert(n[k]) |
|
4472
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3926 self.db.clearCache() |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3927 ae (result, ['4', '5', '6', '7', '8', '1', '2', '3']) |
|
34dce76bb202
Multilink fixes and optimizations:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4448
diff
changeset
|
3928 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3929 |
|
5033
63c79c0992ae
Update tests to work with py.test
John Kristensen <john@jerrykan.com>
parents:
4886
diff
changeset
|
3930 class ClassicInitBase(object): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3931 count = 0 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3932 db = None |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3933 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3934 def setUp(self): |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3935 ClassicInitBase.count = ClassicInitBase.count + 1 |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3936 self.dirname = '_test_init_%s'%self.count |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3937 try: |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3938 shutil.rmtree(self.dirname) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5235
diff
changeset
|
3939 except OSError as error: |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3940 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3941 |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3942 def tearDown(self): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3943 if self.db is not None: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3944 self.db.close() |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3945 try: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3946 shutil.rmtree(self.dirname) |
|
5248
198b6e810c67
Use Python-3-compatible 'as' syntax for except statements
Eric S. Raymond <esr@thyrsus.com>
parents:
5235
diff
changeset
|
3947 except OSError as error: |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3948 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3949 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3950 class ClassicInitTest(ClassicInitBase): |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3951 def testCreation(self): |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3952 ae = self.assertEqual |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3953 |
|
2820
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
3954 # set up and open a tracker |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
3955 tracker = setupTracker(self.dirname, self.backend) |
|
da2a9175eb83
tracker setup put in separate function for use in other test suites
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2754
diff
changeset
|
3956 # open the database |
|
2689
9d044127c5eb
tracker.open() requires the 2nd argument - journal tag name
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2687
diff
changeset
|
3957 db = self.db = tracker.open('test') |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3958 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3959 # check the basics of the schema and initial data set |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3960 l = db.priority.list() |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3955
diff
changeset
|
3961 l.sort() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3962 ae(l, ['1', '2', '3', '4', '5']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3963 l = db.status.list() |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3955
diff
changeset
|
3964 l.sort() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3965 ae(l, ['1', '2', '3', '4', '5', '6', '7', '8']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3966 l = db.keyword.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3967 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3968 l = db.user.list() |
|
3963
3230f9c88086
Fix race condition for key properties in rdbms backends [SF#1876683]
Richard Jones <richard@users.sourceforge.net>
parents:
3955
diff
changeset
|
3969 l.sort() |
|
1873
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3970 ae(l, ['1', '2']) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3971 l = db.msg.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3972 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3973 l = db.file.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3974 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3975 l = db.issue.list() |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3976 ae(l, []) |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3977 |
|
f63aa57386b0
Backend improvements.
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
3978 |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
3979 class ConcurrentDBTest(ClassicInitBase): |
|
4448
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3980 def testConcurrency(self): |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3981 # The idea here is a read-modify-update cycle in the presence of |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3982 # a cache that has to be properly handled. The same applies if |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3983 # we extend a String or otherwise modify something that depends |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3984 # on the previous value. |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3985 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3986 # set up and open a tracker |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3987 tracker = setupTracker(self.dirname, self.backend) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3988 # open the database |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3989 self.db = tracker.open('admin') |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3990 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3991 prio = '1' |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3992 self.assertEqual(self.db.priority.get(prio, 'order'), 1.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3993 def inc(db): |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3994 db.priority.set(prio, order=db.priority.get(prio, 'order') + 1) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3995 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3996 inc(self.db) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3997 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3998 db2 = tracker.open("admin") |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
3999 self.assertEqual(db2.priority.get(prio, 'order'), 1.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4000 db2.commit() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4001 self.db.commit() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4002 self.assertEqual(self.db.priority.get(prio, 'order'), 2.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4003 |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4004 inc(db2) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4005 db2.commit() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4006 db2.clearCache() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4007 self.assertEqual(db2.priority.get(prio, 'order'), 3.0) |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4008 db2.close() |
|
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4009 |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4010 class HTMLItemTest(ClassicInitBase): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4011 class Request : |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4012 """ Fake html request """ |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4013 rfile = None |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4014 def start_response (self, a, b) : |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4015 pass |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4016 # end def start_response |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4017 # end class Request |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4018 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4019 def setUp(self): |
|
6148
8497bf3f23a1
Allow to define reverse Multilinks
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6118
diff
changeset
|
4020 super(HTMLItemTest, self).setUp() |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4021 self.tracker = tracker = setupTracker(self.dirname, self.backend) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4022 db = self.db = tracker.open('admin') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4023 req = self.Request() |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4024 env = dict (PATH_INFO='', REQUEST_METHOD='GET', QUERY_STRING='') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4025 self.client = self.tracker.Client(self.tracker, req, env, None) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4026 self.client.db = db |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4027 self.client.language = None |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4028 self.client.userid = db.getuid() |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4029 self.client.classname = 'issue' |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4030 user = {'username': 'worker5', 'realname': 'Worker', 'roles': 'User'} |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4031 u = self.db.user.create(**user) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4032 u_m = self.db.msg.create(author = u, content = 'bla' |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4033 , date = date.Date ('2006-01-01')) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4034 issue = {'title': 'ts1', 'status': '2', 'assignedto': '3', |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4035 'priority': '3', 'messages' : [u_m], 'nosy' : ['3']} |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4036 self.db.issue.create(**issue) |
|
4879
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4037 issue = {'title': 'ts2', 'status': '2', |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4038 'messages' : [u_m], 'nosy' : ['3']} |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4039 self.db.issue.create(**issue) |
|
4878
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4040 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4041 def testHTMLItemAttributes(self): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4042 issue = HTMLItem(self.client, 'issue', '1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4043 ae = self.assertEqual |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4044 ae(issue.title.plain(),'ts1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4045 ae(issue ['title'].plain(),'ts1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4046 ae(issue.status.plain(),'deferred') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4047 ae(issue ['status'].plain(),'deferred') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4048 ae(issue.assignedto.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4049 ae(issue ['assignedto'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4050 ae(issue.priority.plain(),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4051 ae(issue ['priority'].plain(),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4052 ae(issue.messages.plain(),'1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4053 ae(issue ['messages'].plain(),'1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4054 ae(issue.nosy.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4055 ae(issue ['nosy'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4056 ae(len(issue.messages),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4057 ae(len(issue ['messages']),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4058 ae(len(issue.nosy),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4059 ae(len(issue ['nosy']),1) |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4060 |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4061 def testHTMLItemDereference(self): |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4062 issue = HTMLItem(self.client, 'issue', '1') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4063 ae = self.assertEqual |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4064 ae(str(issue.priority.name),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4065 ae(str(issue.priority['name']),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4066 ae(str(issue ['priority']['name']),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4067 ae(str(issue ['priority'].name),'bug') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4068 ae(str(issue.assignedto.username),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4069 ae(str(issue.assignedto['username']),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4070 ae(str(issue ['assignedto']['username']),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4071 ae(str(issue ['assignedto'].username),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4072 for n in issue.nosy: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4073 ae(n.username.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4074 ae(n['username'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4075 for n in issue.messages: |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4076 ae(n.author.username.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4077 ae(n.author['username'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4078 ae(n['author'].username.plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4079 ae(n['author']['username'].plain(),'worker5') |
|
f6e76a03b502
HTML* classes for cgi are now all new-style
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4876
diff
changeset
|
4080 |
|
4448
2784c239e6c8
clear the cache on commit for rdbms backends:
Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
parents:
4421
diff
changeset
|
4081 |
|
4879
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4082 def testHTMLItemDerefFail(self): |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4083 issue = HTMLItem(self.client, 'issue', '2') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4084 ae = self.assertEqual |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4085 ae(issue.assignedto.plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4086 ae(issue ['assignedto'].plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4087 ae(issue.priority.plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4088 ae(issue ['priority'].plain(),'') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4089 m = '[Attempt to look up %s on a missing value]' |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4090 ae(str(issue.priority.name),m%'name') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4091 ae(str(issue ['priority'].name),m%'name') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4092 ae(str(issue.assignedto.username),m%'username') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4093 ae(str(issue ['assignedto'].username),m%'username') |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4094 ae(bool(issue ['assignedto']['username']),False) |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4095 ae(bool(issue ['priority']['name']),False) |
|
302c967d710c
HTML* classes for cgi: handle MissingValue case
Ralf Schlatterbeck <rsc@runtux.com>
parents:
4878
diff
changeset
|
4096 |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4097 def makeForm(args): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4098 form = cgi.FieldStorage() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4099 for k,v in args.items(): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4100 if type(v) is type([]): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4101 [form.list.append(cgi.MiniFieldStorage(k, x)) for x in v] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4102 elif isinstance(v, FileUpload): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4103 x = cgi.MiniFieldStorage(k, v.content) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4104 x.filename = v.filename |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4105 form.list.append(x) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4106 else: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4107 form.list.append(cgi.MiniFieldStorage(k, v)) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4108 return form |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4109 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4110 class FileUpload: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4111 def __init__(self, content, filename): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4112 self.content = content |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4113 self.filename = filename |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4114 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4115 class FormTestParent(object): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4116 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4117 backend = "anydbm" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4118 def setupDetectors(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4119 pass |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4120 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4121 def setUp(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4122 self.dirname = '_test_cgi_form' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4123 # set up and open a tracker |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4124 self.instance = setupTracker(self.dirname, backend = self.backend) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4125 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4126 # We may want to register separate detectors |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4127 self.setupDetectors() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4128 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4129 # open the database |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4130 self.db = self.instance.open('admin') |
|
5719
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4131 self.db.Otk = MockNull() |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4132 self.db.Otk.data = {} |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4133 self.db.Otk.getall = self.data_get |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4134 self.db.Otk.set = self.data_set |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4135 self.db.tx_Source = "web" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4136 self.db.user.create(username='Chef', address='chef@bork.bork.bork', |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4137 realname='Bork, Chef', roles='User') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4138 self.db.user.create(username='mary', address='mary@test.test', |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4139 roles='User', realname='Contrary, Mary') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4140 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4141 self.db.issue.addprop(tx_Source=hyperdb.String()) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4142 self.db.msg.addprop(tx_Source=hyperdb.String()) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4143 self.db.post_init() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4144 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4145 def setupClient(self, form, classname, nodeid=None, template='item', env_addon=None): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4146 cl = client.Client(self.instance, None, {'PATH_INFO':'/', |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4147 'REQUEST_METHOD':'POST'}, makeForm(form)) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4148 cl.classname = classname |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4149 cl.base = 'http://whoami.com/path/' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4150 cl.nodeid = nodeid |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4151 cl.language = ('en',) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4152 cl.userid = '1' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4153 cl.db = self.db |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4154 cl.user = 'admin' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4155 cl.template = template |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4156 if env_addon is not None: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4157 cl.env.update(env_addon) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4158 return cl |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4159 |
|
5719
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4160 def data_get(self, key): |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4161 return self.db.Otk.data[key] |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4162 |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4163 def data_set(self, key, **value): |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4164 self.db.Otk.data[key] = value |
|
cd33bbf03cf3
Added Otk support to db_test_base to make test_cgi work. I think this
John Rouillard <rouilj@ieee.org>
parents:
5649
diff
changeset
|
4165 |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4166 def parseForm(self, form, classname='test', nodeid=None): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4167 cl = self.setupClient(form, classname, nodeid) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4168 return cl.parsePropsFromForm(create=1) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4169 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4170 def tearDown(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4171 self.db.close() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4172 try: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4173 shutil.rmtree(self.dirname) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4174 except OSError as error: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4175 if error.errno not in (errno.ENOENT, errno.ESRCH): raise |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4176 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4177 class SpecialAction(actions.EditItemAction): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4178 x = False |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4179 def handle(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4180 self.__class__.x = True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4181 cl = self.db.getclass(self.classname) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4182 cl.set(self.nodeid, status='2') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4183 cl.set(self.nodeid, title="Just a test") |
|
6089
15d1ce536c73
Fix warning about assert always True
Ralf Schlatterbeck <rsc@runtux.com>
parents:
6013
diff
changeset
|
4184 assert 0, "not reached" |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4185 self.db.commit() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4186 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4187 def reject_title(db, cl, nodeid, newvalues): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4188 if 'title' in newvalues: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4189 raise Reject ("REJECT TITLE CHANGE") |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4190 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4191 def init_reject(db): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4192 db.issue.audit("set", reject_title) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4193 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4194 def get_extensions(self, what): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4195 """ For monkey-patch of instance.get_extensions: The old method is |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4196 kept as _get_extensions, we use the new method to return our own |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4197 auditors/reactors. |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4198 """ |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4199 if what == 'detectors': |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4200 return [init_reject] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4201 return self._get_extensions(what) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4202 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4203 class SpecialActionTest(FormTestParent): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4204 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4205 def setupDetectors(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4206 self.instance._get_extensions = self.instance.get_extensions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4207 def ge(what): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4208 return get_extensions(self.instance, what) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4209 self.instance.get_extensions = ge |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4210 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4211 def setUp(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4212 FormTestParent.setUp(self) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4213 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4214 self.instance.registerAction('special', SpecialAction) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4215 self.issue = self.db.issue.create (title = "hello", status='1') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4216 self.db.commit () |
|
5381
0942fe89e82e
Python 3 preparation: change "x.has_key(y)" to "y in x".
Joseph Myers <jsm@polyomino.org.uk>
parents:
5376
diff
changeset
|
4217 if 'SENDMAILDEBUG' not in os.environ: |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4218 os.environ['SENDMAILDEBUG'] = 'mail-test2.log' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4219 self.SENDMAILDEBUG = os.environ['SENDMAILDEBUG'] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4220 page_template = """ |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4221 <html> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4222 <body> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4223 <p tal:condition="options/error_message|nothing" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4224 tal:repeat="m options/error_message" |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4225 tal:content="structure m"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4226 <p tal:content="context/title/plain"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4227 <p tal:content="context/status/plain"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4228 <p tal:content="structure context/submit"/> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4229 </body> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4230 </html> |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4231 """.strip () |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4232 self.form = {':action': 'special'} |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4233 cl = self.setupClient(self.form, 'issue', self.issue) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4234 pt = RoundupPageTemplate() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4235 pt.pt_edit(page_template, 'text/html') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4236 self.out = [] |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4237 def wh(s): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4238 self.out.append(s) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4239 cl.write_html = wh |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4240 def load_template(x): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4241 return pt |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4242 cl.instance.templates.load = load_template |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4243 cl.selectTemplate = MockNull() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4244 cl.determine_context = MockNull () |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4245 def hasPermission(s, p, classname=None, d=None, e=None, **kw): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4246 return True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4247 self.hasPermission = actions.Action.hasPermission |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4248 actions.Action.hasPermission = hasPermission |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4249 self.e1 = _HTMLItem.is_edit_ok |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4250 _HTMLItem.is_edit_ok = lambda x : True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4251 self.e2 = HTMLProperty.is_edit_ok |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4252 HTMLProperty.is_edit_ok = lambda x : True |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4253 # Make sure header check passes |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4254 cl.env['HTTP_REFERER'] = 'http://whoami.com/path/' |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4255 self.client = cl |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4256 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4257 def tearDown(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4258 FormTestParent.tearDown(self) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4259 # Remove monkey-patches |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4260 self.instance.get_extensions = self.instance._get_extensions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4261 del self.instance._get_extensions |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4262 actions.Action.hasPermission = self.hasPermission |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4263 _HTMLItem.is_edit_ok = self.e1 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4264 HTMLProperty.is_edit_ok = self.e2 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4265 if os.path.exists(self.SENDMAILDEBUG): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4266 #os.remove(self.SENDMAILDEBUG) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4267 pass |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4268 |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4269 def testInnerMain(self): |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4270 cl = self.client |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4271 cl.session_api = MockNull(_sid="1234567890") |
|
5488
52cb53eedf77
reworked random number use
Christof Meerwald <cmeerw@cmeerw.org>
parents:
5481
diff
changeset
|
4272 self.form ['@nonce'] = anti_csrf_nonce(cl) |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4273 cl.form = makeForm(self.form) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4274 # inner_main will re-open the database! |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4275 # Note that in the template above, the rendering of the |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4276 # context/submit button will also call anti_csrf_nonce which |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4277 # does a commit of the otk to the database. |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4278 cl.inner_main() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4279 cl.db.close() |
|
5376
64b05e24dbd8
Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents:
5330
diff
changeset
|
4280 print(self.out) |
|
5310
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4281 # Make sure the action was called |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4282 self.assertEqual(SpecialAction.x, True) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4283 # Check that the Reject worked: |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4284 self.assertNotEqual(-1, self.out[0].index('REJECT TITLE CHANGE')) |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4285 # Re-open db |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4286 self.db.close() |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4287 self.db = self.instance.open ('admin') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4288 # We shouldn't see any changes |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4289 self.assertEqual(self.db.issue.get(self.issue, 'title'), 'hello') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4290 self.assertEqual(self.db.issue.get(self.issue, 'status'), '1') |
|
efb34cbdba7c
Add (currently failing) test for atomic actions
Ralf Schlatterbeck <rsc@runtux.com>
parents:
5263
diff
changeset
|
4291 |
|
2680
c26a9a5a25d2
rdbms backends require new config object. make one.
Alexander Smishlajev <a1s@users.sourceforge.net>
parents:
2605
diff
changeset
|
4292 # vim: set et sts=4 sw=4 : |
