public void Assert(ActionCalledTime expectedActionCalledTime) { ActionCalledTime .Should() .Be(expectedActionCalledTime, $"{Name} should be called at {expectedActionCalledTime.ToString("g")} " + $"but find {ActionCalledTime.ToString("g")}"); }
private static ActionCalledTime GetCalledTime(bool predicate, ActionCalledTime actionCalledTime) { if (actionCalledTime != ActionCalledTime.FirstRun && predicate) { actionCalledTime = ActionCalledTime.SecondRun; } return(actionCalledTime); }
public void FlagsCombinationAndAction( // Inputs bool DOTNET_GENERATE_ASPNET_CERTIFICATE, bool DOTNET_CLI_TELEMETRY_OPTOUT, // true to simulate install via installer. The first run is during installer, // silent but has sudo permission // false to simulate install via zip/tar.gz bool isFirstRunInstallerRun, // Outputs ActionCalledTime aspnetCertInstalledTimeShouldBeCalledAt, ActionCalledTime printFirstTimeWelcomeMessageShouldBeCalledAt, ActionCalledTime printTelemetryMessageShouldBeCalledAt, bool telemetryFirstRunShouldBeEnabled, bool telemetrySecondRunShouldBeEnabled ) { ResetObjectState(); _environmentProvider .Setup(p => p.GetEnvironmentVariableAsBool("DOTNET_GENERATE_ASPNET_CERTIFICATE", It.IsAny <bool>())) .Returns(DOTNET_GENERATE_ASPNET_CERTIFICATE); _environmentProvider .Setup(p => p.GetEnvironmentVariableAsBool("DOTNET_CLI_TELEMETRY_OPTOUT", It.IsAny <bool>())) .Returns(DOTNET_CLI_TELEMETRY_OPTOUT); _environmentProvider .Setup(p => p.GetEnvironmentVariableAsBool("DOTNET_ADD_GLOBAL_TOOLS_TO_PATH", It.IsAny <bool>())) .Returns(true); _pathAdderMock.Setup(p => p.AddPackageExecutablePathToUserPath()).Verifiable(); // box a bool so it will be captured by reference in closure object generateAspNetCoreDevelopmentCertificateCalled = false; _aspNetCoreCertificateGeneratorMock .Setup(_ => _.GenerateAspNetCoreDevelopmentCertificate()) .Callback(() => generateAspNetCoreDevelopmentCertificateCalled = true).Verifiable(); var aspnetCertInstalledTime = new FirstRunExperienceAction( () => (bool)generateAspNetCoreDevelopmentCertificateCalled, "aspnetCertInstalledTime"); var printFirstTimeWelcomeMessage = new FirstRunExperienceAction( () => _reporterMock.Lines.Contains(string.Format( Configurer.LocalizableStrings.FirstTimeMessageWelcome, DotnetFirstTimeUseConfigurer.DeriveDotnetVersionFromProductVersion(Product.Version), Product.Version)) && _reporterMock.Lines.Contains(LocalizableStrings.FirstTimeMessageMoreInformation), "printFirstTimeWelcomeMessage"); var printTelemetryMessage = new FirstRunExperienceAction( () => _reporterMock.Lines.Contains(LocalizableStrings.TelemetryMessage), "printTelemetryMessage"); List <FirstRunExperienceAction> firstRunExperienceActions = new List <FirstRunExperienceAction>() { aspnetCertInstalledTime, printFirstTimeWelcomeMessage, printTelemetryMessage }; // First run var telemetryFirstRun = RunConfigUsingMocks(isFirstRunInstallerRun); firstRunExperienceActions.ForEach(a => a.EvaluateAfterFirstRun()); // Second run var telemetrySecondRun = RunConfigUsingMocks(false); firstRunExperienceActions.ForEach(a => a.EvaluateAfterSecondRun()); // Assertion aspnetCertInstalledTime.Assert(aspnetCertInstalledTimeShouldBeCalledAt); printFirstTimeWelcomeMessage.Assert(printFirstTimeWelcomeMessageShouldBeCalledAt); printTelemetryMessage.Assert(printTelemetryMessageShouldBeCalledAt); telemetryFirstRun.Enabled.Should().Be(telemetryFirstRunShouldBeEnabled); telemetrySecondRun.Enabled.Should().Be(telemetrySecondRunShouldBeEnabled); }