/// <summary> /// Add a new resource key /// </summary> /// <param name="newLocaleResourceKey"></param> public LocaleResourceKey Add(LocaleResourceKey newLocaleResourceKey) { // Trim name to stop any issues newLocaleResourceKey.Name = newLocaleResourceKey.Name.Trim(); // Check to see if a respource key of this name already exists var existingResourceKey = _localizationRepository.GetResourceKey(newLocaleResourceKey.Name); if (existingResourceKey != null) { throw new ApplicationException(string.Format("The resource key with name '{0}' already exists.", newLocaleResourceKey.Name)); } newLocaleResourceKey.DateAdded = DateTime.UtcNow; // Now add an empty value for each language newLocaleResourceKey.LocaleStringResources = new List <LocaleStringResource>(); foreach (var language in _localizationRepository.GetAll()) { var resourceValue = new LocaleStringResource { Language = language, LocaleResourceKey = newLocaleResourceKey, ResourceValue = string.Empty }; language.LocaleStringResources.Add(resourceValue); } //Sanitze newLocaleResourceKey = SanitizeLocaleResourceKey(newLocaleResourceKey); // Add the key return(_localizationRepository.Add(newLocaleResourceKey)); }
public void ImportLanguage() { // Ensure language does not exist _localizationRepositorySub.GetLanguageByLanguageCulture(Arg.Any <string>()).Returns(x => null); var resourceKey1 = new LocaleResourceKey { DateAdded = DateTime.UtcNow, Id = Guid.NewGuid(), Name = "testKey1", Notes = "test notes" }; var resourceValue1 = new LocaleStringResource { LocaleResourceKey = resourceKey1, ResourceValue = "testValue1" }; var resourceKey2 = new LocaleResourceKey { DateAdded = DateTime.UtcNow, Id = Guid.NewGuid(), Name = "testKey2", Notes = "test notes" }; var resourceValue2 = new LocaleStringResource { LocaleResourceKey = resourceKey1, ResourceValue = "testValue2" }; var newLanguage = new Language { LanguageCulture = "fr-FR", Name = "French", LocaleStringResources = new List <LocaleStringResource> { resourceValue1, resourceValue2 }, }; _localizationRepositorySub.GetAllResourceKeys().Returns(new List <LocaleResourceKey> { resourceKey1, resourceKey2 }); _localizationRepositorySub.GetResourceKey("testKey1").Returns(resourceKey1); _localizationRepositorySub.GetResourceKey("testKey2").Returns(resourceKey2); _localizationRepositorySub.GetResourceKey("testKeyNew").Returns(x => null); _localizationRepositorySub.GetAll().Returns(new List <Language> { newLanguage }); var testData = new List <string> { "testKey1,testValue1", "testKey2,testValue2", ",should not import", // Test for ignore of empty key "testKeyNew,testValueNew" }; var report = _localizationService.FromCsv("fr-FR", testData); Assert.AreEqual(report.Warnings.Count, 1); Assert.AreEqual(report.Warnings[0].ErrorWarningType, CsvErrorWarningType.NewKeyCreated); Assert.AreEqual(report.Errors.Count, 0); }