46 self.notify_updated(entity) |
48 self.notify_updated(entity) |
47 def before_entity_copy(self, entity, sourceparams): |
49 def before_entity_copy(self, entity, sourceparams): |
48 entity.cw_edited.update(sourceparams['item']) |
50 entity.cw_edited.update(sourceparams['item']) |
49 |
51 |
50 with self.temporary_appobjects(AParser): |
52 with self.temporary_appobjects(AParser): |
51 session = self.repo.internal_session() |
53 with self.repo.internal_cnx() as cnx: |
52 stats = dfsource.pull_data(session, force=True) |
54 stats = dfsource.pull_data(cnx, force=True) |
53 self.commit() |
55 cnx.commit() |
54 # test import stats |
56 # test import stats |
55 self.assertEqual(sorted(stats), ['checked', 'created', 'updated']) |
57 self.assertEqual(sorted(stats), ['checked', 'created', 'updated']) |
56 self.assertEqual(len(stats['created']), 1) |
58 self.assertEqual(len(stats['created']), 1) |
57 entity = self.execute('Card X').get_entity(0, 0) |
59 entity = cnx.execute('Card X').get_entity(0, 0) |
58 self.assertIn(entity.eid, stats['created']) |
60 self.assertIn(entity.eid, stats['created']) |
59 self.assertEqual(stats['updated'], set()) |
61 self.assertEqual(stats['updated'], set()) |
60 # test imported entities |
62 # test imported entities |
61 self.assertEqual(entity.title, 'cubicweb.org') |
63 self.assertEqual(entity.title, 'cubicweb.org') |
62 self.assertEqual(entity.content, 'the cw web site') |
64 self.assertEqual(entity.content, 'the cw web site') |
63 self.assertEqual(entity.cwuri, 'http://www.cubicweb.org/') |
65 self.assertEqual(entity.cwuri, 'http://www.cubicweb.org/') |
64 self.assertEqual(entity.cw_source[0].name, 'myfeed') |
66 self.assertEqual(entity.cw_source[0].name, 'myfeed') |
65 self.assertEqual(entity.cw_metainformation(), |
67 self.assertEqual(entity.cw_metainformation(), |
66 {'type': 'Card', |
68 {'type': 'Card', |
67 'source': {'uri': 'myfeed', 'type': 'datafeed', 'use-cwuri-as-url': True}, |
69 'source': {'uri': 'myfeed', 'type': 'datafeed', 'use-cwuri-as-url': True}, |
68 'extid': 'http://www.cubicweb.org/'} |
70 'extid': 'http://www.cubicweb.org/'} |
69 ) |
71 ) |
70 self.assertEqual(entity.absolute_url(), 'http://www.cubicweb.org/') |
72 self.assertEqual(entity.absolute_url(), 'http://www.cubicweb.org/') |
71 # test repo cache keys |
73 # test repo cache keys |
72 self.assertEqual(self.repo._type_source_cache[entity.eid], |
74 self.assertEqual(self.repo._type_source_cache[entity.eid], |
73 ('Card', 'http://www.cubicweb.org/', 'myfeed')) |
75 ('Card', 'http://www.cubicweb.org/', 'myfeed')) |
74 self.assertEqual(self.repo._extid_cache['http://www.cubicweb.org/'], |
76 self.assertEqual(self.repo._extid_cache['http://www.cubicweb.org/'], |
75 entity.eid) |
77 entity.eid) |
76 # test repull |
78 # test repull |
77 session.set_cnxset() |
79 stats = dfsource.pull_data(cnx, force=True) |
78 stats = dfsource.pull_data(session, force=True) |
80 self.assertEqual(stats['created'], set()) |
79 self.assertEqual(stats['created'], set()) |
81 self.assertEqual(stats['updated'], set((entity.eid,))) |
80 self.assertEqual(stats['updated'], set((entity.eid,))) |
82 # test repull with caches reseted |
81 # test repull with caches reseted |
83 self.repo._type_source_cache.clear() |
82 self.repo._type_source_cache.clear() |
84 self.repo._extid_cache.clear() |
83 self.repo._extid_cache.clear() |
85 stats = dfsource.pull_data(cnx, force=True) |
84 session.set_cnxset() |
86 self.assertEqual(stats['created'], set()) |
85 stats = dfsource.pull_data(session, force=True) |
87 self.assertEqual(stats['updated'], set((entity.eid,))) |
86 self.assertEqual(stats['created'], set()) |
88 self.assertEqual(self.repo._type_source_cache[entity.eid], |
87 self.assertEqual(stats['updated'], set((entity.eid,))) |
89 ('Card', 'http://www.cubicweb.org/', 'myfeed')) |
88 self.assertEqual(self.repo._type_source_cache[entity.eid], |
90 self.assertEqual(self.repo._extid_cache['http://www.cubicweb.org/'], |
89 ('Card', 'http://www.cubicweb.org/', 'myfeed')) |
91 entity.eid) |
90 self.assertEqual(self.repo._extid_cache['http://www.cubicweb.org/'], |
|
91 entity.eid) |
|
92 |
92 |
93 self.assertEqual(dfsource.source_cwuris(self.session), |
93 self.assertEqual(dfsource.source_cwuris(self.session), |
94 {'http://www.cubicweb.org/': (entity.eid, 'Card')} |
94 {'http://www.cubicweb.org/': (entity.eid, 'Card')} |
95 ) |
95 ) |
96 self.assertTrue(dfsource.latest_retrieval) |
96 self.assertTrue(dfsource.latest_retrieval) |
97 self.assertTrue(dfsource.fresh()) |
97 self.assertTrue(dfsource.fresh()) |
98 |
98 |
99 # test_rename_source |
99 # test_rename_source |
100 req = self.request() |
100 with self.admin_access.repo_cnx() as cnx: |
101 req.execute('SET S name "myrenamedfeed" WHERE S is CWSource, S name "myfeed"') |
101 cnx.execute('SET S name "myrenamedfeed" WHERE S is CWSource, S name "myfeed"') |
102 self.commit() |
102 cnx.commit() |
103 entity = self.execute('Card X').get_entity(0, 0) |
103 entity = cnx.execute('Card X').get_entity(0, 0) |
104 self.assertEqual(entity.cwuri, 'http://www.cubicweb.org/') |
104 self.assertEqual(entity.cwuri, 'http://www.cubicweb.org/') |
105 self.assertEqual(entity.cw_source[0].name, 'myrenamedfeed') |
105 self.assertEqual(entity.cw_source[0].name, 'myrenamedfeed') |
106 self.assertEqual(entity.cw_metainformation(), |
106 self.assertEqual(entity.cw_metainformation(), |
107 {'type': 'Card', |
107 {'type': 'Card', |
108 'source': {'uri': 'myrenamedfeed', 'type': 'datafeed', 'use-cwuri-as-url': True}, |
108 'source': {'uri': 'myrenamedfeed', 'type': 'datafeed', 'use-cwuri-as-url': True}, |
109 'extid': 'http://www.cubicweb.org/'} |
109 'extid': 'http://www.cubicweb.org/'} |
110 ) |
110 ) |
111 self.assertEqual(self.repo._type_source_cache[entity.eid], |
111 self.assertEqual(self.repo._type_source_cache[entity.eid], |
112 ('Card', 'http://www.cubicweb.org/', 'myrenamedfeed')) |
112 ('Card', 'http://www.cubicweb.org/', 'myrenamedfeed')) |
113 self.assertEqual(self.repo._extid_cache['http://www.cubicweb.org/'], |
113 self.assertEqual(self.repo._extid_cache['http://www.cubicweb.org/'], |
114 entity.eid) |
114 entity.eid) |
115 |
115 |
116 # test_delete_source |
116 # test_delete_source |
117 req = self.request() |
117 cnx.execute('DELETE CWSource S WHERE S name "myrenamedfeed"') |
118 req.execute('DELETE CWSource S WHERE S name "myrenamedfeed"') |
118 cnx.commit() |
119 self.commit() |
119 self.assertFalse(cnx.execute('Card X WHERE X title "cubicweb.org"')) |
120 self.assertFalse(self.execute('Card X WHERE X title "cubicweb.org"')) |
120 self.assertFalse(cnx.execute('Any X WHERE X has_text "cubicweb.org"')) |
121 self.assertFalse(self.execute('Any X WHERE X has_text "cubicweb.org"')) |
|
122 |
121 |
123 if __name__ == '__main__': |
122 if __name__ == '__main__': |
124 from logilab.common.testlib import unittest_main |
123 from logilab.common.testlib import unittest_main |
125 unittest_main() |
124 unittest_main() |