Exemple #1
0
        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));
            }
        }
Exemple #2
0
        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");
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }