public void CanValidatePostActionWithDefaultInstructionLocalization() { SimpleConfigModel baseConfig = new SimpleConfigModel() { Identity = "Test", PostActionModels = new List <PostActionModel> { new PostActionModel() { Id = "pa0", Description = "text", ActionId = Guid.NewGuid(), ManualInstructionInfo = new List <ManualInstructionModel>() { new ManualInstructionModel(null, "my text") } }, } }; IEngineEnvironmentSettings environmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true); string tempFolder = _environmentSettingsHelper.CreateTemporaryFolder(); string localizationFile = string.Format(DefaultLocalizeConfigRelativePath, "de-DE"); WriteFile(Path.Combine(tempFolder, localizationFile), "{ \"postActions/pa0/manualInstructions/default/text\": \"localized\" }", environmentSettings); using IMountPoint mountPoint = GetMountPointForPath(tempFolder, environmentSettings); var runnableProjectConfig = new RunnableProjectConfig(environmentSettings, A.Fake <IGenerator>(), baseConfig); var localizationModel = LocalizationModelDeserializer.Deserialize(mountPoint.FileInfo(localizationFile) !); Assert.True(runnableProjectConfig.VerifyLocalizationModel(localizationModel)); runnableProjectConfig.ConfigurationModel.Localize(localizationModel); runnableProjectConfig.PostActionModels.Single(model => model.Id == "pa0" && model.ManualInstructionInfo[0].Text == "localized"); }
public void CannotValidatePostActionWithExtraInstructionLocalization() { SimpleConfigModel baseConfig = new SimpleConfigModel() { Identity = "Test", PostActionModels = new List <PostActionModel> { new PostActionModel() { Id = "pa0", Description = "text", ActionId = Guid.NewGuid(), ManualInstructionInfo = new List <ManualInstructionModel>() { new ManualInstructionModel("first", "my text"), new ManualInstructionModel("second", "my text"), } }, } }; List <(LogLevel, string)> loggedMessages = new List <(LogLevel, string)>(); InMemoryLoggerProvider loggerProvider = new InMemoryLoggerProvider(loggedMessages); IEngineEnvironmentSettings environmentSettings = _environmentSettingsHelper.CreateEnvironment(virtualize: true, addLoggerProviders: new[] { loggerProvider }); string tempFolder = _environmentSettingsHelper.CreateTemporaryFolder(); string localizationFilename = string.Format(DefaultLocalizeConfigRelativePath, "de-DE"); WriteFile( Path.Combine(tempFolder, localizationFilename), "{ \"postActions/pa0/manualInstructions/first/text\": \"localized\", \"postActions/pa0/manualInstructions/extra/text\": \"extraLoc\" }", environmentSettings); using IMountPoint mountPoint = GetMountPointForPath(tempFolder, environmentSettings); var templateConfig = new RunnableProjectConfig(environmentSettings, A.Fake <IGenerator>(), baseConfig); var localizationFile = mountPoint.FileInfo(localizationFilename); var localizationModel = LocalizationModelDeserializer.Deserialize(localizationFile !); Assert.False(templateConfig.VerifyLocalizationModel(localizationModel, localizationFile)); var warningMessages = loggedMessages.Where(log => log.Item1 == LogLevel.Warning); Assert.Single(warningMessages); Assert.Contains( string.Format(LocalizableStrings.Authoring_InvalidManualInstructionLocalizationIndex, "extra", "pa0"), warningMessages.Single().Item2); Assert.Contains(localizationFilename, warningMessages.Single().Item2); }