Mercurial > p > roundup > code
comparison test/db_test_base.py @ 6179:a701c9c81597
Fix rev_multilink properties search/retrieval
The code now only returns live (non-retired) items. Since for reverse
multilinks the Link/Multilink property in the retired item cannot be
changed, we now only return non-retired items in search (filter) and
retrieve (get).
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Tue, 19 May 2020 09:25:48 +0200 |
| parents | ff059afae50a |
| children | 6834bb5473da |
comparison
equal
deleted
inserted
replaced
| 6178:227c05ce2d85 | 6179:a701c9c81597 |
|---|---|
| 1860 ae(filt(None, {'issues': ['3', '4']}), ['7', '8']) | 1860 ae(filt(None, {'issues': ['3', '4']}), ['7', '8']) |
| 1861 ae(filt(None, {'issues': ['1', '4', '8']}), ['6', '8', '10']) | 1861 ae(filt(None, {'issues': ['1', '4', '8']}), ['6', '8', '10']) |
| 1862 ae(filt(None, {'issues.title': ['ts2']}), ['6']) | 1862 ae(filt(None, {'issues.title': ['ts2']}), ['6']) |
| 1863 ae(filt(None, {'issues': ['-1']}), ['1', '2', '3', '4', '5']) | 1863 ae(filt(None, {'issues': ['-1']}), ['1', '2', '3', '4', '5']) |
| 1864 ae(filt(None, {'issues': '-1'}), ['1', '2', '3', '4', '5']) | 1864 ae(filt(None, {'issues': '-1'}), ['1', '2', '3', '4', '5']) |
| 1865 def ls(x): | |
| 1866 return list(sorted(x)) | |
| 1867 self.assertEqual(ls(self.db.user.get('6', 'issues')), ['1', '2']) | |
| 1868 self.assertEqual(ls(self.db.user.get('7', 'issues')), ['3']) | |
| 1869 self.assertEqual(ls(self.db.user.get('10', 'issues')), ['6', '7', '8']) | |
| 1870 n = self.db.user.getnode('6') | |
| 1871 self.assertEqual(ls(n.issues), ['1', '2']) | |
| 1872 # Now retire some linked-to issues and retry | |
| 1873 self.db.issue.retire('6') | |
| 1874 self.db.issue.retire('2') | |
| 1875 self.db.issue.retire('3') | |
| 1876 self.db.commit() | |
| 1877 for filt in filter, filter_iter: | |
| 1878 ae(filt(None, {'issues': ['3', '4']}), ['8']) | |
| 1879 ae(filt(None, {'issues': ['1', '4', '8']}), ['6', '8', '10']) | |
| 1880 ae(filt(None, {'issues.title': ['ts2']}), []) | |
| 1881 ae(filt(None, {'issues': ['-1']}), ['1', '2', '3', '4', '5', '7']) | |
| 1882 ae(filt(None, {'issues': '-1'}), ['1', '2', '3', '4', '5', '7']) | |
| 1883 self.assertEqual(ls(self.db.user.get('6', 'issues')), ['1']) | |
| 1884 self.assertEqual(ls(self.db.user.get('7', 'issues')), []) | |
| 1885 self.assertEqual(ls(self.db.user.get('10', 'issues')), ['7', '8']) | |
| 1865 | 1886 |
| 1866 def testFilteringLinkSortSearchMultilink(self): | 1887 def testFilteringLinkSortSearchMultilink(self): |
| 1867 ae, filter, filter_iter = self.filteringSetup() | 1888 ae, filter, filter_iter = self.filteringSetup() |
| 1868 a = 'assignedto' | 1889 a = 'assignedto' |
| 1869 grp = (None, None) | 1890 grp = (None, None) |
| 1910 # 7: 5 | 1931 # 7: 5 |
| 1911 # 8: | 1932 # 8: |
| 1912 for filt in filter, filter_iter: | 1933 for filt in filter, filter_iter: |
| 1913 ae(filt(None, {ni: ['1', '2']}), ['4', '5']) | 1934 ae(filt(None, {ni: ['1', '2']}), ['4', '5']) |
| 1914 ae(filt(None, {ni: ['6','7']}), ['3', '4', '5']) | 1935 ae(filt(None, {ni: ['6','7']}), ['3', '4', '5']) |
| 1936 ae(filt(None, {'nosy_issues.title': ['ts2']}), ['5']) | |
| 1915 ae(filt(None, {ni: ['-1']}), ['1', '2', '6', '7', '8', '9', '10']) | 1937 ae(filt(None, {ni: ['-1']}), ['1', '2', '6', '7', '8', '9', '10']) |
| 1916 ae(filt(None, {ni: '-1'}), ['1', '2', '6', '7', '8', '9', '10']) | 1938 ae(filt(None, {ni: '-1'}), ['1', '2', '6', '7', '8', '9', '10']) |
| 1939 def ls(x): | |
| 1940 return list(sorted(x)) | |
| 1941 self.assertEqual(ls(self.db.user.get('4', ni)), ['1', '6']) | |
| 1942 self.assertEqual(ls(self.db.user.get('5', ni)), ['2', '6', '7']) | |
| 1943 n = self.db.user.getnode('4') | |
| 1944 self.assertEqual(ls(n.nosy_issues), ['1', '6']) | |
| 1945 # Now retire some linked-to issues and retry | |
| 1946 self.db.issue.retire('2') | |
| 1947 self.db.issue.retire('6') | |
| 1948 self.db.commit() | |
| 1949 for filt in filter, filter_iter: | |
| 1950 ae(filt(None, {ni: ['1', '2']}), ['4']) | |
| 1951 ae(filt(None, {ni: ['6','7']}), ['5']) | |
| 1952 ae(filt(None, {'nosy_issues.title': ['ts2']}), []) | |
| 1953 ae(filt(None, {ni: ['-1']}), | |
| 1954 ['1', '2', '3', '6', '7', '8', '9', '10']) | |
| 1955 ae(filt(None, {ni: '-1'}), | |
| 1956 ['1', '2', '3', '6', '7', '8', '9', '10']) | |
| 1957 self.assertEqual(ls(self.db.user.get('4', ni)), ['1']) | |
| 1958 self.assertEqual(ls(self.db.user.get('5', ni)), ['7']) | |
| 1917 | 1959 |
| 1918 def testFilteringMany(self): | 1960 def testFilteringMany(self): |
| 1919 ae, filter, filter_iter = self.filteringSetup() | 1961 ae, filter, filter_iter = self.filteringSetup() |
| 1920 for f in filter, filter_iter: | 1962 for f in filter, filter_iter: |
| 1921 ae(f(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), | 1963 ae(f(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), |
