author | David Douard <david.douard@logilab.fr> |
Mon, 29 Jul 2013 14:22:40 +0200 | |
branch | stable |
changeset 9193 | eaa58d1c7d5f |
parent 9151 | 78071e41926f |
child 9273 | f3795da61959 |
permissions | -rw-r--r-- |
8942
0f60f1061a2e
[test] stop deepcopying for nothing
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8935
diff
changeset
|
1 |
# copyright 2003-2013 LOGILAB S.A. (Paris, FRANCE), all rights reserved. |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
2 |
# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
3 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
4 |
# This file is part of CubicWeb. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
5 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
6 |
# CubicWeb is free software: you can redistribute it and/or modify it under the |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
7 |
# terms of the GNU Lesser General Public License as published by the Free |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
8 |
# Software Foundation, either version 2.1 of the License, or (at your option) |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
9 |
# any later version. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
10 |
# |
5424
8ecbcbff9777
replace logilab-common by CubicWeb in disclaimer
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5421
diff
changeset
|
11 |
# CubicWeb is distributed in the hope that it will be useful, but WITHOUT |
5421
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
12 |
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
13 |
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
14 |
# details. |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
15 |
# |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
16 |
# You should have received a copy of the GNU Lesser General Public License along |
8167de96c523
proper licensing information (LGPL-2.1). Hope I get it right this time.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
17 |
# with CubicWeb. If not, see <http://www.gnu.org/licenses/>. |
6595
00cd0b273cf5
[test] fix test to follow recent changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6427
diff
changeset
|
18 |
"""unit tests for module cubicweb.server.migractions""" |
0 | 19 |
|
1016
26387b836099
use datetime instead of mx.DateTime
sylvain.thenault@logilab.fr
parents:
972
diff
changeset
|
20 |
from datetime import date |
2608
21856eda34f6
[F repo tests] tests have to be updated:
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2591
diff
changeset
|
21 |
from os.path import join |
0 | 22 |
|
7073
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
23 |
from logilab.common.testlib import TestCase, unittest_main, Tags, tag |
0 | 24 |
|
6292
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
25 |
from yams.constraints import UniqueConstraint |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
26 |
|
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
27 |
from cubicweb import ConfigurationError, ValidationError |
4689
4eb1f4490538
[test] skipping versions checking during test is enough, no need for monkey patch
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4681
diff
changeset
|
28 |
from cubicweb.devtools.testlib import CubicWebTC |
1251
af40e615dc89
introduce a 'cw_' prefix on entity table and column names so we don't conflict with sql or DBMS specific keywords
sylvain.thenault@logilab.fr
parents:
972
diff
changeset
|
29 |
from cubicweb.schema import CubicWebSchemaLoader |
af40e615dc89
introduce a 'cw_' prefix on entity table and column names so we don't conflict with sql or DBMS specific keywords
sylvain.thenault@logilab.fr
parents:
972
diff
changeset
|
30 |
from cubicweb.server.sqlutils import SQL_PREFIX |
0 | 31 |
from cubicweb.server.migractions import * |
32 |
||
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
33 |
import cubicweb.devtools |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
34 |
|
4774
89a7555020ba
[test] get a chance to get proper garbage collection when running pytest on whole cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4763
diff
changeset
|
35 |
migrschema = None |
6781
5062d86d6ffe
[unittest2] use unittest2 module fixture api
Julien Jehannet <julien.jehannet@logilab.fr>
parents:
6635
diff
changeset
|
36 |
def tearDownModule(*args): |
4774
89a7555020ba
[test] get a chance to get proper garbage collection when running pytest on whole cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4763
diff
changeset
|
37 |
global migrschema |
89a7555020ba
[test] get a chance to get proper garbage collection when running pytest on whole cw
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4763
diff
changeset
|
38 |
del migrschema |
7073
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
39 |
if hasattr(MigrationCommandsTC, 'origschema'): |
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
40 |
del MigrationCommandsTC.origschema |
1787 | 41 |
|
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
42 |
class MigrationCommandsTC(CubicWebTC): |
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
43 |
|
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
44 |
configcls = cubicweb.devtools.TestServerConfiguration |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
45 |
|
7073
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
46 |
tags = CubicWebTC.tags | Tags(('server', 'migration', 'migractions')) |
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
47 |
|
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
48 |
@classmethod |
7078
bad26a22fe29
[test] New Handling of database for test.
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7073
diff
changeset
|
49 |
def _init_repo(cls): |
bad26a22fe29
[test] New Handling of database for test.
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7073
diff
changeset
|
50 |
super(MigrationCommandsTC, cls)._init_repo() |
4681
5f72584ab1d7
[test] cleanup
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4635
diff
changeset
|
51 |
# we have to read schema from the database to get eid for schema entities |
8947
3bbd416b09ec
[repo] straightforward bootstrap sequence. Closes #2841188
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8942
diff
changeset
|
52 |
cls.repo.set_schema(cls.repo.deserialize_schema(), resetvreg=False) |
3bbd416b09ec
[repo] straightforward bootstrap sequence. Closes #2841188
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
8942
diff
changeset
|
53 |
# hack to read the schema from data/migrschema |
7078
bad26a22fe29
[test] New Handling of database for test.
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
7073
diff
changeset
|
54 |
config = cls.config |
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
55 |
config.appid = join('data', 'migratedapp') |
6595
00cd0b273cf5
[test] fix test to follow recent changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6427
diff
changeset
|
56 |
config._apphome = cls.datapath('migratedapp') |
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
57 |
global migrschema |
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
58 |
migrschema = config.load_schema() |
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
59 |
config.appid = 'data' |
6595
00cd0b273cf5
[test] fix test to follow recent changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6427
diff
changeset
|
60 |
config._apphome = cls.datadir |
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
61 |
assert 'Folder' in migrschema |
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
62 |
|
0 | 63 |
def setUp(self): |
2773
b2530e3e0afb
[testlib] #345052 and #344207: major test lib refactoring/cleanup + update usage
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
64 |
CubicWebTC.setUp(self) |
0 | 65 |
self.mh = ServerMigrationHelper(self.repo.config, migrschema, |
66 |
repo=self.repo, cnx=self.cnx, |
|
67 |
interactive=False) |
|
972 | 68 |
assert self.cnx is self.mh._cnx |
69 |
assert self.session is self.mh.session, (self.session.id, self.mh.session.id) |
|
1787 | 70 |
|
6795
f29d24c3d687
[server test] fix test inter-dependancy issue
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6790
diff
changeset
|
71 |
def tearDown(self): |
f29d24c3d687
[server test] fix test inter-dependancy issue
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6790
diff
changeset
|
72 |
CubicWebTC.tearDown(self) |
f29d24c3d687
[server test] fix test inter-dependancy issue
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6790
diff
changeset
|
73 |
self.repo.vreg['etypes'].clear_caches() |
f29d24c3d687
[server test] fix test inter-dependancy issue
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6790
diff
changeset
|
74 |
|
0 | 75 |
def test_add_attribute_int(self): |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
76 |
self.assertFalse('whatever' in self.schema) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
77 |
self.session.create_entity('Note') |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
78 |
self.session.commit(free_cnxset=False) |
3134
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
79 |
orderdict = dict(self.mh.rqlexec('Any RTN, O WHERE X name "Note", RDEF from_entity X, ' |
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
80 |
'RDEF relation_type RT, RDEF ordernum O, RT name RTN')) |
0 | 81 |
self.mh.cmd_add_attribute('Note', 'whatever') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
82 |
self.assertTrue('whatever' in self.schema) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
83 |
self.assertEqual(self.schema['whatever'].subjects(), ('Note',)) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
84 |
self.assertEqual(self.schema['whatever'].objects(), ('Int',)) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
85 |
self.assertEqual(self.schema['Note'].default('whatever'), 2) |
6795
f29d24c3d687
[server test] fix test inter-dependancy issue
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6790
diff
changeset
|
86 |
# test default value set on existing entities |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
87 |
note = self.session.execute('Note X').get_entity(0, 0) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
88 |
self.assertEqual(note.whatever, 2) |
6795
f29d24c3d687
[server test] fix test inter-dependancy issue
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6790
diff
changeset
|
89 |
# test default value set for next entities |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
90 |
self.assertEqual(self.session.create_entity('Note').whatever, 2) |
6795
f29d24c3d687
[server test] fix test inter-dependancy issue
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6790
diff
changeset
|
91 |
# test attribute order |
3134
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
92 |
orderdict2 = dict(self.mh.rqlexec('Any RTN, O WHERE X name "Note", RDEF from_entity X, ' |
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
93 |
'RDEF relation_type RT, RDEF ordernum O, RT name RTN')) |
4100 | 94 |
whateverorder = migrschema['whatever'].rdef('Note', 'Int').order |
3134
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
95 |
for k, v in orderdict.iteritems(): |
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
96 |
if v >= whateverorder: |
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
97 |
orderdict[k] = v+1 |
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
98 |
orderdict['whatever'] = whateverorder |
6369
a151453dc564
[test] more update to unittest2 api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6340
diff
changeset
|
99 |
self.assertDictEqual(orderdict, orderdict2) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
100 |
#self.assertEqual([r.type for r in self.schema['Note'].ordered_relations()], |
0 | 101 |
# ['modification_date', 'creation_date', 'owned_by', |
102 |
# 'eid', 'ecrit_par', 'inline1', 'date', 'type', |
|
3134
3cda74b5534c
update test to avoid failure due to migration schema changes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3126
diff
changeset
|
103 |
# 'whatever', 'date', 'in_basket']) |
0 | 104 |
# NB: commit instead of rollback make following test fail with py2.5 |
105 |
# this sounds like a pysqlite/2.5 bug (the same eid is affected to |
|
106 |
# two different entities) |
|
107 |
self.mh.rollback() |
|
108 |
||
109 |
def test_add_attribute_varchar(self): |
|
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
110 |
self.assertFalse('whatever' in self.schema) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
111 |
self.session.create_entity('Note') |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
112 |
self.session.commit(free_cnxset=False) |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
113 |
self.assertFalse('shortpara' in self.schema) |
0 | 114 |
self.mh.cmd_add_attribute('Note', 'shortpara') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
115 |
self.assertTrue('shortpara' in self.schema) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
116 |
self.assertEqual(self.schema['shortpara'].subjects(), ('Note', )) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
117 |
self.assertEqual(self.schema['shortpara'].objects(), ('String', )) |
0 | 118 |
# test created column is actually a varchar(64) |
1251
af40e615dc89
introduce a 'cw_' prefix on entity table and column names so we don't conflict with sql or DBMS specific keywords
sylvain.thenault@logilab.fr
parents:
972
diff
changeset
|
119 |
notesql = self.mh.sqlexec("SELECT sql FROM sqlite_master WHERE type='table' and name='%sNote'" % SQL_PREFIX)[0][0] |
0 | 120 |
fields = dict(x.strip().split()[:2] for x in notesql.split('(', 1)[1].rsplit(')', 1)[0].split(',')) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
121 |
self.assertEqual(fields['%sshortpara' % SQL_PREFIX], 'varchar(64)') |
6790
f4f67ea5436a
[schema migration] add a test to ensure default value are considered
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6781
diff
changeset
|
122 |
# test default value set on existing entities |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
123 |
self.assertEqual(self.session.execute('Note X').get_entity(0, 0).shortpara, 'hop') |
6790
f4f67ea5436a
[schema migration] add a test to ensure default value are considered
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6781
diff
changeset
|
124 |
# test default value set for next entities |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
125 |
self.assertEqual(self.session.create_entity('Note').shortpara, 'hop') |
0 | 126 |
self.mh.rollback() |
1787 | 127 |
|
0 | 128 |
def test_add_datetime_with_default_value_attribute(self): |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
129 |
self.assertFalse('mydate' in self.schema) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
130 |
self.assertFalse('shortpara' in self.schema) |
0 | 131 |
self.mh.cmd_add_attribute('Note', 'mydate') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
132 |
self.assertTrue('mydate' in self.schema) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
133 |
self.assertEqual(self.schema['mydate'].subjects(), ('Note', )) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
134 |
self.assertEqual(self.schema['mydate'].objects(), ('Date', )) |
1016
26387b836099
use datetime instead of mx.DateTime
sylvain.thenault@logilab.fr
parents:
972
diff
changeset
|
135 |
testdate = date(2005, 12, 13) |
0 | 136 |
eid1 = self.mh.rqlexec('INSERT Note N')[0][0] |
137 |
eid2 = self.mh.rqlexec('INSERT Note N: N mydate %(mydate)s', {'mydate' : testdate})[0][0] |
|
5174
78438ad513ca
#759035: Automate addition of eid cachekey in RQL analysis
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
138 |
d1 = self.mh.rqlexec('Any D WHERE X eid %(x)s, X mydate D', {'x': eid1})[0][0] |
78438ad513ca
#759035: Automate addition of eid cachekey in RQL analysis
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
139 |
d2 = self.mh.rqlexec('Any D WHERE X eid %(x)s, X mydate D', {'x': eid2})[0][0] |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
140 |
self.assertEqual(d1, date.today()) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
141 |
self.assertEqual(d2, testdate) |
0 | 142 |
self.mh.rollback() |
1787 | 143 |
|
6292
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
144 |
def test_drop_chosen_constraints_ctxmanager(self): |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
145 |
with self.mh.cmd_dropped_constraints('Note', 'unique_id', UniqueConstraint): |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
146 |
self.mh.cmd_add_attribute('Note', 'unique_id') |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
147 |
# make sure the maxsize constraint is not dropped |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
148 |
self.assertRaises(ValidationError, |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
149 |
self.mh.rqlexec, |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
150 |
'INSERT Note N: N unique_id "xyz"') |
6417
d2361abe8505
[test] fixes
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6370
diff
changeset
|
151 |
self.mh.rollback() |
6292
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
152 |
# make sure the unique constraint is dropped |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
153 |
self.mh.rqlexec('INSERT Note N: N unique_id "x"') |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
154 |
self.mh.rqlexec('INSERT Note N: N unique_id "x"') |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
155 |
self.mh.rqlexec('DELETE Note N') |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
156 |
self.mh.rollback() |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
157 |
|
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
158 |
def test_drop_required_ctxmanager(self): |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
159 |
with self.mh.cmd_dropped_constraints('Note', 'unique_id', cstrtype=None, |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
160 |
droprequired=True): |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
161 |
self.mh.cmd_add_attribute('Note', 'unique_id') |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
162 |
self.mh.rqlexec('INSERT Note N') |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
163 |
# make sure the required=True was restored |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
164 |
self.assertRaises(ValidationError, self.mh.rqlexec, 'INSERT Note N') |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
165 |
self.mh.rollback() |
054fa36060d5
[migractions] add a dropped_constraints() migration command
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
6208
diff
changeset
|
166 |
|
0 | 167 |
def test_rename_attribute(self): |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
168 |
self.assertFalse('civility' in self.schema) |
0 | 169 |
eid1 = self.mh.rqlexec('INSERT Personne X: X nom "lui", X sexe "M"')[0][0] |
170 |
eid2 = self.mh.rqlexec('INSERT Personne X: X nom "l\'autre", X sexe NULL')[0][0] |
|
171 |
self.mh.cmd_rename_attribute('Personne', 'sexe', 'civility') |
|
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
172 |
self.assertFalse('sexe' in self.schema) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
173 |
self.assertTrue('civility' in self.schema) |
0 | 174 |
# test data has been backported |
175 |
c1 = self.mh.rqlexec('Any C WHERE X eid %s, X civility C' % eid1)[0][0] |
|
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
176 |
self.assertEqual(c1, 'M') |
0 | 177 |
c2 = self.mh.rqlexec('Any C WHERE X eid %s, X civility C' % eid2)[0][0] |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
178 |
self.assertEqual(c2, None) |
0 | 179 |
|
180 |
||
181 |
def test_workflow_actions(self): |
|
6816
f61de39cd396
[wf migration] allow to deactivate assertion on wfable entity to quick-fix tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6815
diff
changeset
|
182 |
wf = self.mh.cmd_add_workflow(u'foo', ('Personne', 'Email'), |
f61de39cd396
[wf migration] allow to deactivate assertion on wfable entity to quick-fix tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6815
diff
changeset
|
183 |
ensure_workflowable=False) |
0 | 184 |
for etype in ('Personne', 'Email'): |
2920
64322aa83a1d
start a new workflow engine
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2903
diff
changeset
|
185 |
s1 = self.mh.rqlexec('Any N WHERE WF workflow_of ET, ET name "%s", WF name N' % |
0 | 186 |
etype)[0][0] |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
187 |
self.assertEqual(s1, "foo") |
2943
77622caef9bd
[schema] default_workflow_of more naturally expressed as default_workflow
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2931
diff
changeset
|
188 |
s1 = self.mh.rqlexec('Any N WHERE ET default_workflow WF, ET name "%s", WF name N' % |
0 | 189 |
etype)[0][0] |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
190 |
self.assertEqual(s1, "foo") |
1787 | 191 |
|
0 | 192 |
def test_add_entity_type(self): |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
193 |
self.assertFalse('Folder2' in self.schema) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
194 |
self.assertFalse('filed_under2' in self.schema) |
0 | 195 |
self.mh.cmd_add_entity_type('Folder2') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
196 |
self.assertTrue('Folder2' in self.schema) |
8111
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
197 |
self.assertTrue('Old' in self.schema) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
198 |
self.assertTrue(self.session.execute('CWEType X WHERE X name "Folder2"')) |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
199 |
self.assertTrue('filed_under2' in self.schema) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
200 |
self.assertTrue(self.session.execute('CWRType X WHERE X name "filed_under2"')) |
3266
38ffdb284689
we must now explicitly call rebuild_infered_relation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3252
diff
changeset
|
201 |
self.schema.rebuild_infered_relations() |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
202 |
self.assertEqual(sorted(str(rs) for rs in self.schema['Folder2'].subject_relations()), |
6427
c8a5ac2d1eaa
[schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6417
diff
changeset
|
203 |
['created_by', 'creation_date', 'cw_source', 'cwuri', |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
204 |
'description', 'description_format', |
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
205 |
'eid', |
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
206 |
'filed_under2', 'has_text', |
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
207 |
'identity', 'in_basket', 'is', 'is_instance_of', |
0 | 208 |
'modification_date', 'name', 'owned_by']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
209 |
self.assertEqual([str(rs) for rs in self.schema['Folder2'].object_relations()], |
0 | 210 |
['filed_under2', 'identity']) |
8111
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
211 |
# Old will be missing as it has been renamed into 'New' in the migrated |
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
212 |
# schema while New hasn't been added here. |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
213 |
self.assertEqual(sorted(str(e) for e in self.schema['filed_under2'].subjects()), |
8111
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
214 |
sorted(str(e) for e in self.schema.entities() if not e.final and e != 'Old')) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
215 |
self.assertEqual(self.schema['filed_under2'].objects(), ('Folder2',)) |
0 | 216 |
eschema = self.schema.eschema('Folder2') |
4635
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
217 |
for cstr in eschema.rdef('name').constraints: |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
218 |
self.assertTrue(hasattr(cstr, 'eid')) |
0 | 219 |
|
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
220 |
def test_add_drop_entity_type(self): |
0 | 221 |
self.mh.cmd_add_entity_type('Folder2') |
6816
f61de39cd396
[wf migration] allow to deactivate assertion on wfable entity to quick-fix tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6815
diff
changeset
|
222 |
wf = self.mh.cmd_add_workflow(u'folder2 wf', 'Folder2', |
f61de39cd396
[wf migration] allow to deactivate assertion on wfable entity to quick-fix tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6815
diff
changeset
|
223 |
ensure_workflowable=False) |
3252
c0e10da6f1cf
tests update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2967
diff
changeset
|
224 |
todo = wf.add_state(u'todo', initial=True) |
c0e10da6f1cf
tests update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2967
diff
changeset
|
225 |
done = wf.add_state(u'done') |
c0e10da6f1cf
tests update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2967
diff
changeset
|
226 |
wf.add_transition(u'redoit', done, todo) |
c0e10da6f1cf
tests update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2967
diff
changeset
|
227 |
wf.add_transition(u'markasdone', todo, done) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
228 |
self.session.commit(free_cnxset=False) |
0 | 229 |
eschema = self.schema.eschema('Folder2') |
230 |
self.mh.cmd_drop_entity_type('Folder2') |
|
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
231 |
self.assertFalse('Folder2' in self.schema) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
232 |
self.assertFalse(self.session.execute('CWEType X WHERE X name "Folder2"')) |
0 | 233 |
# test automatic workflow deletion |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
234 |
self.assertFalse(self.session.execute('Workflow X WHERE NOT X workflow_of ET')) |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
235 |
self.assertFalse(self.session.execute('State X WHERE NOT X state_of WF')) |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
236 |
self.assertFalse(self.session.execute('Transition X WHERE NOT X transition_of WF')) |
0 | 237 |
|
8105
7980b36fb1aa
[schema sync] Update repo._type_source_cache when renaming an entity (closes #2094470)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
238 |
def test_rename_entity_type(self): |
7980b36fb1aa
[schema sync] Update repo._type_source_cache when renaming an entity (closes #2094470)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
239 |
entity = self.mh.create_entity('Old', name=u'old') |
7980b36fb1aa
[schema sync] Update repo._type_source_cache when renaming an entity (closes #2094470)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
240 |
self.repo.type_and_source_from_eid(entity.eid) |
7980b36fb1aa
[schema sync] Update repo._type_source_cache when renaming an entity (closes #2094470)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
241 |
self.mh.cmd_rename_entity_type('Old', 'New') |
7980b36fb1aa
[schema sync] Update repo._type_source_cache when renaming an entity (closes #2094470)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
242 |
self.mh.cmd_rename_attribute('New', 'name', 'new_name') |
7980b36fb1aa
[schema sync] Update repo._type_source_cache when renaming an entity (closes #2094470)
Julien Cristau <julien.cristau@logilab.fr>
parents:
7791
diff
changeset
|
243 |
|
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
244 |
def test_add_drop_relation_type(self): |
0 | 245 |
self.mh.cmd_add_entity_type('Folder2', auto=False) |
246 |
self.mh.cmd_add_relation_type('filed_under2') |
|
3266
38ffdb284689
we must now explicitly call rebuild_infered_relation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3252
diff
changeset
|
247 |
self.schema.rebuild_infered_relations() |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
248 |
self.assertTrue('filed_under2' in self.schema) |
8111
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
249 |
# Old will be missing as it has been renamed into 'New' in the migrated |
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
250 |
# schema while New hasn't been added here. |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
251 |
self.assertEqual(sorted(str(e) for e in self.schema['filed_under2'].subjects()), |
8111
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
252 |
sorted(str(e) for e in self.schema.entities() |
d1be698018d2
[server test] Fix tests regression from changeset 7980b36fb1aa
Julien Cristau <julien.cristau@logilab.fr>
parents:
8105
diff
changeset
|
253 |
if not e.final and e != 'Old')) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
254 |
self.assertEqual(self.schema['filed_under2'].objects(), ('Folder2',)) |
0 | 255 |
self.mh.cmd_drop_relation_type('filed_under2') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
256 |
self.assertFalse('filed_under2' in self.schema) |
0 | 257 |
|
258 |
def test_add_relation_definition_nortype(self): |
|
259 |
self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Affaire') |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
260 |
self.assertEqual(self.schema['concerne2'].subjects(), |
0 | 261 |
('Personne',)) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
262 |
self.assertEqual(self.schema['concerne2'].objects(), |
2745
0dafa29ace1f
[schema migration] test reproducing pb when deleting a relation definition with mandatory card and without removing the associated rtype + fix
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2744
diff
changeset
|
263 |
('Affaire', )) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
264 |
self.assertEqual(self.schema['concerne2'].rdef('Personne', 'Affaire').cardinality, |
2745
0dafa29ace1f
[schema migration] test reproducing pb when deleting a relation definition with mandatory card and without removing the associated rtype + fix
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2744
diff
changeset
|
265 |
'1*') |
0dafa29ace1f
[schema migration] test reproducing pb when deleting a relation definition with mandatory card and without removing the associated rtype + fix
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2744
diff
changeset
|
266 |
self.mh.cmd_add_relation_definition('Personne', 'concerne2', 'Note') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
267 |
self.assertEqual(sorted(self.schema['concerne2'].objects()), ['Affaire', 'Note']) |
3252
c0e10da6f1cf
tests update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2967
diff
changeset
|
268 |
self.mh.create_entity('Personne', nom=u'tot') |
c0e10da6f1cf
tests update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2967
diff
changeset
|
269 |
self.mh.create_entity('Affaire') |
2745
0dafa29ace1f
[schema migration] test reproducing pb when deleting a relation definition with mandatory card and without removing the associated rtype + fix
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2744
diff
changeset
|
270 |
self.mh.rqlexec('SET X concerne2 Y WHERE X is Personne, Y is Affaire') |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
271 |
self.session.commit(free_cnxset=False) |
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
272 |
self.mh.cmd_drop_relation_definition('Personne', 'concerne2', 'Affaire') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
273 |
self.assertTrue('concerne2' in self.schema) |
2745
0dafa29ace1f
[schema migration] test reproducing pb when deleting a relation definition with mandatory card and without removing the associated rtype + fix
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2744
diff
changeset
|
274 |
self.mh.cmd_drop_relation_definition('Personne', 'concerne2', 'Note') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
275 |
self.assertFalse('concerne2' in self.schema) |
0 | 276 |
|
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
277 |
def test_drop_relation_definition_existant_rtype(self): |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
278 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].subjects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
279 |
['Affaire', 'Personne']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
280 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
281 |
['Affaire', 'Division', 'Note', 'Societe', 'SubDivision']) |
0 | 282 |
self.mh.cmd_drop_relation_definition('Personne', 'concerne', 'Affaire') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
283 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].subjects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
284 |
['Affaire']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
285 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
286 |
['Division', 'Note', 'Societe', 'SubDivision']) |
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
287 |
self.mh.cmd_add_relation_definition('Personne', 'concerne', 'Affaire') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
288 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].subjects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
289 |
['Affaire', 'Personne']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
290 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
291 |
['Affaire', 'Division', 'Note', 'Societe', 'SubDivision']) |
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
292 |
# trick: overwrite self.maxeid to avoid deletion of just reintroduced types |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
293 |
self.maxeid = self.session.execute('Any MAX(X)')[0][0] |
1787 | 294 |
|
0 | 295 |
def test_drop_relation_definition_with_specialization(self): |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
296 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].subjects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
297 |
['Affaire', 'Personne']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
298 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
299 |
['Affaire', 'Division', 'Note', 'Societe', 'SubDivision']) |
0 | 300 |
self.mh.cmd_drop_relation_definition('Affaire', 'concerne', 'Societe') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
301 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].subjects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
302 |
['Affaire', 'Personne']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
303 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
3266
38ffdb284689
we must now explicitly call rebuild_infered_relation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3252
diff
changeset
|
304 |
['Affaire', 'Division', 'Note', 'SubDivision']) |
38ffdb284689
we must now explicitly call rebuild_infered_relation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3252
diff
changeset
|
305 |
self.schema.rebuild_infered_relations() # need to be explicitly called once everything is in place |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
306 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
307 |
['Affaire', 'Note']) |
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
308 |
self.mh.cmd_add_relation_definition('Affaire', 'concerne', 'Societe') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
309 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].subjects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
310 |
['Affaire', 'Personne']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
311 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
3266
38ffdb284689
we must now explicitly call rebuild_infered_relation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3252
diff
changeset
|
312 |
['Affaire', 'Note', 'Societe']) |
38ffdb284689
we must now explicitly call rebuild_infered_relation
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
3252
diff
changeset
|
313 |
self.schema.rebuild_infered_relations() # need to be explicitly called once everything is in place |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
314 |
self.assertEqual(sorted(str(e) for e in self.schema['concerne'].objects()), |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
315 |
['Affaire', 'Division', 'Note', 'Societe', 'SubDivision']) |
2251
799ff50ddfe8
fix tests to avoid schema copy, pytest unittest_migration.py OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2124
diff
changeset
|
316 |
# trick: overwrite self.maxeid to avoid deletion of just reintroduced types |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
317 |
self.maxeid = self.session.execute('Any MAX(X)')[0][0] |
0 | 318 |
|
319 |
def test_rename_relation(self): |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
320 |
self.skipTest('implement me') |
0 | 321 |
|
322 |
def test_change_relation_props_non_final(self): |
|
323 |
rschema = self.schema['concerne'] |
|
4100 | 324 |
card = rschema.rdef('Affaire', 'Societe').cardinality |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
325 |
self.assertEqual(card, '**') |
0 | 326 |
try: |
327 |
self.mh.cmd_change_relation_props('Affaire', 'concerne', 'Societe', |
|
328 |
cardinality='?*') |
|
4100 | 329 |
card = rschema.rdef('Affaire', 'Societe').cardinality |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
330 |
self.assertEqual(card, '?*') |
0 | 331 |
finally: |
332 |
self.mh.cmd_change_relation_props('Affaire', 'concerne', 'Societe', |
|
333 |
cardinality='**') |
|
1787 | 334 |
|
0 | 335 |
def test_change_relation_props_final(self): |
336 |
rschema = self.schema['adel'] |
|
4100 | 337 |
card = rschema.rdef('Personne', 'String').fulltextindexed |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
338 |
self.assertEqual(card, False) |
0 | 339 |
try: |
340 |
self.mh.cmd_change_relation_props('Personne', 'adel', 'String', |
|
341 |
fulltextindexed=True) |
|
4100 | 342 |
card = rschema.rdef('Personne', 'String').fulltextindexed |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
343 |
self.assertEqual(card, True) |
0 | 344 |
finally: |
345 |
self.mh.cmd_change_relation_props('Personne', 'adel', 'String', |
|
346 |
fulltextindexed=False) |
|
347 |
||
7073
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
348 |
@tag('longrun') |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
349 |
def test_sync_schema_props_perms(self): |
2903
043c8fcb3819
[migration] drop rqlcursor
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
350 |
cursor = self.mh.session |
7398
26695dd703d8
[repository api] definitly kill usage of word 'pool' to refer to connections set used by a session
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7242
diff
changeset
|
351 |
cursor.set_cnxset() |
4635
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
352 |
nbrqlexpr_start = cursor.execute('Any COUNT(X) WHERE X is RQLExpression')[0][0] |
4100 | 353 |
migrschema['titre'].rdefs[('Personne', 'String')].order = 7 |
354 |
migrschema['adel'].rdefs[('Personne', 'String')].order = 6 |
|
355 |
migrschema['ass'].rdefs[('Personne', 'String')].order = 5 |
|
0 | 356 |
migrschema['Personne'].description = 'blabla bla' |
1787 | 357 |
migrschema['titre'].description = 'usually a title' |
4103
dc04bede3502
yams api update
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4100
diff
changeset
|
358 |
migrschema['titre'].rdefs[('Personne', 'String')].description = 'title for this person' |
4191
01638461d4b0
test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4103
diff
changeset
|
359 |
delete_concerne_rqlexpr = self._rrqlexpr_rset('delete', 'concerne') |
01638461d4b0
test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4103
diff
changeset
|
360 |
add_concerne_rqlexpr = self._rrqlexpr_rset('add', 'concerne') |
6427
c8a5ac2d1eaa
[schema / sources] store data sources as cubicweb entities
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6417
diff
changeset
|
361 |
|
1787 | 362 |
self.mh.cmd_sync_schema_props_perms(commit=False) |
363 |
||
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
364 |
self.assertEqual(cursor.execute('Any D WHERE X name "Personne", X description D')[0][0], |
0 | 365 |
'blabla bla') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
366 |
self.assertEqual(cursor.execute('Any D WHERE X name "titre", X description D')[0][0], |
0 | 367 |
'usually a title') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
368 |
self.assertEqual(cursor.execute('Any D WHERE X relation_type RT, RT name "titre",' |
0 | 369 |
'X from_entity FE, FE name "Personne",' |
370 |
'X description D')[0][0], |
|
371 |
'title for this person') |
|
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
372 |
rinorder = [n for n, in cursor.execute( |
9151
78071e41926f
[test] give a non-ambiguous order to sync_schema assertion (closes #3001959)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8947
diff
changeset
|
373 |
'Any N ORDERBY O,N WHERE X is CWAttribute, X relation_type RT, RT name N,' |
2637
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
374 |
'X from_entity FE, FE name "Personne",' |
07103211e511
R [test] update and fix deprecation warnings
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2608
diff
changeset
|
375 |
'X ordernum O')] |
2930
d7c23b2c7538
some test fixes, more in the 3.5 branch
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2903
diff
changeset
|
376 |
expected = [u'nom', u'prenom', u'sexe', u'promo', u'ass', u'adel', u'titre', |
9151
78071e41926f
[test] give a non-ambiguous order to sync_schema assertion (closes #3001959)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8947
diff
changeset
|
377 |
u'web', u'tel', u'fax', u'datenaiss', u'test', u'tzdatenaiss', |
7242
7c1937215db9
fix failing test_migration test caused by schema change
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
7078
diff
changeset
|
378 |
u'description', u'firstname', |
7c1937215db9
fix failing test_migration test caused by schema change
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
7078
diff
changeset
|
379 |
u'creation_date', u'cwuri', u'modification_date'] |
9151
78071e41926f
[test] give a non-ambiguous order to sync_schema assertion (closes #3001959)
Aurelien Campeas <aurelien.campeas@logilab.fr>
parents:
8947
diff
changeset
|
380 |
self.assertEqual(expected, rinorder) |
0 | 381 |
|
382 |
# test permissions synchronization #################################### |
|
383 |
# new rql expr to add note entity |
|
384 |
eexpr = self._erqlexpr_entity('add', 'Note') |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
385 |
self.assertEqual(eexpr.expression, |
0 | 386 |
'X ecrit_part PE, U in_group G, ' |
387 |
'PE require_permission P, P name "add_note", P require_group G') |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
388 |
self.assertEqual([et.name for et in eexpr.reverse_add_permission], ['Note']) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
389 |
self.assertEqual(eexpr.reverse_read_permission, ()) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
390 |
self.assertEqual(eexpr.reverse_delete_permission, ()) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
391 |
self.assertEqual(eexpr.reverse_update_permission, ()) |
0 | 392 |
# no more rqlexpr to delete and add para attribute |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
393 |
self.assertFalse(self._rrqlexpr_rset('add', 'para')) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
394 |
self.assertFalse(self._rrqlexpr_rset('delete', 'para')) |
1787 | 395 |
# new rql expr to add ecrit_par relation |
0 | 396 |
rexpr = self._rrqlexpr_entity('add', 'ecrit_par') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
397 |
self.assertEqual(rexpr.expression, |
0 | 398 |
'O require_permission P, P name "add_note", ' |
399 |
'U in_group G, P require_group G') |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
400 |
self.assertEqual([rdef.rtype.name for rdef in rexpr.reverse_add_permission], ['ecrit_par']) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
401 |
self.assertEqual(rexpr.reverse_read_permission, ()) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
402 |
self.assertEqual(rexpr.reverse_delete_permission, ()) |
0 | 403 |
# no more rqlexpr to delete and add travaille relation |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
404 |
self.assertFalse(self._rrqlexpr_rset('add', 'travaille')) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
405 |
self.assertFalse(self._rrqlexpr_rset('delete', 'travaille')) |
0 | 406 |
# no more rqlexpr to delete and update Societe entity |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
407 |
self.assertFalse(self._erqlexpr_rset('update', 'Societe')) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
408 |
self.assertFalse(self._erqlexpr_rset('delete', 'Societe')) |
0 | 409 |
# no more rqlexpr to read Affaire entity |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
410 |
self.assertFalse(self._erqlexpr_rset('read', 'Affaire')) |
0 | 411 |
# rqlexpr to update Affaire entity has been updated |
412 |
eexpr = self._erqlexpr_entity('update', 'Affaire') |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
413 |
self.assertEqual(eexpr.expression, 'X concerne S, S owned_by U') |
0 | 414 |
# no change for rqlexpr to add and delete Affaire entity |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
415 |
self.assertEqual(len(self._erqlexpr_rset('delete', 'Affaire')), 1) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
416 |
self.assertEqual(len(self._erqlexpr_rset('add', 'Affaire')), 1) |
0 | 417 |
# no change for rqlexpr to add and delete concerne relation |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
418 |
self.assertEqual(len(self._rrqlexpr_rset('delete', 'concerne')), len(delete_concerne_rqlexpr)) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
419 |
self.assertEqual(len(self._rrqlexpr_rset('add', 'concerne')), len(add_concerne_rqlexpr)) |
0 | 420 |
# * migrschema involve: |
4635
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
421 |
# * 7 rqlexprs deletion (2 in (Affaire read + Societe + travaille) + 1 |
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
422 |
# in para attribute) |
0 | 423 |
# * 1 update (Affaire update) |
424 |
# * 2 new (Note add, ecrit_par add) |
|
4635
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
425 |
# * 2 implicit new for attributes update_permission (Note.para, Personne.test) |
0 | 426 |
# remaining orphan rql expr which should be deleted at commit (composite relation) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
427 |
self.assertEqual(cursor.execute('Any COUNT(X) WHERE X is RQLExpression, ' |
4635
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
428 |
'NOT ET1 read_permission X, NOT ET2 add_permission X, ' |
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
429 |
'NOT ET3 delete_permission X, NOT ET4 update_permission X')[0][0], |
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
430 |
7+1) |
0 | 431 |
# finally |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
432 |
self.assertEqual(cursor.execute('Any COUNT(X) WHERE X is RQLExpression')[0][0], |
4635
44a883148ab4
fix sync_schema_props_perms test
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4191
diff
changeset
|
433 |
nbrqlexpr_start + 1 + 2 + 2) |
6208
07b176640a8c
unique_together integration in CW (alf+syt)
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6163
diff
changeset
|
434 |
self.mh.commit() |
07b176640a8c
unique_together integration in CW (alf+syt)
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6163
diff
changeset
|
435 |
# unique_together test |
07b176640a8c
unique_together integration in CW (alf+syt)
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6163
diff
changeset
|
436 |
self.assertEqual(len(self.schema.eschema('Personne')._unique_together), 1) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
437 |
self.assertItemsEqual(self.schema.eschema('Personne')._unique_together[0], |
6208
07b176640a8c
unique_together integration in CW (alf+syt)
Alexandre Fayolle <alexandre.fayolle@logilab.fr>
parents:
6163
diff
changeset
|
438 |
('nom', 'prenom', 'datenaiss')) |
6635
4e560631f36d
[test] repair test: we now have another unique constraint on CWSourceHostConfig
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6632
diff
changeset
|
439 |
rset = cursor.execute('Any C WHERE C is CWUniqueTogetherConstraint, C constraint_of ET, ET name "Personne"') |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
440 |
self.assertEqual(len(rset), 1) |
6815
a84190d4e78c
[schema] fix pb with ambiguous relation used within UniqueTogetherConstraint by having CWUniqueTogetherConstraint.relation targeting CWRType instead of CWAttribute/CWRelation. This fixes 3.10.7 migration.
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6796
diff
changeset
|
441 |
relations = [r.name for r in rset.get_entity(0, 0).relations] |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
442 |
self.assertItemsEqual(relations, ('nom', 'prenom', 'datenaiss')) |
0 | 443 |
|
444 |
def _erqlexpr_rset(self, action, ertype): |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
1263
diff
changeset
|
445 |
rql = 'RQLExpression X WHERE ET is CWEType, ET %s_permission X, ET name %%(name)s' % action |
2903
043c8fcb3819
[migration] drop rqlcursor
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
446 |
return self.mh.session.execute(rql, {'name': ertype}) |
0 | 447 |
def _erqlexpr_entity(self, action, ertype): |
448 |
rset = self._erqlexpr_rset(action, ertype) |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
449 |
self.assertEqual(len(rset), 1) |
0 | 450 |
return rset.get_entity(0, 0) |
451 |
def _rrqlexpr_rset(self, action, ertype): |
|
4191
01638461d4b0
test update. All cw tests OK
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4103
diff
changeset
|
452 |
rql = 'RQLExpression X WHERE RT is CWRType, RDEF %s_permission X, RT name %%(name)s, RDEF relation_type RT' % action |
2903
043c8fcb3819
[migration] drop rqlcursor
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2745
diff
changeset
|
453 |
return self.mh.session.execute(rql, {'name': ertype}) |
0 | 454 |
def _rrqlexpr_entity(self, action, ertype): |
455 |
rset = self._rrqlexpr_rset(action, ertype) |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
456 |
self.assertEqual(len(rset), 1) |
0 | 457 |
return rset.get_entity(0, 0) |
1787 | 458 |
|
0 | 459 |
def test_set_size_constraint(self): |
460 |
# existing previous value |
|
461 |
try: |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
1263
diff
changeset
|
462 |
self.mh.cmd_set_size_constraint('CWEType', 'name', 128) |
0 | 463 |
finally: |
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
1263
diff
changeset
|
464 |
self.mh.cmd_set_size_constraint('CWEType', 'name', 64) |
0 | 465 |
# non existing previous value |
466 |
try: |
|
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
1263
diff
changeset
|
467 |
self.mh.cmd_set_size_constraint('CWEType', 'description', 256) |
0 | 468 |
finally: |
1398
5fe84a5f7035
rename internal entity types to have CW prefix instead of E
sylvain.thenault@logilab.fr
parents:
1263
diff
changeset
|
469 |
self.mh.cmd_set_size_constraint('CWEType', 'description', None) |
0 | 470 |
|
7073
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
471 |
@tag('longrun') |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
472 |
def test_add_remove_cube_and_deps(self): |
0 | 473 |
cubes = set(self.config.cubes()) |
474 |
schema = self.repo.schema |
|
8696
0bb18407c053
[toward py3k] rewrite dict.keys() and dict.values() (part of #2711624)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
8694
diff
changeset
|
475 |
self.assertEqual(sorted((str(s), str(o)) for s, o in schema['see_also'].rdefs.iterkeys()), |
439 | 476 |
sorted([('EmailThread', 'EmailThread'), ('Folder', 'Folder'), |
477 |
('Bookmark', 'Bookmark'), ('Bookmark', 'Note'), |
|
478 |
('Note', 'Note'), ('Note', 'Bookmark')])) |
|
0 | 479 |
try: |
439 | 480 |
try: |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
481 |
self.mh.cmd_remove_cube('email', removedeps=True) |
439 | 482 |
# file was there because it's an email dependancy, should have been removed |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
483 |
self.assertFalse('email' in self.config.cubes()) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
484 |
self.assertFalse(self.config.cube_dir('email') in self.config.cubes_path()) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
485 |
self.assertFalse('file' in self.config.cubes()) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
486 |
self.assertFalse(self.config.cube_dir('file') in self.config.cubes_path()) |
5575
8a531340c3ef
no more Image type w/ cw 3.9
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
487 |
for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', |
439 | 488 |
'sender', 'in_thread', 'reply_to', 'data_format'): |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
489 |
self.assertFalse(ertype in schema, ertype) |
8696
0bb18407c053
[toward py3k] rewrite dict.keys() and dict.values() (part of #2711624)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
8694
diff
changeset
|
490 |
self.assertEqual(sorted(schema['see_also'].rdefs.iterkeys()), |
439 | 491 |
sorted([('Folder', 'Folder'), |
492 |
('Bookmark', 'Bookmark'), |
|
493 |
('Bookmark', 'Note'), |
|
494 |
('Note', 'Note'), |
|
495 |
('Note', 'Bookmark')])) |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
496 |
self.assertEqual(sorted(schema['see_also'].subjects()), ['Bookmark', 'Folder', 'Note']) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
497 |
self.assertEqual(sorted(schema['see_also'].objects()), ['Bookmark', 'Folder', 'Note']) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
498 |
self.assertEqual(self.session.execute('Any X WHERE X pkey "system.version.email"').rowcount, 0) |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
499 |
self.assertEqual(self.session.execute('Any X WHERE X pkey "system.version.file"').rowcount, 0) |
439 | 500 |
except : |
501 |
import traceback |
|
502 |
traceback.print_exc() |
|
503 |
raise |
|
0 | 504 |
finally: |
47
54087a269bdd
fix tests (some where broken after ECache was added)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
0
diff
changeset
|
505 |
self.mh.cmd_add_cube('email') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
506 |
self.assertTrue('email' in self.config.cubes()) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
507 |
self.assertTrue(self.config.cube_dir('email') in self.config.cubes_path()) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
508 |
self.assertTrue('file' in self.config.cubes()) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
509 |
self.assertTrue(self.config.cube_dir('file') in self.config.cubes_path()) |
5575
8a531340c3ef
no more Image type w/ cw 3.9
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
5426
diff
changeset
|
510 |
for ertype in ('Email', 'EmailThread', 'EmailPart', 'File', |
0 | 511 |
'sender', 'in_thread', 'reply_to', 'data_format'): |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
512 |
self.assertTrue(ertype in schema, ertype) |
8696
0bb18407c053
[toward py3k] rewrite dict.keys() and dict.values() (part of #2711624)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
8694
diff
changeset
|
513 |
self.assertEqual(sorted(schema['see_also'].rdefs.iterkeys()), |
439 | 514 |
sorted([('EmailThread', 'EmailThread'), ('Folder', 'Folder'), |
515 |
('Bookmark', 'Bookmark'), |
|
516 |
('Bookmark', 'Note'), |
|
517 |
('Note', 'Note'), |
|
518 |
('Note', 'Bookmark')])) |
|
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
519 |
self.assertEqual(sorted(schema['see_also'].subjects()), ['Bookmark', 'EmailThread', 'Folder', 'Note']) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
520 |
self.assertEqual(sorted(schema['see_also'].objects()), ['Bookmark', 'EmailThread', 'Folder', 'Note']) |
47
54087a269bdd
fix tests (some where broken after ECache was added)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
0
diff
changeset
|
521 |
from cubes.email.__pkginfo__ import version as email_version |
54087a269bdd
fix tests (some where broken after ECache was added)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
0
diff
changeset
|
522 |
from cubes.file.__pkginfo__ import version as file_version |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
523 |
self.assertEqual(self.session.execute('Any V WHERE X value V, X pkey "system.version.email"')[0][0], |
47
54087a269bdd
fix tests (some where broken after ECache was added)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
0
diff
changeset
|
524 |
email_version) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
525 |
self.assertEqual(self.session.execute('Any V WHERE X value V, X pkey "system.version.file"')[0][0], |
47
54087a269bdd
fix tests (some where broken after ECache was added)
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
0
diff
changeset
|
526 |
file_version) |
0 | 527 |
# trick: overwrite self.maxeid to avoid deletion of just reintroduced |
528 |
# types (and their associated tables!) |
|
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
529 |
self.maxeid = self.session.execute('Any MAX(X)')[0][0] |
0 | 530 |
# why this commit is necessary is unclear to me (though without it |
531 |
# next test may fail complaining of missing tables |
|
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
532 |
self.session.commit(free_cnxset=False) |
972 | 533 |
|
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
534 |
|
7073
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
535 |
@tag('longrun') |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
536 |
def test_add_remove_cube_no_deps(self): |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
537 |
cubes = set(self.config.cubes()) |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
538 |
schema = self.repo.schema |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
539 |
try: |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
540 |
try: |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
541 |
self.mh.cmd_remove_cube('email') |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
542 |
cubes.remove('email') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
543 |
self.assertFalse('email' in self.config.cubes()) |
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
544 |
self.assertTrue('file' in self.config.cubes()) |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
545 |
for ertype in ('Email', 'EmailThread', 'EmailPart', |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
546 |
'sender', 'in_thread', 'reply_to'): |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
547 |
self.assertFalse(ertype in schema, ertype) |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
548 |
except : |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
549 |
import traceback |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
550 |
traceback.print_exc() |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
551 |
raise |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
552 |
finally: |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
553 |
self.mh.cmd_add_cube('email') |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
554 |
self.assertTrue('email' in self.config.cubes()) |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
555 |
# trick: overwrite self.maxeid to avoid deletion of just reintroduced |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
556 |
# types (and their associated tables!) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
557 |
self.maxeid = self.session.execute('Any MAX(X)')[0][0] |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
558 |
# why this commit is necessary is unclear to me (though without it |
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
559 |
# next test may fail complaining of missing tables |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
560 |
self.session.commit(free_cnxset=False) |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
561 |
|
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
562 |
def test_remove_dep_cube(self): |
6796
e70ca9abfc51
[unittest2] update to unittest2 assertRaises api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6795
diff
changeset
|
563 |
with self.assertRaises(ConfigurationError) as cm: |
e70ca9abfc51
[unittest2] update to unittest2 assertRaises api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6795
diff
changeset
|
564 |
self.mh.cmd_remove_cube('file') |
e70ca9abfc51
[unittest2] update to unittest2 assertRaises api
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6795
diff
changeset
|
565 |
self.assertEqual(str(cm.exception), "can't remove cube file, used as a dependency") |
2124
5a0b02f37b23
set removedeps to False by default, raise an exception instead of a simple assertion for error, more remove_cube tests
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
1977
diff
changeset
|
566 |
|
7073
4ce9e536dd66
[test] add some tags
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6816
diff
changeset
|
567 |
@tag('longrun') |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
568 |
def test_introduce_base_class(self): |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
569 |
self.mh.cmd_add_entity_type('Para') |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
570 |
self.mh.repo.schema.rebuild_infered_relations() |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
571 |
self.assertEqual(sorted(et.type for et in self.schema['Para'].specialized_by()), |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
572 |
['Note']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
573 |
self.assertEqual(self.schema['Note'].specializes().type, 'Para') |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
574 |
self.mh.cmd_add_entity_type('Text') |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
575 |
self.mh.repo.schema.rebuild_infered_relations() |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
576 |
self.assertEqual(sorted(et.type for et in self.schema['Para'].specialized_by()), |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
577 |
['Note', 'Text']) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
578 |
self.assertEqual(self.schema['Text'].specializes().type, 'Para') |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
579 |
# test columns have been actually added |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
580 |
text = self.session.execute('INSERT Text X: X para "hip", X summary "hop", X newattr "momo"').get_entity(0, 0) |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
581 |
note = self.session.execute('INSERT Note X: X para "hip", X shortpara "hop", X newattr "momo", X unique_id "x"').get_entity(0, 0) |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
582 |
aff = self.session.execute('INSERT Affaire X').get_entity(0, 0) |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
583 |
self.assertTrue(self.session.execute('SET X newnotinlined Y WHERE X eid %(x)s, Y eid %(y)s', |
5174
78438ad513ca
#759035: Automate addition of eid cachekey in RQL analysis
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
584 |
{'x': text.eid, 'y': aff.eid})) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
585 |
self.assertTrue(self.session.execute('SET X newnotinlined Y WHERE X eid %(x)s, Y eid %(y)s', |
5174
78438ad513ca
#759035: Automate addition of eid cachekey in RQL analysis
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
586 |
{'x': note.eid, 'y': aff.eid})) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
587 |
self.assertTrue(self.session.execute('SET X newinlined Y WHERE X eid %(x)s, Y eid %(y)s', |
5174
78438ad513ca
#759035: Automate addition of eid cachekey in RQL analysis
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
588 |
{'x': text.eid, 'y': aff.eid})) |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
589 |
self.assertTrue(self.session.execute('SET X newinlined Y WHERE X eid %(x)s, Y eid %(y)s', |
5174
78438ad513ca
#759035: Automate addition of eid cachekey in RQL analysis
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
4774
diff
changeset
|
590 |
{'x': note.eid, 'y': aff.eid})) |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
591 |
# XXX remove specializes by ourselves, else tearDown fails when removing |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
592 |
# Para because of Note inheritance. This could be fixed by putting the |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
593 |
# MemSchemaCWETypeDel(session, name) operation in the |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
594 |
# after_delete_entity(CWEType) hook, since in that case the MemSchemaSpecializesDel |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
595 |
# operation would be removed before, but I'm not sure this is a desired behaviour. |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
596 |
# |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
597 |
# also we need more tests about introducing/removing base classes or |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
598 |
# specialization relationship... |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
599 |
self.session.data['rebuild-infered'] = True |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
600 |
try: |
8935
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
601 |
self.session.execute('DELETE X specializes Y WHERE Y name "Para"') |
a8a9ba6f4cdd
[server/test] use server config in migration
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
8696
diff
changeset
|
602 |
self.session.commit(free_cnxset=False) |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
603 |
finally: |
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
604 |
self.session.data['rebuild-infered'] = False |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
605 |
self.assertEqual(sorted(et.type for et in self.schema['Para'].specialized_by()), |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
606 |
[]) |
6340
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
607 |
self.assertEqual(self.schema['Note'].specializes(), None) |
470d8e828fda
[test] update test to unittest2 api (still using lgc.testlib though)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
6208
diff
changeset
|
608 |
self.assertEqual(self.schema['Text'].specializes(), None) |
2963
12ad88615a12
test and fix migration introducing base classes (w/ regard to yams inheritance)
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
2930
diff
changeset
|
609 |
|
6163
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
610 |
|
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
611 |
def test_add_symmetric_relation_type(self): |
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
612 |
same_as_sql = self.mh.sqlexec("SELECT sql FROM sqlite_master WHERE type='table' " |
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
613 |
"and name='same_as_relation'") |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
614 |
self.assertFalse(same_as_sql) |
6163
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
615 |
self.mh.cmd_add_relation_type('same_as') |
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
616 |
same_as_sql = self.mh.sqlexec("SELECT sql FROM sqlite_master WHERE type='table' " |
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
617 |
"and name='same_as_relation'") |
7791
31bb51ea5485
[deprecation] fix unittest pending deprecation warnings on failIf/failUnless methods family
Sylvain Thénault <sylvain.thenault@logilab.fr>
parents:
7398
diff
changeset
|
618 |
self.assertTrue(same_as_sql) |
6163
407f54345687
[migration] fix add_relation_type() for symmetric relations
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
5575
diff
changeset
|
619 |
|
0 | 620 |
if __name__ == '__main__': |
621 |
unittest_main() |