PageRenderTime 54ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/Tests/GeneratorTests/TestGeneratorBasicsTests.cs

http://github.com/techtalk/SpecFlow
C# | 193 lines | 159 code | 34 blank | 0 comment | 0 complexity | 577360d50e88cd6c56c82fd254693f53 MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-2.0
  1. using System;
  2. using System.Linq;
  3. using FluentAssertions;
  4. using Moq;
  5. using NUnit.Framework;
  6. using TechTalk.SpecFlow.Generator;
  7. using TechTalk.SpecFlow.Generator.Interfaces;
  8. using TechTalk.SpecFlow.Utils;
  9. namespace TechTalk.SpecFlow.GeneratorTests
  10. {
  11. [TestFixture]
  12. public class TestGeneratorBasicsTests : TestGeneratorTestsBase
  13. {
  14. private string GenerateTestFromSimpleFeature(ProjectSettings projectSettings)
  15. {
  16. var testGenerator = CreateTestGenerator(projectSettings);
  17. var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), defaultSettings);
  18. result.Success.Should().Be(true);
  19. return result.GeneratedTestCode;
  20. }
  21. [Test]
  22. public void Should_generate_a_net35_csharp_test_from_simple_feature()
  23. {
  24. string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
  25. outputFile.Should().NotBeEmpty();
  26. }
  27. [Test]
  28. public void Should_generate_a_net35_vb_test_from_simple_feature()
  29. {
  30. string outputFile = GenerateTestFromSimpleFeature(net35VBProjectSettings);
  31. outputFile.Should().NotBeEmpty();
  32. }
  33. [Test]
  34. public void Should_include_header_in_generated_file()
  35. {
  36. string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
  37. outputFile.Should().Contain("This code was generated by SpecFlow");
  38. }
  39. [Test]
  40. public void Should_wrap_generated_test_with_designer_region()
  41. {
  42. string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
  43. outputFile.Should().Contain("#region Designer generated code");
  44. outputFile.Should().Contain("#endregion");
  45. }
  46. [Test]
  47. public void Should_include_generator_version_in_the_header()
  48. {
  49. string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
  50. outputFile.Should().Contain(string.Format("SpecFlow Generator Version:{0}", TestGeneratorFactory.GeneratorVersion));
  51. }
  52. [Test]
  53. public void Should_generate_test_from_feature_file_specified_by_path()
  54. {
  55. using (var tempFile = new TempFile(".feature"))
  56. {
  57. tempFile.SetContent(CreateSimpleValidFeatureFileInput().FeatureFileContent);
  58. ProjectSettings projectSettings = new ProjectSettings { ProjectFolder = tempFile.FolderName, ProjectPlatformSettings = net35CSSettings };
  59. var testGenerator = CreateTestGenerator(projectSettings);
  60. var result = testGenerator.GenerateTestFile(
  61. new FeatureFileInput(tempFile.FileName),
  62. defaultSettings);
  63. result.Success.Should().Be(true);
  64. }
  65. }
  66. [Test]
  67. public void Should_return_detected_version()
  68. {
  69. Version version = new Version();
  70. TestHeaderWriterStub.Setup(thw => thw.DetectGeneratedTestVersion("any")).Returns(version);
  71. var testGenerator = CreateTestGenerator();
  72. FeatureFileInput featureFileInput = CreateSimpleValidFeatureFileInput();
  73. featureFileInput.GeneratedTestFileContent = "any";
  74. var result = testGenerator.DetectGeneratedTestVersion(featureFileInput);
  75. result.Should().NotBeNull();
  76. result.Should().Be(version);
  77. }
  78. [Test]
  79. public void Should_return_detected_version_from_file()
  80. {
  81. Version version = new Version();
  82. TestHeaderWriterStub.Setup(thw => thw.DetectGeneratedTestVersion("any")).Returns(version);
  83. using (var tempFile = new TempFile(".cs"))
  84. {
  85. tempFile.SetContent("any");
  86. ProjectSettings projectSettings = new ProjectSettings { ProjectFolder = tempFile.FolderName, ProjectPlatformSettings = net35CSSettings };
  87. var testGenerator = CreateTestGenerator(projectSettings);
  88. FeatureFileInput featureFileInput = CreateSimpleValidFeatureFileInput();
  89. featureFileInput.GeneratedTestProjectRelativePath = tempFile.FileName;
  90. var result = testGenerator.DetectGeneratedTestVersion(featureFileInput);
  91. result.Should().NotBeNull();
  92. result.Should().Be(version);
  93. }
  94. }
  95. [Test]
  96. public void Should_return_unknown_version_when_there_is_an_error()
  97. {
  98. TestHeaderWriterStub.Setup(thw => thw.DetectGeneratedTestVersion("any")).Throws(new Exception());
  99. var testGenerator = CreateTestGenerator();
  100. FeatureFileInput featureFileInput = CreateSimpleValidFeatureFileInput();
  101. featureFileInput.GeneratedTestFileContent = "any";
  102. var result = testGenerator.DetectGeneratedTestVersion(featureFileInput);
  103. result.Should().Be(null);
  104. }
  105. [Test]
  106. public void Should_detect_up_to_date_test_file_based_on_preliminary_up_to_date_check()
  107. {
  108. var testGenerator = CreateTestGenerator(net35CSProjectSettings);
  109. TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
  110. .Returns(true);
  111. var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
  112. {
  113. CheckUpToDate = true
  114. });
  115. result.IsUpToDate.Should().Be(true);
  116. }
  117. [Test]
  118. public void Should_detect_outdated_test_file_based_on_preliminary_up_to_date_check()
  119. {
  120. var testGenerator = CreateTestGenerator(net35CSProjectSettings);
  121. TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
  122. .Returns(false);
  123. var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
  124. {
  125. CheckUpToDate = true
  126. });
  127. result.IsUpToDate.Should().Be(false);
  128. }
  129. [Test]
  130. public void Should_detect_up_to_date_test_file_based_on_context_based_up_to_date_check()
  131. {
  132. var testGenerator = CreateTestGenerator(net35CSProjectSettings);
  133. TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
  134. .Returns((bool?)null);
  135. TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDate(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
  136. .Returns(true);
  137. var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
  138. {
  139. CheckUpToDate = true
  140. });
  141. result.IsUpToDate.Should().Be(true);
  142. result.GeneratedTestCode.Should().BeNull();
  143. }
  144. [Test]
  145. public void Should_detect_outdated_test_file_based_on_context_based_up_to_date_check()
  146. {
  147. var testGenerator = CreateTestGenerator(net35CSProjectSettings);
  148. TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
  149. .Returns((bool?)null);
  150. TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDate(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
  151. .Returns(false);
  152. var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
  153. {
  154. CheckUpToDate = true
  155. });
  156. result.IsUpToDate.Should().Be(false);
  157. }
  158. }
  159. }