public void GenerateAllPropertiesTestEdgeCases() { var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>(); var decorator = new StandardPropertyDecorator(); var internalClassProvider = new ObjectInternalClassProvider(); string name = "test"; Assert.Throws( typeof(ArgumentNullException), () => decorator.GenerateAllProperties(name, null, implDetails, internalClassProvider)); var schema = new MockSchema(); schema.Name = "test"; schema.SchemaDetails = null; Assert.Throws( typeof(ArgumentNullException), () => decorator.GenerateAllProperties(name, schema.SchemaDetails, implDetails, internalClassProvider)); schema.SchemaDetails = new JsonSchema(); schema.SchemaDetails.Properties = null; Assert.Throws( typeof(ArgumentNullException), () => decorator.GenerateAllProperties(null, schema.SchemaDetails, implDetails, internalClassProvider)); var expectedEmpty = decorator.GenerateAllProperties( name, schema.SchemaDetails, implDetails, internalClassProvider); Assert.IsNotNull(expectedEmpty); Assert.AreEqual(0, expectedEmpty.Count); }
public void GenerateSchemaClassesTest() { var generator = new GoogleSchemaGenerator(new List <ISchemaDecorator>(), "Fish.Chips"); var mockService = new MockService(); var mockSchema = new MockSchema(); mockSchema.Id = "Fish"; mockSchema.Name = "Fish"; mockSchema.SchemaDetails = new JsonSchema(); mockService.Schemas.Add("Fish", mockSchema); mockSchema = new MockSchema(); mockSchema.Id = "Chips"; mockSchema.Name = "Chips"; mockSchema.SchemaDetails = new JsonSchema(); mockService.Schemas.Add("Chips", mockSchema); CodeNamespace result = generator.GenerateSchemaClasses(mockService); Assert.IsNotNull(result); Assert.AreEqual(2, result.Types.Count); List <string> classNames = new List <string>(2); classNames.Add(result.Types[0].Name); classNames.Add(result.Types[1].Name); Assert.That(classNames.Contains("Fish")); Assert.That(classNames.Contains("Chips")); }
private Schema GetTestSchema(string id = "test", string name = "test", MockSchema mockSchema = null) { if (mockSchema == null) { mockSchema = new MockSchema { Name = "cclf1", Count = 10 }; } return(new Schema { Id = id, Name = name, PublisherMetaJson = JsonConvert.SerializeObject(mockSchema), Properties = { new Property { Id = "Id", Name = "Id", Type = PropertyType.Integer, IsKey = true }, new Property { Id = "Name", Name = "Name", Type = PropertyType.String } } }); }
public void DecorateClassGenerationTest() { var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>(); var decorator = new ArraySchemaDecorator(); var internalClassProvider = new ObjectInternalClassProvider(); var decl = new CodeTypeDeclaration(); var schema = new MockSchema(); schema.Name = "test"; schema.SchemaDetails = new JsonSchema(); schema.SchemaDetails.Type = JsonSchemaType.Array; schema.SchemaDetails.Items = new List <JsonSchema>(); schema.SchemaDetails.Items.Clear(); schema.SchemaDetails.Items.Add( new JsonSchema { Description = "Test", Id = "TestSchema", Type = JsonSchemaType.Object }); implDetails.Add(schema.SchemaDetails, new SchemaImplementationDetails()); implDetails.Add(schema.SchemaDetails.Items[0], new SchemaImplementationDetails()); Assert.DoesNotThrow(() => decorator.DecorateClass(decl, schema, implDetails, internalClassProvider)); Assert.That(decl.BaseTypes.Count, Is.EqualTo(1)); Assert.That(decl.BaseTypes[0].BaseType, Is.EqualTo(typeof(List <>).FullName)); // Subtype will only be created later on by the NestedClassGenerator, // and therefore cannot be tested here }
public void DecorateClassTestEdgeCases() { var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>(); var decorator = new ArraySchemaDecorator(); var internalClassProvider = new ObjectInternalClassProvider(); CodeTypeDeclaration declaration = null; var schema = new MockSchema(); schema.Name = "test"; schema.SchemaDetails = null; Assert.Throws( typeof(ArgumentNullException), () => decorator.DecorateClass(new CodeTypeDeclaration(), schema, implDetails, internalClassProvider)); schema.SchemaDetails = new JsonSchema(); schema.SchemaDetails.Type = JsonSchemaType.Float; Assert.DoesNotThrow( () => decorator.DecorateClass( declaration = new CodeTypeDeclaration(), schema, implDetails, internalClassProvider)); Assert.That(declaration.BaseTypes.Count, Is.EqualTo(0)); schema.SchemaDetails.Type = JsonSchemaType.Array; schema.SchemaDetails.Items = new List <JsonSchema>(); schema.SchemaDetails.Items.Add(new JsonSchema()); schema.SchemaDetails.Items.Add(new JsonSchema()); Assert.DoesNotThrow( () => decorator.DecorateClass( declaration = new CodeTypeDeclaration(), schema, implDetails, internalClassProvider)); Assert.That(declaration.BaseTypes.Count, Is.EqualTo(0)); }
public void DecorateClassTest() { // Init required vars. var decorator = new ResponseInterfaceDecorator(); var declaration = new CodeTypeDeclaration(); var schema = new MockSchema { SchemaDetails = new JsonSchema() }; var internalClassProvider = new ObjectInternalClassProvider(); var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>(); implDetails.Add(schema.SchemaDetails, new SchemaImplementationDetails()); // Test edge cases. Assert.Throws( typeof(ArgumentNullException), () => decorator.DecorateClass(null, schema, implDetails, internalClassProvider)); Assert.Throws( typeof(ArgumentNullException), () => decorator.DecorateClass(declaration, null, implDetails, internalClassProvider)); Assert.Throws( typeof(ArgumentNullException), () => decorator.DecorateClass(declaration, schema, null, internalClassProvider)); decorator.DecorateClass(declaration, schema, implDetails, internalClassProvider); Assert.AreEqual(0, declaration.BaseTypes.Count); Assert.AreEqual(0, declaration.Members.Count); // Test simple functionality. var details = new SchemaImplementationDetails { IsMethodResult = true }; implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails> { { schema.SchemaDetails, details } }; decorator.DecorateClass(declaration, schema, implDetails, internalClassProvider); Assert.AreEqual(1, declaration.BaseTypes.Count); Assert.AreEqual(2, declaration.Members.Count); // 1 property with a field. // Test with already existing e-tag field. declaration = new CodeTypeDeclaration(); declaration.Members.Add(new CodeMemberProperty() { Name = "ETag" }); decorator.DecorateClass(declaration, schema, implDetails, internalClassProvider); Assert.AreEqual(1, declaration.BaseTypes.Count); Assert.AreEqual(1, declaration.Members.Count); }
public void GenerateAllPropertiesTest() { var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>(); var schema = new MockSchema(); var internalClassProvider = new ObjectInternalClassProvider(); schema.SchemaDetails = new JsonSchema(); schema.SchemaDetails.Type = JsonSchemaType.Object; schema.SchemaDetails.Properties = new Dictionary <string, JsonSchema>(); implDetails.Add(schema.SchemaDetails, new SchemaImplementationDetails()); string name = "test"; foreach (var pair in StandardPropertyFieldDecoratorTest.NamesToType) { JsonSchema property = new JsonSchema(); property.Type = pair.Value; property.Id = pair.Key; property.Description = StandardPropertyFieldDecoratorTest.NamesToDescription[pair.Key]; schema.SchemaDetails.Properties.Add(pair.Key, property); implDetails.Add(property, new SchemaImplementationDetails()); } var decorator = new StandardPropertyDecorator(); IList <CodeMemberProperty> generatedProperties = decorator.GenerateAllProperties( name, schema.SchemaDetails, implDetails, internalClassProvider); Assert.NotNull(generatedProperties); Assert.AreEqual(StandardPropertyFieldDecoratorTest.NamesToType.Count, generatedProperties.Count); foreach (var field in generatedProperties) { Assert.That( StandardPropertyFieldDecoratorTest.NamesToType.ContainsKey(field.Name.ToLower()), "field name was not present in namesToType " + field.Name); } int item = 0; foreach (var pair in StandardPropertyFieldDecoratorTest.NamesToType) { var field = generatedProperties[item++]; Assert.AreEqual( pair.Key, field.Name.ToLower(), string.Format("Name different for expected at index {0}", item - 1)); Assert.AreEqual( SchemaDecoratorUtil.GetCodeType(new JsonSchema { Type = pair.Value }, null, internalClassProvider) .BaseType, field.Type.BaseType); } }
public void DecorateClassValidationTest() { var decl = new CodeTypeDeclaration(); var dec = new AdditionalPropertiesSchemaDecorator(); var schema = new MockSchema(); var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>(); var provider = new SchemaGenerator.NestedClassGenerator(decl, new ISchemaDecorator[0], ""); // Test all parameters. Assert.Throws <ArgumentNullException>(() => dec.DecorateClass(null, schema, implDetails, provider)); Assert.Throws <ArgumentNullException>(() => dec.DecorateClass(decl, null, implDetails, provider)); Assert.Throws <ArgumentNullException>(() => dec.DecorateClass(decl, schema, null, provider)); Assert.Throws <ArgumentNullException>(() => dec.DecorateClass(decl, schema, implDetails, null)); dec.DecorateClass(decl, schema, implDetails, provider); }
public void DecorateClassTest() { var decorator = new StandardPropertyDecorator(); var declaration = new CodeTypeDeclaration(); var schema = new MockSchema() { Name = "TestSchema", SchemaDetails = new JsonSchema() }; var internalClassProvider = new ObjectInternalClassProvider(); var implDetails = new Dictionary <JsonSchema, SchemaImplementationDetails>(); Assert.Throws( typeof(ArgumentNullException), () => decorator.DecorateClass(null, schema, implDetails, internalClassProvider)); Assert.Throws( typeof(ArgumentNullException), () => decorator.DecorateClass(declaration, null, implDetails, internalClassProvider)); Assert.Throws( typeof(ArgumentNullException), () => decorator.DecorateClass(declaration, schema, null, internalClassProvider)); decorator.DecorateClass(declaration, schema, implDetails, internalClassProvider); }
private static async Task <Schema> GetSchemaForMockSchema(IApiClient apiClient, Schema schema, MockSchema mockSchema) { var path = $"generate.json?array=true&count={10}&schema={mockSchema.Name}"; var response = await apiClient.PostAsync(path, null); var recordsList = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(await response.Content.ReadAsStringAsync()); var types = GetPropertyTypesFromRecords(recordsList); var record = recordsList.First(); var properties = new List <Property>(); foreach (var recordKey in record.Keys) { var property = new Property { Id = recordKey, Name = recordKey, Type = types[recordKey], IsKey = false, IsCreateCounter = false, IsUpdateCounter = false, TypeAtSource = "", IsNullable = true }; properties.Add(property); } schema.Properties.Clear(); schema.Properties.AddRange(properties); return(schema); }
public TruncatingSearchServiceTests() { schema = new MockSchema(); mockService = new MockSearchService(schema); sut = new TruncatingSearchService(mockService); }