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)),

Roundup Issue Tracker: http://roundup-tracker.org/