def test_check_field_constraints(self): # This test case asserts that a migration from db ver 32 up to the latest # db with fields that fail the constraints still functions. self._initStartDB(32) field_dict = helpers.get_dummy_field() field_dict['instance'] = 'reference' field_dict['step_id'] = None field_dict['field_id'] = None db_create_field(self.store, field_dict, u'en') field_dict = helpers.get_dummy_field() field_dict['instance'] = 'instance' db_create_field(self.store, field_dict, u'en') field_dict = helpers.get_dummy_field() field_dict['instance'] = 'template' field_dict['step_id'] = None fld_grp_id = self.store.find(Field, Field.fieldgroup_id is not None)[0].fieldgroup_id field_dict['field_id'] = fld_grp_id db_create_field(self.store, field_dict, u'en') self.store.commit() ret = perform_system_update() shutil.rmtree(GLSettings.db_path) self.assertNotEqual(ret, -1)
def test_put(self): """ Attempt to update a field, changing its type via a put request. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) field = yield create_field(values, 'en') updated_sample_field = helpers.get_dummy_field() updated_sample_field['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') updated_sample_field['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) updated_sample_field.update(type='inputbox') handler = self.request(updated_sample_field, role='admin') yield handler.put(field['id']) self.assertEqual(len(self.responses), 1) self.assertEqual(field['id'], self.responses[0]['id']) self.assertEqual(self.responses[0]['type'], 'inputbox') wrong_sample_field = helpers.get_dummy_field() values['instance'] = 'instance' values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) wrong_sample_field.update(type='nonexistingfieldtype') handler = self.request(wrong_sample_field, role='admin') yield self.assertFailure(handler.put(field['id']), errors.InvalidInputFormat)
def test_post_create_from_template(self): """ Attempt to create a new field from template via post request """ values = helpers.get_dummy_field() values['instance'] = 'template' field_template = yield create_field(values, 'en') context = yield create_context(copy.deepcopy(self.dummyContext), 'en') step_id = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) values = helpers.get_dummy_field() values['instance'] = 'reference' values['template_id'] = field_template['id'] values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) handler = self.request(values, role='admin') yield handler.post() self.assertEqual(len(self.responses), 1) resp, = self.responses self.assertIn('id', resp) self.assertNotEqual(resp.get('options'), None)
def test_put(self): """ Attempt to update a field, changing its type via a put request. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) field = yield create_field(values, 'en') updated_sample_field = helpers.get_dummy_field() updated_sample_field['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') updated_sample_field[ 'step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) updated_sample_field.update(type='inputbox') handler = self.request(updated_sample_field, role='admin') yield handler.put(field['id']) self.assertEqual(len(self.responses), 1) self.assertEqual(field['id'], self.responses[0]['id']) self.assertEqual(self.responses[0]['type'], 'inputbox') wrong_sample_field = helpers.get_dummy_field() values['instance'] = 'instance' values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) wrong_sample_field.update(type='nonexistingfieldtype') handler = self.request(wrong_sample_field, role='admin') yield self.assertFailure(handler.put(field['id']), errors.InvalidInputFormat)
def test_check_field_constraints(self): # This test case asserts that a migration from db ver 32 up to 34 with # fields that fail the constraints still functions. self._initStartDB(32) field_dict = helpers.get_dummy_field() field_dict['instance'] = 'reference' field_dict['step_id'] = None field_dict['field_id'] = None db_create_field(self.store, field_dict, u'en') field_dict = helpers.get_dummy_field() field_dict['instance'] = 'instance' db_create_field(self.store, field_dict, u'en') field_dict = helpers.get_dummy_field() field_dict['instance'] = 'template' field_dict['step_id'] = None fld_grp_id = self.store.find(Field, Field.fieldgroup_id is not None)[0].fieldgroup_id field_dict['field_id'] = fld_grp_id db_create_field(self.store, field_dict, u'en') self.store.commit() ret = perform_system_update() shutil.rmtree(GLSettings.db_path) self.assertNotEqual(ret, -1)
def test_put(self): """ Attempt to update a field, changing its type via a put request. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) field = yield create_field(1, values, 'en') updated_sample_field = helpers.get_dummy_field() updated_sample_field['instance'] = 'instance' context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en') updated_sample_field['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) updated_sample_field.update(type=u'inputbox', options=[], x=3, y=3) handler = self.request(updated_sample_field, role='admin') response = yield handler.put(field['id']) self.assertEqual(field['id'], response['id']) self.assertEqual(3, response['x']) self.assertEqual(3, response['y']) wrong_sample_field = helpers.get_dummy_field() values['instance'] = 'instance' values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) wrong_sample_field.update(type='nonexistingfieldtype') handler = self.request(wrong_sample_field, role='admin') self.assertRaises(errors.InputValidationError, handler.put, field['id'])
def test_put(self): """ Attempt to update a field, changing its type via a put request. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(1, values, 'en') updated_sample_field = helpers.get_dummy_field() updated_sample_field['instance'] = 'template' updated_sample_field['type'] = 'inputbox' updated_sample_field['options'] = [] updated_sample_field['x'] = 3 updated_sample_field['y'] = 3 handler = self.request(updated_sample_field, role='admin') response = yield handler.put(field['id']) self.assertEqual(field['id'], response['id']) self.assertEqual(3, response['x']) self.assertEqual(3, response['y']) wrong_sample_field = helpers.get_dummy_field() wrong_sample_field.update(type='nonexistingfieldtype') handler = self.request(wrong_sample_field, role='admin') self.assertRaises(errors.InputValidationError, handler.put, field['id'])
def test_get(self): """ Retrieve a list of all fields, and verify that they do exist in the database. """ n = 3 ids = [] for _ in range(n): values = helpers.get_dummy_field() values['instance'] = 'template' handler = self.request(values, role='admin') response = yield handler.post() ids.append(response['id']) handler = self.request(role='admin') fields = yield handler.get() check_ids = [field.get('id') for field in fields] self.assertGreater(len(fields), n) self.assertNotIn(None, ids) for x in ids: self.assertIn(x, check_ids) # check tha childrens are not present in the list # as the list should contain only parents fields for field in fields: for child in field['children']: self.assertNotIn(child, ids)
def test_get(self): """ Retrieve a list of all fields, and verify that they do exist in the database. """ n = 3 ids = [] for i in range(3): values = helpers.get_dummy_field() values['instance'] = 'template' handler = self.request(values, role='admin') yield handler.post() ids.append(self.responses[i]['id']) self.responses = [] handler = self.request(role='admin') yield handler.get() fields, = self.responses check_ids = [field.get('id') for field in fields] types = [field.get('type') for field in fields] self.assertGreater(len(fields), 3) self.assertNotIn(None, ids) for x in ids: self.assertIn(x, check_ids) # check tha childrens are not present in the list # as the list should contain only parents fields for field in fields: for child in field['children']: self.assertNotIn(child, ids)
def test_post(self): """ Attempt to create a new field via a post request. """ values = helpers.get_dummy_field() values['instance'] = 'template' handler = self.request(values, role='admin') response = yield handler.post() self.assertIn('id', response) self.assertNotEqual(response.get('options'), None)
def test_post_create_from_template(self): """ Attempt to create a new field from template via post request """ values = helpers.get_dummy_field() values['instance'] = 'template' field_template = yield create_field(1, values, 'en') context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en') values = helpers.get_dummy_field() values['instance'] = 'reference' values['template_id'] = field_template['id'] values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) handler = self.request(values, role='admin') response = yield handler.post() self.assertIn('id', response) self.assertNotEqual(response.get('options'), None)
def test_delete(self): """ Create a new field template, then attempt to delete it. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(1, values, 'en') handler = self.request(role='admin') yield handler.delete(field['id'])
def test_get(self): """ Create a new field, the get it back using the receieved id. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(values, 'en') handler = self.request(role='admin') response = yield handler.get(field['id']) self.assertEqual(field['id'], response['id'])
def test_get(self): """ Create a new field, the get it back using the receieved id. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(values, 'en') handler = self.request(role='admin') yield handler.get(field['id']) self.assertEqual(len(self.responses), 1) self.assertEqual(field['id'], self.responses[0]['id'])
def test_delete(self): """ Create a new field, then attempt to delete it. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(1, copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) field = yield create_field(1, values, 'en') handler = self.request(role='admin') yield handler.delete(field['id'])
def test_post(self): """ Attempt to create a new field via a post request. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(1, self.dummyContext, 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) handler = self.request(values, role='admin') response = yield handler.post() self.assertIn('id', response) self.assertNotEqual(response.get('options'), None)
def test_put(self): """ Attempt to update a field, changing its type via a put request. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(values, 'en') updated_sample_field = helpers.get_dummy_field() updated_sample_field['instance'] = 'template' updated_sample_field['type'] ='inputbox' handler = self.request(updated_sample_field, role='admin') yield handler.put(field['id']) self.assertEqual(len(self.responses), 1) self.assertEqual(field['id'], self.responses[0]['id']) self.assertEqual(self.responses[0]['type'], 'inputbox') wrong_sample_field = helpers.get_dummy_field() wrong_sample_field.update(type='nonexistingfieldtype') handler = self.request(wrong_sample_field, role='admin') yield self.assertFailure(handler.put(field['id']), errors.InvalidInputFormat)
def test_put(self): """ Attempt to update a field, changing its type via a put request. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(values, 'en') updated_sample_field = helpers.get_dummy_field() updated_sample_field['instance'] = 'template' updated_sample_field['type'] = 'inputbox' handler = self.request(updated_sample_field, role='admin') response = yield handler.put(field['id']) self.assertEqual(field['id'], response['id']) self.assertEqual(response['type'], 'inputbox') wrong_sample_field = helpers.get_dummy_field() wrong_sample_field.update(type='nonexistingfieldtype') handler = self.request(wrong_sample_field, role='admin') self.assertRaises(errors.InvalidInputFormat, handler.put, field['id'])
def test_delete(self): """ Create a new field template, then attempt to delete it. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(values, 'en') handler = self.request(role='admin') yield handler.delete(field['id']) # second deletion operation should fail yield self.assertFailure(handler.delete(field['id']), errors.FieldIdNotFound)
def test_post(self): """ Attempt to create a new field via a post request. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(1, self.dummyContext, 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) handler = self.request(values, role='admin') response = yield handler.post() self.assertIn('id', response) self.assertNotEqual(response.get('options'), None)
def test_put(self): """ Attempt to update a field, changing its type via a put request. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(self.state, 1, copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) field = yield create_field(1, values, 'en') updated_sample_field = helpers.get_dummy_field() updated_sample_field['instance'] = 'instance' context = yield create_context(self.state, 1, copy.deepcopy(self.dummyContext), 'en') updated_sample_field[ 'step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) updated_sample_field.update(type=u'inputbox', options=[], x=3, y=3) handler = self.request(updated_sample_field, role='admin') response = yield handler.put(field['id']) self.assertEqual(field['id'], response['id']) self.assertEqual(3, response['x']) self.assertEqual(3, response['y']) # assert that it is impossible to change field type self.assertEqual(response['type'], 'multichoice') wrong_sample_field = helpers.get_dummy_field() values['instance'] = 'instance' values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) wrong_sample_field.update(type='nonexistingfieldtype') handler = self.request(wrong_sample_field, role='admin') self.assertRaises(errors.InputValidationError, handler.put, field['id'])
def test_delete(self): """ Create a new field, then attempt to delete it. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) field = yield create_field(values, 'en') handler = self.request(role='admin') yield handler.delete(field['id'])
def test_delete(self): """ Create a new field template, then attempt to delete it. """ values = helpers.get_dummy_field() values['instance'] = 'template' field = yield create_field(values, 'en') handler = self.request(role='admin') yield handler.delete(field['id']) self.assertEqual(handler.get_status(), 200) # second deletion operation should fail yield self.assertFailure(handler.delete(field['id']), errors.FieldIdNotFound)
def test_get(self): """ Create a new field, then get it back using the received id. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) field = yield create_field(values, 'en') handler = self.request(role='admin') response = yield handler.get(field['id']) self.assertEqual(field['id'], response['id'])
def test_get(self): """ Create a new field, then get it back using the received id. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) field = yield create_field(values, 'en') handler = self.request(role='admin') yield handler.get(field['id']) self.assertEqual(len(self.responses), 1) self.assertEqual(field['id'], self.responses[0]['id'])
def test_delete(self): """ Create a new field, then attempt to delete it. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire(context['questionnaire_id']) field = yield create_field(values, 'en') handler = self.request(role='admin') yield handler.delete(field['id']) self.assertEqual(handler.get_status(), 200) # second deletion operation should fail yield self.assertFailure(handler.delete(field['id']), errors.FieldIdNotFound)
def test_delete(self): """ Create a new field, then attempt to delete it. """ values = helpers.get_dummy_field() values['instance'] = 'instance' context = yield create_context(copy.deepcopy(self.dummyContext), 'en') values['step_id'] = yield get_id_of_first_step_of_questionnaire( context['questionnaire_id']) field = yield create_field(values, 'en') handler = self.request(role='admin') yield handler.delete(field['id']) # second deletion operation should fail yield self.assertFailure(handler.delete(field['id']), errors.FieldIdNotFound)