public void ProcessAnalysisResult_GivenNewTestWithoutRunningTestsAfterPreviousImplementation_ShouldDisplayMessage() { //---------------Set up test pack------------------- var configuration = new Configuration(); var kataImplementationTypes = configuration.GetKataImplementationTypes(); var runner = new Runner.Runner("", "", ""); var notifier = Substitute.For <IPlayerNotifier>(); var previousResult = runner.GetResult(typeof(IStringCalculator), typeof(KataData.StringCalculator.Tests.TestStringCalculator), typeof(NewTestWrittenWithoutAPassingTestForPreviousImplementation.StringCalculator), typeof(TestStringCalculator), kataImplementationTypes.ToArray()); var result = runner.GetResult(typeof(IStringCalculator), typeof(KataData.StringCalculator.Tests.TestStringCalculator), typeof(StringCalculator_002), typeof(TestStringCalculator_002), kataImplementationTypes.ToArray()); var processor = new AnalysisResultProcessor(Substitute.For <ISettingsManager>()); var attemptGameState = new AttemptGameState(new List <Result>(), Substitute.For <IKataHelper>()); attemptGameState.SetLatestResult(previousResult); //---------------Assert Precondition---------------- Assert.AreEqual(1, previousResult.PlayerImplementationLevel); Assert.AreEqual(2, previousResult.PlayerTestLevel); //---------------Execute Test ---------------------- processor.ProcessAnalysisResult(notifier, result, null, attemptGameState); //---------------Test Result ----------------------- Assert.AreEqual(2, result.PlayerImplementationLevel); Assert.AreEqual(3, result.PlayerTestLevel); const string expectedMessage = "You have written a test without first running tests after writing your previous implementation. Please undo or comment out your current test and run your tests"; notifier.Received().DisplayMessage("Test State", expectedMessage, NotifyIcon.Warning, NotifyIcon.Red); }
private static AttemptGameState CreateAttemptGameState(List <Result> results) { var attemptGameState = new AttemptGameState(results, new KataHelper()) { KataName = KataName.StringCalculator.ToString() }; return(attemptGameState); }