Exemple #1
0
        public void Can_compile_sass_file(string label, int expectedFiles, CompilerOptions options)
        {
            // Arrange
            var cwd = Path.Combine(AppContext.BaseDirectory, "generated", label);

            if (Directory.Exists(cwd))
            {
                Directory.Delete(cwd, recursive: true);
            }
            Directory.CreateDirectory(cwd);
            options.OutputDirectory = cwd;

            // Act
            var result     = SassCompiler.Compile(Sample.GetBasicSCSS().FullName, options);
            var totalFiles = Directory.GetFiles(cwd, "*").Length;

            var builder   = new StringBuilder();
            var separator = string.Concat(Enumerable.Repeat('=', 50));

            foreach (var item in result.GeneratedFiles)
            {
                builder.AppendLine($"== {Path.GetFileName(item)} ({label})")
                .AppendLine(separator)
                .AppendLine(File.ReadAllText(item))
                .AppendLine()
                .AppendLine();
            }

            // Assert
            result.Success.ShouldBeTrue();
            totalFiles.ShouldBe(expectedFiles);
            result.GeneratedFiles.Length.ShouldBe(expectedFiles);

            Diff.Approve(builder, ".txt", label);
        }
Exemple #2
0
        public void Can_handle_speacial_data_types()
        {
            // Arrange
            var schema = new Schema();

            schema.AddRange(new IField[]
            {
                new AvatarField("avatar"),
                new TemplateField("tempate")
                {
                    Value = "{avatar}"
                },
                new DummyImageURLField("dummy image"),
                new DigitSequenceField("digit sequence")
                {
                    Format = "###-@@@"
                },
                new StateField("state"),
                new ParagraphsField("paragraph"),
                new NatoPhoneticField("nato"),
                new FormulaField("formula", "2+2")
            });

            var sut = new MockarooClient();

            // Act
            var data    = sut.FetchDataAsync(schema, 1).Result;
            var results = JArray.Parse(Encoding.UTF8.GetString(data)).ToString(Formatting.Indented);

            // Assert
            results.ShouldNotBeNullOrEmpty();
            Diff.Approve(schema, ".json");
            //Diff.Approve(results, ".json", "result");
        }
Exemple #3
0
        public void Can_emit_declaration_files(string[] sourceFiles, string label)
        {
            var    config  = new TypescriptGeneratorSettings();
            string results = UTF8(DeclarationFileGenerator.Emit(config, sourceFiles));

            Diff.Approve(results, ".ts", label);
        }
Exemple #4
0
        public void Can_emit_knockout_js_files(string[] sourceFiles, string label)
        {
            var config  = new TypescriptGeneratorSettings("App", suffix: "Model", koJs: true, references: new string[] { "../../../../node_modules/@types/knockout/index.d.ts" });
            var results = KnockoutJsGenerator.Emit(config, sourceFiles);

            Diff.Approve(UTF8(results), ".ts", label);
        }
Exemple #5
0
        private static void RunTypeToSchemaTest <T>(int depth = 1)
        {
            var schema = MockarooConvert.ToSchema <T>(depth);
            var json   = JArray.Parse(schema.ToString()).ToString(Newtonsoft.Json.Formatting.Indented);

            Diff.Approve(json, ".json");
        }
Exemple #6
0
        public void Can_create_various_date_ranges(string date)
        {
            // Arrange

            var     anchor = DateTime.Parse(date);
            dynamic result = new System.Dynamic.ExpandoObject();

            string format(DateField d) => $"{d.Min.ToString(FORMAT)} => {d.Max.ToString(FORMAT)}";

            // Act
            result.Input = date;

            var today = DateField.ForToday("today", anchor);

            result.Today = format(today);

            var week = DateField.ForThisWeek("week", anchor);

            result.ThisWeek = format(week);

            var month = DateField.ForThisMonth("month", anchor);

            result.ThisMonth = format(month);

            var year = DateField.ForThisYear("year", anchor);

            result.ThisYear = format(year);

            var json = JsonConvert.SerializeObject(result, Formatting.Indented);

            // Assert
            Diff.Approve(json, ".json", date);
        }
Exemple #7
0
        public void Can_parse_source_files(string[] sourceFiles)
        {
            // Arrange
            var results = new StringBuilder();
            var label   = string.Join('_', sourceFiles.Select(x => Path.GetFileNameWithoutExtension(x)));

            // Act
            foreach (var type in Adapter.ParseFiles(sourceFiles))
            {
                results.AppendLine(Serialize(type));
            }

            // Assert
            results.ToString().ShouldNotBeNullOrEmpty();
            Diff.Approve(results, ".txt", label);
        }
Exemple #8
0
        public void Can_update_project_file(string fileName)
        {
            // Arrange
            var projectFile = Sample.GetFile(fileName).FullName;
            var results     = new StringBuilder();

            results.AppendHeader("BEFORE");
            results.AppendLine(File.ReadAllText(projectFile)).AppendLine();

            // Act
            var contents = Editor.UpdateProjectFile(projectFile, GetManifest());

            results.AppendHeader("AFTER");
            results.AppendLine(contents);

            // Assert
            contents.ShouldNotContain("xxx");
            Diff.Approve(results, Path.GetFileNameWithoutExtension(fileName));
        }
Exemple #9
0
        public void Can_serialize_json_manifest()
        {
            // Arrange
            var manifestPath = Path.Combine(Path.GetTempPath(), $"{nameof(Ncrement)}_test_temp.json".ToLowerInvariant());

            File.Copy(Sample.GetManifestJSON().FullName, manifestPath, overwrite: true);

            // Act
            var manifest = Manifest.LoadFrom(manifestPath);

            manifest.Save(manifestPath);
            var json = File.ReadAllText(manifestPath);

            // Assert
            manifest.ShouldNotBeNull();
            manifest.BranchVersionMap.ShouldNotBeEmpty();
            manifest.Version.ShouldBe(new SemanticVersion(0, 0, 3));

            json.ShouldNotBeNullOrEmpty();
            Diff.Approve(json, ".json");
        }
Exemple #10
0
        public void Can_edit_manifest_file()
        {
            // Arrange
            var sourceFile = Sample.GetManifestJSON().FullName;

            var    manifestPath = Path.Combine(Path.GetTempPath(), "manifest.tmp");
            string folder       = Path.GetDirectoryName(manifestPath);

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            File.Copy(sourceFile, manifestPath, overwrite: true);
            var manifest = Manifest.LoadFrom(manifestPath);

            // Act
            var result = Editor.UpdateManifestFile(sourceFile, manifest);

            // Assert
            Diff.Approve(result, ".json");
        }
Exemple #11
0
        public void Can_compile_ts_files(string label, int expectedFiles, string configFile)
        {
            // Arrange
            var cwd = Path.Combine(AppContext.BaseDirectory, "generated", label);

            if (Directory.Exists(cwd))
            {
                Directory.Delete(cwd, recursive: true);
            }
            Directory.CreateDirectory(cwd);
            Helper.CopyFolder(Sample.ProjectFolder, cwd);

            // Act
            var result     = Compiler.Run(new CompilerOptions(Path.Combine(cwd, configFile)));
            var totalFiles = (from x in Directory.EnumerateFiles(cwd, "*.js*", SearchOption.AllDirectories)
                              where Path.GetExtension(x) != ".json"
                              select x).Count();

            var builder   = new StringBuilder();
            var separator = string.Concat(Enumerable.Repeat('=', 50));

            foreach (var item in result.GeneratedFiles.OrderBy(x => Path.GetFileName(x)))
            {
                builder.AppendLine($"== {label} ({Path.GetFileName(item)})")
                .AppendLine(separator)
                .AppendLine(File.ReadAllText(item))
                .AppendLine()
                .AppendLine();
            }

            // Assert
            result.Success.ShouldBeTrue();
            result.SourceFiles.ShouldNotBeEmpty();

            totalFiles.ShouldBe(expectedFiles);
            result.GeneratedFiles.Length.ShouldBe(expectedFiles);

            Diff.Approve(builder, ".txt", label);
        }
Exemple #12
0
 public static void RunIndirectTestA()
 {
     Diff.Approve($"{nameof(Diff)}.{nameof(Diff.Approve)} was not invoked directly from the test method.");
 }
Exemple #13
0
        public async Task Can_be_used_with_async_tests()
        {
            await Task.Run(() => { System.Diagnostics.Debug.WriteLine("do work!"); });

            Diff.Approve("I can handle async methods.", default, ".txt", ApprovedResults);
Exemple #14
0
 public void Can_specify_the_extension_when_approving_text()
 {
     Diff.Approve("{ \"name\": \"John Doe\", \"age\": \"84\" }", "json");
 }
Exemple #15
0
 public void Can_approve_an_object()
 {
     Diff.Approve(12345);
 }
 public void Can_be_used_with_xunit()
 {
     Diff.Approve("This message confirms XUnit is supported.");
 }