def create_dynamic_schema(objects_json, urls_json): schema = Schema("./tests/files/empty_schema.json") schema.create_objects(objects_json) schema.create_apis(urls_json) schema.validate_apis_and_objects() schema.add_relationship_objects() return schema
def test_create_objects(self): schema = Schema("./tests/files/empty_schema.json") self.assertEqual(schema.data_objects, {}) schema.create_objects({ "$resetPasswordRequest": { "email": "string" }, "$resetPasswordResponse": { "status": "string" } }) self.assertEqual(len(schema.data_objects), 2) self.assertEqual(schema.data_objects['$resetPasswordRequest'].name, '$resetPasswordRequest')
def test_create_schema(self): # Test that generally the schema object was created. # Will test individual pieces in unit tests. schema = Schema("./tests/files/test_schema.json") self.assertEqual(len(schema.data_objects), 3) self.assertEqual(len(schema.urls), 2) self.assertEqual(schema.schema_path, "./tests/files/test_schema.json")
def test_process_error(self, mock_subprocess): mock_subprocess.check_output.return_value = "Xcode.app" generator = ObjectiveCGenerator( "objc", Schema("./tests/files/test_schema.json"), "./tests/files/", "./core/data/path", True, "YetiProject") with self.assertRaises(SignalsError) as e: generator.process() self.assertEqual(e.exception.msg, "Must quit Xcode before writing to core data")
def test_data_model_header_template(self): schema = Schema("./tests/files/test_schema.json") self.assertTemplateEqual('data_model.h.j2', 'DataModel.h', { 'schema': schema, 'VIDEO_FIELD': Field.VIDEO, 'IMAGE_FIELD': Field.IMAGE, 'today': datetime.today(), 'endpoints': URL.URL_ENDPOINTS.keys(), }, expected_context=( datetime.today().strftime('%m/%d/%Y'), ))
def test_create_apis(self): schema = Schema("./tests/files/empty_schema.json") self.assertEqual(schema.urls, []) schema.create_apis([ { "url": "posts/", "get": { "#meta": "oauth2,optional", "response": { "200+": "$postResponse" } } }, { "url": "follows/:id/", "delete": { "#meta": "oauth2" } } ]) self.assertEqual(len(schema.urls), 2) self.assertEqual(schema.urls[0].url_path, "posts/")
def test_data_model_implementation_template(self): schema = Schema("./tests/files/test_schema.json") self.assertTemplateEqual('data_model.m.j2', 'DataModel.m', { 'project_name': "TestProject", 'schema': schema, 'VIDEO_FIELD': Field.VIDEO, 'IMAGE_FIELD': Field.IMAGE, 'today': datetime.today(), 'endpoints': URL.URL_ENDPOINTS.keys(), 'request_objects': ObjectiveCTemplate.get_request_objects(schema.data_objects), 'sanitize_field_name': sanitize_field_name }, expected_context=( datetime.today().strftime('%m/%d/%Y'), ))
def run_signals(schema, generator_name, data_models, core_data, check_xcode, project_name, save): schema = Schema(schema) generator = generators[generator_name](generator_name, schema, data_models, core_data, check_xcode, project_name) try: generator.process() if save: save_settings([data_models, core_data], schema, generator_name, data_models, core_data, project_name) except SignalsError as e: print(str(e)) else: progress('Finished generating your files!') finally: generator.clear_generated_code_files()
def test_check_setup_called_failure(self, mock_function): generator = ObjectiveCGenerator( "objc", Schema("./tests/files/test_schema.json"), "./tests/files/", "./core/data/path", False, "YetiProject") self.assertFalse(generator.check_setup_called())