public async Task GeneratesProperArraySampleDataFromExamples() { const string contractString = @"{ ""Contract"": { ""type"": ""object"", ""properties"": { ""Id"": { ""$ref"": ""#/Guid"" }, ""Timestamp"": { ""type"": ""string"", ""format"": ""date-time"" }, ""StringList"": { ""type"": ""array"", ""items"": { ""type"": ""string"" }, ""example"": [""Item1"", ""Item2""] }, ""IntList"": { ""type"": ""array"", ""items"": { ""type"": ""integer"" }, ""example"": 5 }, } }, ""Guid"": { ""type"": ""string"", ""pattern"": ""^(([0-9a-f]){8}-([0-9a-f]){4}-([0-9a-f]){4}-([0-9a-f]){4}-([0-9a-f]){12})$"" } }"; var contract = await AlreadyInDatabaseContract(modifyFieldsForContract : x => x.ContractString = contractString); var command = new SampleData.Command() { ContractId = contract.Id, VersionNumber = contract.VersionNumber }; var result = await Send(command); var messageDictionary = JsonConvert.DeserializeObject <CaseInsensitiveDictionary <object> >(result.SampleData); var stringArray = JsonConvert.DeserializeObject <List <string> >(messageDictionary["StringList"].ToString()); var intArray = JsonConvert.DeserializeObject <List <int> >(messageDictionary["IntList"].ToString()); foreach (var item in stringArray) { item.GetType().ShouldBe(typeof(string)); } foreach (var item in intArray) { item.GetType().ShouldBe(typeof(int)); } }
public async Task GeneratesProperNestedObjectSampleDataFromExamplesWithReferences() { const string contractString = @"{ ""Contract"": { ""type"": ""object"", ""properties"": { ""Id"": { ""$ref"": ""#/Guid"" }, ""Timestamp"": { ""type"": ""string"", ""format"": ""date-time"" }, ""LevelOne"": { ""type"": ""object"", ""properties"": { ""LevelTwo"": { ""type"": ""object"", ""properties"": { ""LevelThree"": { ""$ref"": ""#/Guid"" } } } } } } }, ""Guid"": { ""type"": ""string"", ""pattern"": ""^(([0-9a-f]){8}-([0-9a-f]){4}-([0-9a-f]){4}-([0-9a-f]){4}-([0-9a-f]){12})$"", ""example"": ""01234567-abcd-0123-abcd-0123456789ab"" } }"; var contract = await AlreadyInDatabaseContract(modifyFieldsForContract : x => x.ContractString = contractString); var command = new SampleData.Command() { ContractId = contract.Id, VersionNumber = contract.VersionNumber }; var result = await Send(command); var messageDictionary = JsonConvert.DeserializeObject <CaseInsensitiveDictionary <object> >(result.SampleData); var levelOne = JsonConvert.DeserializeObject <CaseInsensitiveDictionary <object> >(messageDictionary["LevelOne"].ToString()); var levelTwo = JsonConvert.DeserializeObject <CaseInsensitiveDictionary <object> >(levelOne["LevelTwo"].ToString()); levelTwo["LevelThree"].ShouldBe("01234567-abcd-0123-abcd-0123456789ab"); }
public async Task GeneratesDataWhenExamplesNotProvidedInContract() { const string contractString = @"{ ""Contract"": { ""type"": ""object"", ""properties"": { ""Id"": { ""$ref"": ""#/Guid"" }, ""Timestamp"": { ""type"": ""string"", ""format"": ""date-time"" }, ""Name"": { ""type"": ""string"" }, ""Age"": { ""type"": ""integer"", ""format"": ""int32"" } } }, ""Guid"": { ""type"": ""string"", ""pattern"": ""^(([0-9a-f]){8}-([0-9a-f]){4}-([0-9a-f]){4}-([0-9a-f]){4}-([0-9a-f]){12})$"" } }"; var contract = await AlreadyInDatabaseContract(modifyFieldsForContract : x => x.ContractString = contractString); var command = new SampleData.Command() { ContractId = contract.Id, VersionNumber = contract.VersionNumber }; var result = await Send(command); var messageDictionary = JsonConvert.DeserializeObject <CaseInsensitiveDictionary <object> >(result.SampleData); Guid.TryParse(messageDictionary["ID"].ToString(), out _).ShouldBe(true); DateTime.TryParse(messageDictionary["Timestamp"].ToString(), out _).ShouldBe(true); messageDictionary["Name"].ShouldBe("String text"); messageDictionary["Age"].ShouldBe(5); }
public async Task ShouldGenerateTestDataForKnownDataTypesUsingExamples() { var contract = await AlreadyInDatabaseContract(); var command = new SampleData.Command() { ContractId = contract.Id, VersionNumber = contract.VersionNumber }; var result = await Send(command); var messageDictionary = JsonConvert.DeserializeObject <CaseInsensitiveDictionary <object> >(result.SampleData); var date = $"{(DateTime)messageDictionary["Timestamp"]:yyyy-MM-ddTHH:mm:ssZ}"; messageDictionary["ID"].ShouldBe("01234567-abcd-0123-abcd-0123456789ab"); date.ShouldBe("2019-05-12T18:14:29Z"); messageDictionary["Name"].ShouldBe("John Doe"); messageDictionary["Age"].ShouldBe(30); }