|
|
DescriptionI have added tests and there are 4 tests which fail. The reasons have been tagged with FIXME in the test file
The tests have a coverage of 96.15% of the read method.
The unhandled cases are:
Lines 590-596 (Will never reach there because function field spec does not allow the use of datetime_field by design. So no use in read method)
Line 657,
Line 660 - Need to enter invalid model_name in reference field,
Line 663 - Need to enter illegal_id in reference field
Line 687 - Need to enter model_name in reference field,
Line 690 - Need to enter illegal_id in reference field
Patch Set 1 #
Total comments: 60
Patch Set 2 : Changes adviced by cedk #
Total comments: 20
Patch Set 3 : All object lookups moved to setup, uses assertEqual and assertFalse instead of pythonic comparison #
Total comments: 1
Patch Set 4 : Added the tests missed in the previous push #
Total comments: 6
Patch Set 5 : Added tests for language and fixed issue pointed by cedk #Patch Set 6 : Fixed a line which had more than 80 chars #
Total comments: 3
MessagesTotal messages: 18
http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py File trytond/test/model_sql.py (right): http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode8 trytond/test/model_sql.py:8: class SQLModel(ModelSQL): Name the models with Read inside because they are used for read test http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode66 trytond/test/model_sql.py:66: 'MIN(COALESCE("%s".write_date, "%s".create_date)) AS date' % (table, table), 80cols http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode69 trytond/test/model_sql.py:69: query = ('SELECT ' + ', '.join(fields) + ' from') + \ upper case for SQL http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode69 trytond/test/model_sql.py:69: query = ('SELECT ' + ', '.join(fields) + ' from') + \ Can use parenthesis instead of "\" http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode87 trytond/test/model_sql.py:87: InheritsModel() Space before instance http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:12: class ModelSQLTestCase(unittest.TestCase): I think it is better to name the test case with only read inside. And the file is already big just for read test http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:29: self.assertRaises(Exception, self.sql_model.read, 999999) You can use -1 which is sure to not exist http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:40: self.assert_(type(self.sql_model.read(create_id))==dict) space around == http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:40: self.assert_(type(self.sql_model.read(create_id))==dict) Can't you test also the returned values? http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:41: self.assert_(type(self.sql_model.read([create_id]))==list) space around == http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:58: data_1 = {'field_char':'Something'} space after : http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:76: def test0035read(self): As it is the initial version, you could renumber the tests http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:98: # not have this field at all Or it should raise an exception Because I don't think reference field should work like many2one. I doesn't in BrowseRecord http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:114: 'field_int':1, space after : http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:125: read_data['field_m2o.field_char']==data_1['field_char'] space around == http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:128: read_data = self.sql_model2.read( Don't test read_data? http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:141: read_data['field_m2o_simple.field_char']==data_1['field_char'] space around == http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:158: data_1 = {'field_char':'Something'} space around : http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:163: 'field_int':101, space after : http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:172: self.assert_(len(read_data.keys())==2) space around == http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:180: self.assert_(read_data['field_m2o.field_char']=='Something') space around == http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:184: for key, value in data.items(): You should also test with data_1 http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:185: self.assert_(read_data[key]==value) space around == http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:248: ids = [1] Where does 1 come? http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:250: self.sql_model_history.read(ids) You should test read data http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:258: data = {'field_char':'Something', 'field_boolean':False} space after : and better to put it on multilines http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:273: 'name':'test Group', space after : http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:274: 'model':ir_model_obj.search([('model', '=', 'test.sqlmodel')])[0], 80cols http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:280: 'field':ir_field_obj.search( More readable if you put search outside the rule {} definition
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py File trytond/test/model_sql.py (right): http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode70 trytond/test/model_sql.py:70: (' %s' % table) You must group by something.
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py File trytond/test/model_sql.py (right): http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode70 trytond/test/model_sql.py:70: (' %s' % table) On 2010/09/25 10:07:20, ced wrote: > You must group by something. Or don't use MIN etc.
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py File trytond/test/model_sql.py (right): http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode8 trytond/test/model_sql.py:8: class SQLModel(ModelSQL): On 2010/09/25 08:04:28, ced wrote: > Name the models with Read inside because they are used for read test Done. http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode66 trytond/test/model_sql.py:66: 'MIN(COALESCE("%s".write_date, "%s".create_date)) AS date' % (table, table), On 2010/09/25 08:04:28, ced wrote: > 80cols Done. http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode66 trytond/test/model_sql.py:66: 'MIN(COALESCE("%s".write_date, "%s".create_date)) AS date' % (table, table), On 2010/09/25 08:04:28, ced wrote: > 80cols Done. http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode69 trytond/test/model_sql.py:69: query = ('SELECT ' + ', '.join(fields) + ' from') + \ On 2010/09/25 08:04:28, ced wrote: > upper case for SQL Done. http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode69 trytond/test/model_sql.py:69: query = ('SELECT ' + ', '.join(fields) + ' from') + \ On 2010/09/25 08:04:28, ced wrote: > Can use parenthesis instead of "\" Done. http://codereview.appspot.com/2214046/diff/1/trytond/test/model_sql.py#newcode87 trytond/test/model_sql.py:87: InheritsModel() On 2010/09/25 08:04:28, ced wrote: > Space before instance Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:12: class ModelSQLTestCase(unittest.TestCase): On 2010/09/25 08:04:28, ced wrote: > I think it is better to name the test case with only read inside. > And the file is already big just for read test Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:29: self.assertRaises(Exception, self.sql_model.read, 999999) On 2010/09/25 08:04:28, ced wrote: > You can use -1 which is sure to not exist Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:40: self.assert_(type(self.sql_model.read(create_id))==dict) On 2010/09/25 08:04:28, ced wrote: > space around == Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:40: self.assert_(type(self.sql_model.read(create_id))==dict) On 2010/09/25 08:04:28, ced wrote: > Can't you test also the returned values? Tested right below :) http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:41: self.assert_(type(self.sql_model.read([create_id]))==list) On 2010/09/25 08:04:28, ced wrote: > space around == Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:58: data_1 = {'field_char':'Something'} On 2010/09/25 08:04:28, ced wrote: > space after : Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:76: def test0035read(self): On 2010/09/25 08:04:28, ced wrote: > As it is the initial version, you could renumber the tests Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:114: 'field_int':1, On 2010/09/25 08:04:28, ced wrote: > space after : Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:125: read_data['field_m2o.field_char']==data_1['field_char'] On 2010/09/25 08:04:28, ced wrote: > space around == Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:128: read_data = self.sql_model2.read( On 2010/09/25 08:04:28, ced wrote: > Don't test read_data? Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:141: read_data['field_m2o_simple.field_char']==data_1['field_char'] On 2010/09/25 08:04:28, ced wrote: > space around == Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:158: data_1 = {'field_char':'Something'} On 2010/09/25 08:04:28, ced wrote: > space around : Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:163: 'field_int':101, On 2010/09/25 08:04:28, ced wrote: > space after : Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:172: self.assert_(len(read_data.keys())==2) On 2010/09/25 08:04:28, ced wrote: > space around == Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:180: self.assert_(read_data['field_m2o.field_char']=='Something') On 2010/09/25 08:04:28, ced wrote: > space around == Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:184: for key, value in data.items(): On 2010/09/25 08:04:28, ced wrote: > You should also test with data_1 Tested below http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:185: self.assert_(read_data[key]==value) On 2010/09/25 08:04:28, ced wrote: > space around == Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:248: ids = [1] On 2010/09/25 08:04:28, ced wrote: > Where does 1 come? Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:250: self.sql_model_history.read(ids) On 2010/09/25 08:04:28, ced wrote: > You should test read data Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:258: data = {'field_char':'Something', 'field_boolean':False} On 2010/09/25 08:04:28, ced wrote: > space after : > and better to put it on multilines Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:273: 'name':'test Group', On 2010/09/25 08:04:28, ced wrote: > space after : Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:274: 'model':ir_model_obj.search([('model', '=', 'test.sqlmodel')])[0], On 2010/09/25 08:04:28, ced wrote: > 80cols Done. http://codereview.appspot.com/2214046/diff/1/trytond/tests/test_modelsql.py#n... trytond/tests/test_modelsql.py:280: 'field':ir_field_obj.search( On 2010/09/25 08:04:28, ced wrote: > More readable if you put search outside the rule {} definition Done.
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py File trytond/test/model_sql.py (right): http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py#new... trytond/test/model_sql.py:51: class SQLReadModelHistory(ModelSQL): No more used http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py#new... trytond/test/model_sql.py:66: 'MIN(COALESCE("%s".write_date, "%s".create_date)) AS date' % ( Don't need of MIN http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py#new... trytond/test/model_sql.py:71: (' %s' % table)) Why not: ' FROM "%s"' % table btw: need " around table http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:23: self.sql_model_history = POOL.get('test.read_sqlmodel.history') no more used http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:108: ir_model_obj = POOL.get('ir.model') Can be put in setup http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:151: self.assert_( Perhaps it is better to use assertEqual http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:261: '%s.__id AS id' % table, quote around table http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:265: ('SELECT ') + no need of () http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:267: (' FROM %s' % table) quote around table http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:298: ir_rule_obj = POOL.get('ir.rule') Could be defined in setup
Sign in to reply to this message.
Updated code will follow http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py File trytond/test/model_sql.py (right): http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py#new... trytond/test/model_sql.py:51: class SQLReadModelHistory(ModelSQL): On 2010/09/25 11:31:24, ced wrote: > No more used Now used :) http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py#new... trytond/test/model_sql.py:66: 'MIN(COALESCE("%s".write_date, "%s".create_date)) AS date' % ( On 2010/09/25 11:31:24, ced wrote: > Don't need of MIN Done. http://codereview.appspot.com/2214046/diff/8001/trytond/test/model_sql.py#new... trytond/test/model_sql.py:71: (' %s' % table)) On 2010/09/25 11:31:24, ced wrote: > Why not: > > ' FROM "%s"' % table > > btw: need " around table Done. http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:23: self.sql_model_history = POOL.get('test.read_sqlmodel.history') On 2010/09/25 11:31:24, ced wrote: > no more used Done. http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:108: ir_model_obj = POOL.get('ir.model') On 2010/09/25 11:31:24, ced wrote: > Can be put in setup Done. http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:151: self.assert_( On 2010/09/25 11:31:24, ced wrote: > Perhaps it is better to use assertEqual Done. http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:261: '%s.__id AS id' % table, On 2010/09/25 11:31:24, ced wrote: > quote around table Done. http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:265: ('SELECT ') + On 2010/09/25 11:31:24, ced wrote: > no need of () Done. http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:267: (' FROM %s' % table) On 2010/09/25 11:31:24, ced wrote: > quote around table Done. http://codereview.appspot.com/2214046/diff/8001/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:298: ir_rule_obj = POOL.get('ir.rule') On 2010/09/25 11:31:24, ced wrote: > Could be defined in setup Done.
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/14001/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/14001/trytond/tests/test_modelsql.... trytond/tests/test_modelsql.py:283: read_data = self.sql_model_history.read(ids) check the read data
Sign in to reply to this message.
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:270: transaction.cursor.execute(select_query) In fact, here you only test create and write history. I think it should go on other tests. http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:287: self.assertEqual(read_data[0]['field_char'], data['field_char']) How can you be sure about the order?
Sign in to reply to this message.
Please suggest http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:270: transaction.cursor.execute(select_query) On 2010/09/25 12:49:29, ced wrote: > In fact, here you only test create and write history. > I think it should go on other tests. I think these should go to test0070read where history is tested? http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:287: self.assertEqual(read_data[0]['field_char'], data['field_char']) On 2010/09/25 12:49:29, ced wrote: > How can you be sure about the order? By default the order will be on ID? happy to change to a better way :)
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.py File trytond/tests/test_modelsql.py (right): http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:270: transaction.cursor.execute(select_query) On 2010/09/25 12:52:25, sharoonthomas wrote: > On 2010/09/25 12:49:29, ced wrote: > > In fact, here you only test create and write history. > > I think it should go on other tests. > > I think these should go to test0070read where history is tested? No sure it is low level check. But test0070read could be improved to test with different datetime http://codereview.appspot.com/2214046/diff/6002/trytond/tests/test_modelsql.p... trytond/tests/test_modelsql.py:287: self.assertEqual(read_data[0]['field_char'], data['field_char']) On 2010/09/25 12:52:25, sharoonthomas wrote: > On 2010/09/25 12:49:29, ced wrote: > > How can you be sure about the order? > > By default the order will be on ID? happy to change to a better way :) Yes but not sure that the ids are increasing. Perhaps sort on date
Sign in to reply to this message.
Sign in to reply to this message.
Sign in to reply to this message.
http://codereview.appspot.com/2214046/diff/8003/trytond/test/model_sql.py File trytond/test/model_sql.py (right): http://codereview.appspot.com/2214046/diff/8003/trytond/test/model_sql.py#new... trytond/test/model_sql.py:5: "Test Models for testing Model SQL" "Test Models for testing class ModelSQL" http://codereview.appspot.com/2214046/diff/8003/trytond/test/model_sql.py#new... trytond/test/model_sql.py:20: field_char_trans = fields.Char('Char field with translate', translate=True) field_translate is also Char and translate=True field_char_trans doesn't seem to be used later in tests. http://codereview.appspot.com/2214046/diff/8003/trytond/test/model_sql.py#new... trytond/test/model_sql.py:97: "An Model with 2 _inherits arrangement - Tests Read" A Model
Sign in to reply to this message.
|