public void Will_throw_if_test_file_is_not_a_valid_test_type_file() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.blah")).Returns(new PathInfo { FullPath = "somePath", Type = PathType.Other }); Exception ex = Record.Exception(() => creator.ClassUnderTest.BuildContext("test.blah", new TestOptions())); Assert.IsType <ArgumentException>(ex); }
public void Will_return_false_test_file_is_not_a_valid_file_file() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.blah")).Returns(new PathInfo { Type = PathType.Other }); var result = creator.ClassUnderTest.IsTestFile("test.blah"); Assert.False(result); }
public void Will_not_copy_referenced_file_if_it_is_the_test_runner() { var creator = new TestableTestContextBuilder(); creator.ReferenceFiles.Add(new ReferencedFile { Path = @"path\qunit.js" }); var context = creator.ClassUnderTest.BuildContext("test.js", new TestOptions()); creator.Mock <IFileSystemWrapper>().Verify(x => x.CopyFile(@"path\qunit.js", @"C:\temp\qunit.js", true), Times.Never()); }
public void Will_throw_if_test_file_does_not_exist() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.js")).Returns(new PathInfo { Type = PathType.JavaScript, FullPath = null }); Exception ex = Record.Exception(() => creator.ClassUnderTest.BuildContext("test.js", new TestOptions())); Assert.IsType <FileNotFoundException>(ex); }
public void Will_delete_temporary_files() { var builder = new TestableTestContextBuilder(); var context = new TestContext { TemporaryFiles = new string[] { "foo.js", "bar.js" } }; builder.ClassUnderTest.CleanupContext(context); builder.Mock <IFileSystemWrapper>().Verify(x => x.DeleteFile("foo.js")); builder.Mock <IFileSystemWrapper>().Verify(x => x.DeleteFile("bar.js")); }
public void Will_return_false_if_test_file_does_not_exist() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.js")).Returns(new PathInfo { Type = PathType.JavaScript, FullPath = null }); var result = creator.ClassUnderTest.IsTestFile("test.js"); Assert.False(result); }
public void Will_return_true_for_valid_files(string path, PathType type) { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo(path)).Returns(new PathInfo { Type = type, FullPath = path }); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(true); var result = creator.ClassUnderTest.IsTestFile(path); Assert.True(result); }
public void Will_return_false_if_test_framework_not_detected() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.js")).Returns(new PathInfo { Type = PathType.JavaScript, FullPath = null }); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(false); var result = creator.ClassUnderTest.IsTestFile("test.js"); Assert.False(result); }
public void Will_suppress_temporary_file_deletion_errors() { var builder = new TestableTestContextBuilder(); var context = new TestContext { TemporaryFiles = new string[] { "foo.js", "bar.js" } }; builder.Mock <IFileSystemWrapper>().Setup(x => x.DeleteFile("foo.js")).Throws(new IOException()); builder.ClassUnderTest.CleanupContext(context); builder.Mock <IFileSystemWrapper>().Verify(x => x.DeleteFile("bar.js")); }
public void Will_not_copy_referenced_path_if_not_a_file() { TestableTestContextBuilder creator = new TestableTestContextBuilder(); string TestFileContents = @"/// <reference path=""http://a.com/lib.js"" />"; creator.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"C:\test.js")).Returns(@"C:\path\test.js"); creator.Mock <IFileSystemWrapper>() .Setup(x => x.GetText(@"C:\path\test.js")) .Returns(TestFileContents); var context = creator.ClassUnderTest.BuildContext(@"C:\test.js", new TestOptions()); creator.Mock <IFileSystemWrapper>().Verify(x => x.CopyFile(It.Is <string>(p => p.Contains("lib.js")), It.IsAny <string>(), true), Times.Never()); }
public void Will_set_multiple_js_test_files_to_file_under_test() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"C:\test1.js")).Returns(@"C:\path\test1.js"); creator.Mock <IFileSystemWrapper>().Setup(x => x.GetText(@"C:\path\test1.js")).Returns("contents1"); creator.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"C:\test2.js")).Returns(@"C:\path\test2.js"); creator.Mock <IFileSystemWrapper>().Setup(x => x.GetText(@"C:\path\test2.js")).Returns("contents2"); var context = creator.ClassUnderTest.BuildContext(new [] { @"C:\test1.js", @"C:\test2.js" }, new TestOptions()); Assert.True(context.ReferencedFiles.SingleOrDefault(x => x.Path.Contains("test1.js")).IsFileUnderTest); Assert.True(context.ReferencedFiles.SingleOrDefault(x => x.Path.Contains("test2.js")).IsFileUnderTest); }
public void Will_pass_referenced_files_to_a_file_generator() { var creator = new TestableTestContextBuilder(); var fileGenerator = new Mock <IFileGenerator>(); creator.InjectArray(new[] { fileGenerator.Object }); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo(@"C:\test.coffee")).Returns <string>(x => new PathInfo { FullPath = x, Type = PathType.CoffeeScript }); var context = creator.ClassUnderTest.BuildContext(@"C:\test.coffee", new TestOptions()); fileGenerator.Verify(x => x.Generate(It.IsAny <IEnumerable <ReferencedFile> >(), It.IsAny <List <string> >(), It.IsAny <ChutzpahTestSettingsFile>())); }
public void Will_set_harness_folder_when_settings_file_adjacent() { var creator = new TestableTestContextBuilder(); creator.ChutzpahTestSettingsFile.TestHarnessLocationMode = TestHarnessLocationMode.SettingsFileAdjacent; creator.Mock <IFileProbe>() .Setup(x => x.GetPathInfo("test.js")) .Returns(new PathInfo { Type = PathType.JavaScript, FullPath = @"C:\folder1\test.js" }); var context = creator.ClassUnderTest.BuildContext("test.js", new TestOptions()); Assert.Equal(@"settingsPath", context.TestHarnessDirectory); }
public void Will_set_harness_folder_when_test_file_adjacent() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>() .Setup(x => x.GetPathInfo("test.js")) .Returns(new PathInfo { Type = PathType.JavaScript, FullPath = @"C:\folder\test.js" }); var context = creator.ClassUnderTest.BuildContext("test.js", new TestOptions()); Assert.Equal(@"C:\folder", context.TestHarnessDirectory); Assert.Equal(@"C:\folder\test.js", context.InputTestFile); }
public void Will_throw_if_more_than_one_url_type_is_given() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test1.html")).Returns(new PathInfo { FullPath = "somePath", Type = PathType.Url }); creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test2.html")).Returns(new PathInfo { FullPath = "somePath", Type = PathType.Url }); Exception ex = Record.Exception(() => creator.ClassUnderTest.BuildContext(new[] { "test1.html", "test2.html" }, new TestOptions())); Assert.IsType <InvalidOperationException>(ex); }
public void Will_return_null_if_test_framework_not_determined() { var creator = new TestableTestContextBuilder(); creator.Mock <IHasher>().Setup(x => x.Hash(@"C:\test.js")).Returns("test.JS_hash"); creator.Mock <IFileSystemWrapper>().Setup(x => x.GetTemporaryFolder("test.JS_hash")).Returns(@"C:\temp2\"); creator.Mock <IFileProbe>() .Setup(x => x.GetPathInfo("test.js")) .Returns(new PathInfo { Type = PathType.JavaScript, FullPath = @"C:\test.js" }); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(false); var context = creator.ClassUnderTest.BuildContext("test.js", new TestOptions()); Assert.Null(context); }
public void Will_set_harness_folder_when_custom_placement() { var creator = new TestableTestContextBuilder(); creator.ChutzpahTestSettingsFile.TestHarnessLocationMode = TestHarnessLocationMode.Custom; creator.ChutzpahTestSettingsFile.TestHarnessDirectory = "customFolder"; creator.Mock <IFileProbe>().Setup(x => x.FindFolderPath(It.Is <string>(p => p.Contains("customFolder")))).Returns("customFolder"); creator.Mock <IFileProbe>() .Setup(x => x.GetPathInfo("test.js")) .Returns(new PathInfo { Type = PathType.JavaScript, FullPath = @"C:\folder3\test.js" }); var context = creator.ClassUnderTest.BuildContext("test.js", new TestOptions()); Assert.Equal(@"customFolder", context.TestHarnessDirectory); }
public void Will_return_true_if_settings_path_matches() { var creator = new TestableTestContextBuilder(); creator.ChutzpahTestSettingsFile.Tests = new[] { new SettingsFileTestPath { Path = "path/test.js", SettingsFileDirectory = creator.ChutzpahTestSettingsFile.SettingsFileDirectory } }; creator.Mock <IFileProbe>().Setup(x => x.FindFilePath("c:\test.js")).Returns(@"c:\settingsPath\path\test.js"); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(true); var result = creator.ClassUnderTest.IsTestFile("c:\test.js"); Assert.True(result); }
public void Will_return_path_and_framework_for_html_file() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>() .Setup(x => x.GetPathInfo("testThing.html")) .Returns(new PathInfo { Type = PathType.Html, FullPath = @"C:\testThing.html" }); var context = creator.ClassUnderTest.BuildContext("testThing.html", new TestOptions()); Assert.Equal(@"qunitRunner.js", context.TestRunner); Assert.Equal(@"C:\testThing.html", context.TestHarnessPath); Assert.Equal(@"C:\testThing.html", context.InputTestFiles.FirstOrDefault()); Assert.False(context.IsRemoteHarness); }
public void Will_return_path_and_framework_for_web_url() { var creator = new TestableTestContextBuilder(); creator.Mock <IFileProbe>() .Setup(x => x.GetPathInfo("http://someUrl.com")) .Returns(new PathInfo { Type = PathType.Url, FullPath = @"http://someUrl.com" }); var context = creator.ClassUnderTest.BuildContext("http://someUrl.com", new TestOptions()); Assert.Equal(@"qunitRunner.js", context.TestRunner); Assert.Equal(@"http://someUrl.com", context.TestHarnessPath); Assert.Equal(@"http://someUrl.com", context.InputTestFiles.FirstOrDefault()); Assert.True(context.IsRemoteHarness); }
public void Will_return_true_if_settings_path_matches() { var creator = new TestableTestContextBuilder(); creator.ChutzpahTestSettingsFile.Tests = new[] { new SettingsFileTestPath { Path = "path/test.js" } }; creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.js")).Returns(new PathInfo { Type = PathType.JavaScript, FullPath = @"settingsPath\path\test.js" }); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(true); var result = creator.ClassUnderTest.IsTestFile("test.js"); Assert.True(result); }
public void Will_return_false_if_folder_path_matches_but_exclude_match() { var creator = new TestableTestContextBuilder(); creator.ChutzpahTestSettingsFile.Tests = new[] { new SettingsFileTestPath { Path = "path/", Exclude = "*.js", SettingsFileDirectory = creator.ChutzpahTestSettingsFile.SettingsFileDirectory } }; creator.Mock <IFileProbe>().Setup(x => x.FindFilePath(@"c:\test.js")).Returns(@"settingsPath\path\test.js"); creator.Mock <IFileProbe>().Setup(x => x.FindFilePath("settingsPath\\path\\")).Returns((string)null); creator.Mock <IFileProbe>().Setup(x => x.FindFolderPath("settingsPath\\path\\")).Returns(@"settingsPath\path"); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(true); var result = creator.ClassUnderTest.IsTestFile(@"c:\test.js"); Assert.False(result); }
public void Will_return_false_if_folder_path_matches_but_include_does_not_match() { var creator = new TestableTestContextBuilder(); creator.ChutzpahTestSettingsFile.Tests = new[] { new SettingsFileTestPath { Path = "path/", Include = "*.ts" } }; creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.js")).Returns(new PathInfo { Type = PathType.JavaScript, FullPath = @"settingsPath\path\test.js" }); creator.Mock <IFileProbe>().Setup(x => x.FindFilePath("settingsPath\\path\\")).Returns((string)null); creator.Mock <IFileProbe>().Setup(x => x.FindFolderPath("settingsPath\\path\\")).Returns(@"settingsPath\path"); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(true); var result = creator.ClassUnderTest.IsTestFile("test.js"); Assert.False(result); }
public void Will_return_true_if_settings_exclude_doesnt_match() { var creator = new TestableTestContextBuilder(); creator.ChutzpahTestSettingsFile.SettingsFileDirectory = @"C:\settingsPath"; creator.Mock <IFileProbe>().Setup(x => x.FindFolderPath(@"c:\settingspath")).Returns(@"c:\settingspath"); creator.ChutzpahTestSettingsFile.Tests = new[] { new SettingsFileTestPath { Exclude = "*path2/test.js" } }; creator.Mock <IFileProbe>().Setup(x => x.GetPathInfo("test.js")).Returns(new PathInfo { Type = PathType.JavaScript, FullPath = @"C:\settingsPathpath\test.js" }); creator.Mock <IFrameworkDefinition>().Setup(x => x.FileUsesFramework(It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <PathType>())).Returns(true); var result = creator.ClassUnderTest.IsTestFile("test.js"); Assert.True(result); }