/Tests/GeneratorTests/TestGeneratorBasicsTests.cs
C# | 193 lines | 159 code | 34 blank | 0 comment | 0 complexity | 577360d50e88cd6c56c82fd254693f53 MD5 | raw file
Possible License(s): BSD-3-Clause, GPL-2.0
- using System;
- using System.Linq;
- using FluentAssertions;
- using Moq;
- using NUnit.Framework;
- using TechTalk.SpecFlow.Generator;
- using TechTalk.SpecFlow.Generator.Interfaces;
- using TechTalk.SpecFlow.Utils;
- namespace TechTalk.SpecFlow.GeneratorTests
- {
- [TestFixture]
- public class TestGeneratorBasicsTests : TestGeneratorTestsBase
- {
- private string GenerateTestFromSimpleFeature(ProjectSettings projectSettings)
- {
- var testGenerator = CreateTestGenerator(projectSettings);
- var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), defaultSettings);
- result.Success.Should().Be(true);
- return result.GeneratedTestCode;
- }
- [Test]
- public void Should_generate_a_net35_csharp_test_from_simple_feature()
- {
- string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
- outputFile.Should().NotBeEmpty();
- }
- [Test]
- public void Should_generate_a_net35_vb_test_from_simple_feature()
- {
- string outputFile = GenerateTestFromSimpleFeature(net35VBProjectSettings);
- outputFile.Should().NotBeEmpty();
- }
- [Test]
- public void Should_include_header_in_generated_file()
- {
- string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
- outputFile.Should().Contain("This code was generated by SpecFlow");
- }
- [Test]
- public void Should_wrap_generated_test_with_designer_region()
- {
- string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
- outputFile.Should().Contain("#region Designer generated code");
- outputFile.Should().Contain("#endregion");
- }
- [Test]
- public void Should_include_generator_version_in_the_header()
- {
- string outputFile = GenerateTestFromSimpleFeature(net35CSProjectSettings);
- outputFile.Should().Contain(string.Format("SpecFlow Generator Version:{0}", TestGeneratorFactory.GeneratorVersion));
- }
- [Test]
- public void Should_generate_test_from_feature_file_specified_by_path()
- {
- using (var tempFile = new TempFile(".feature"))
- {
- tempFile.SetContent(CreateSimpleValidFeatureFileInput().FeatureFileContent);
- ProjectSettings projectSettings = new ProjectSettings { ProjectFolder = tempFile.FolderName, ProjectPlatformSettings = net35CSSettings };
- var testGenerator = CreateTestGenerator(projectSettings);
- var result = testGenerator.GenerateTestFile(
- new FeatureFileInput(tempFile.FileName),
- defaultSettings);
- result.Success.Should().Be(true);
- }
- }
- [Test]
- public void Should_return_detected_version()
- {
- Version version = new Version();
- TestHeaderWriterStub.Setup(thw => thw.DetectGeneratedTestVersion("any")).Returns(version);
- var testGenerator = CreateTestGenerator();
- FeatureFileInput featureFileInput = CreateSimpleValidFeatureFileInput();
- featureFileInput.GeneratedTestFileContent = "any";
- var result = testGenerator.DetectGeneratedTestVersion(featureFileInput);
- result.Should().NotBeNull();
- result.Should().Be(version);
- }
- [Test]
- public void Should_return_detected_version_from_file()
- {
- Version version = new Version();
- TestHeaderWriterStub.Setup(thw => thw.DetectGeneratedTestVersion("any")).Returns(version);
- using (var tempFile = new TempFile(".cs"))
- {
- tempFile.SetContent("any");
- ProjectSettings projectSettings = new ProjectSettings { ProjectFolder = tempFile.FolderName, ProjectPlatformSettings = net35CSSettings };
- var testGenerator = CreateTestGenerator(projectSettings);
- FeatureFileInput featureFileInput = CreateSimpleValidFeatureFileInput();
- featureFileInput.GeneratedTestProjectRelativePath = tempFile.FileName;
- var result = testGenerator.DetectGeneratedTestVersion(featureFileInput);
- result.Should().NotBeNull();
- result.Should().Be(version);
- }
- }
- [Test]
- public void Should_return_unknown_version_when_there_is_an_error()
- {
- TestHeaderWriterStub.Setup(thw => thw.DetectGeneratedTestVersion("any")).Throws(new Exception());
- var testGenerator = CreateTestGenerator();
- FeatureFileInput featureFileInput = CreateSimpleValidFeatureFileInput();
- featureFileInput.GeneratedTestFileContent = "any";
- var result = testGenerator.DetectGeneratedTestVersion(featureFileInput);
- result.Should().Be(null);
- }
- [Test]
- public void Should_detect_up_to_date_test_file_based_on_preliminary_up_to_date_check()
- {
- var testGenerator = CreateTestGenerator(net35CSProjectSettings);
- TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
- .Returns(true);
- var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
- {
- CheckUpToDate = true
- });
- result.IsUpToDate.Should().Be(true);
- }
- [Test]
- public void Should_detect_outdated_test_file_based_on_preliminary_up_to_date_check()
- {
- var testGenerator = CreateTestGenerator(net35CSProjectSettings);
- TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
- .Returns(false);
- var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
- {
- CheckUpToDate = true
- });
- result.IsUpToDate.Should().Be(false);
- }
- [Test]
- public void Should_detect_up_to_date_test_file_based_on_context_based_up_to_date_check()
- {
- var testGenerator = CreateTestGenerator(net35CSProjectSettings);
- TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
- .Returns((bool?)null);
- TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDate(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
- .Returns(true);
- var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
- {
- CheckUpToDate = true
- });
- result.IsUpToDate.Should().Be(true);
- result.GeneratedTestCode.Should().BeNull();
- }
- [Test]
- public void Should_detect_outdated_test_file_based_on_context_based_up_to_date_check()
- {
- var testGenerator = CreateTestGenerator(net35CSProjectSettings);
- TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDatePreliminary(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
- .Returns((bool?)null);
- TestUpToDateCheckerStub.Setup(tu2d => tu2d.IsUpToDate(It.IsAny<FeatureFileInput>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<UpToDateCheckingMethod>()))
- .Returns(false);
- var result = testGenerator.GenerateTestFile(CreateSimpleValidFeatureFileInput(), new GenerationSettings
- {
- CheckUpToDate = true
- });
- result.IsUpToDate.Should().Be(false);
- }
- }
- }