public void When_ResourceKey_Type_Does_Not_Start_With_Letter_Then_Invalid(string resourceKey) { // Arrange var resourceKeyAttribute = new ResourceKeyAttribute(); // Act var isValid = resourceKeyAttribute.IsValid(resourceKey); // Assert isValid.Should().BeFalse(); }
public void When_ResourceKey_Does_Not_Slash_Type_Then_Invalid() { // Arrange var resourceKeyAttribute = new ResourceKeyAttribute(); // Act var isValid = resourceKeyAttribute.IsValid("SiteGroupE0300EEE-1199-48EE-8B55-06F1EBF7B4C3"); // Assert isValid.Should().BeFalse(); }
public void When_ResourceKey_Contains_Correct_Values_Then_Valid(string resourceKey) { // Arrange var resourceKeyAttribute = new ResourceKeyAttribute(); // Act var isValid = resourceKeyAttribute.IsValid(resourceKey); // Assert isValid.Should().BeTrue(); }
public void When_ResourceKey_Does_Not_Contain_Guid_Then_Invalid() { // Arrange var resourceKeyAttribute = new ResourceKeyAttribute(); // Act var isValid = resourceKeyAttribute.IsValid("SiteGroup/"); // Assert isValid.Should().BeFalse(); }
private async Task Process(CancellationToken stoppingToken) { using var scope = this.ServiceScopeFactory.CreateScope(); FairplaytubeDatabaseContext fairplaytubeDatabaseContext = scope.ServiceProvider.GetRequiredService <FairplaytubeDatabaseContext>(); var translationService = scope.ServiceProvider.GetRequiredService <TranslationService>(); var clientAppAssembly = typeof(Client.Program).Assembly; var clientAppTypes = clientAppAssembly.GetTypes(); var componentsAssembly = typeof(Components._Imports).Assembly; var componentsTypes = componentsAssembly.GetTypes(); var modelsAssembly = typeof(Models.Video.UploadVideoModel).Assembly; var modelsTypes = modelsAssembly.GetTypes(); var servicesAssembly = typeof(FairPlayTube.Services.TranslationService).Assembly; var servicesTypes = servicesAssembly.GetTypes(); var commonAssembly = typeof(FairPlayTube.Common.Global.Constants).Assembly; var commonTypes = commonAssembly.GetTypes(); List <Type> typesToCheck = new(); typesToCheck.AddRange(clientAppTypes); typesToCheck.AddRange(componentsTypes); typesToCheck.AddRange(modelsTypes); typesToCheck.AddRange(servicesTypes); typesToCheck.AddRange(commonTypes); foreach (var singleTypeToCheck in typesToCheck) { string typeFullName = singleTypeToCheck.FullName; var fields = singleTypeToCheck.GetFields( BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy ); foreach (var singleField in fields) { var resourceKeyAttributes = singleField.GetCustomAttributes <ResourceKeyAttribute>(); if (resourceKeyAttributes != null && resourceKeyAttributes.Any()) { ResourceKeyAttribute keyAttribute = resourceKeyAttributes.Single(); var defaultValue = keyAttribute.DefaultValue; string key = singleField.GetRawConstantValue().ToString(); var entity = await fairplaytubeDatabaseContext.Resource .SingleOrDefaultAsync(p => p.CultureId == 1 && p.Key == key && p.Type == typeFullName, stoppingToken); if (entity is null) { entity = new Resource() { CultureId = 1, Key = key, Type = typeFullName, Value = keyAttribute.DefaultValue }; await fairplaytubeDatabaseContext.Resource.AddAsync(entity, stoppingToken); } } } } if (fairplaytubeDatabaseContext.ChangeTracker.HasChanges()) { await fairplaytubeDatabaseContext.SaveChangesAsync(stoppingToken); } var allEnglishUSKeys = await fairplaytubeDatabaseContext.Resource .Include(p => p.Culture) .Where(p => p.Culture.Name == "en-US") .ToListAsync(stoppingToken); TranslateRequestTextItem[] translateRequestItems = allEnglishUSKeys.Select(p => new TranslateRequestTextItem() { Text = p.Value }).ToArray(); var additionalSupportedCultures = await fairplaytubeDatabaseContext.Culture .Where(p => p.Name != "en-US").ToListAsync(cancellationToken: stoppingToken); foreach (var singleAdditionalCulture in additionalSupportedCultures) { var cultureTranslations = await translationService.TranslateAsync(translateRequestItems, "en", singleAdditionalCulture.Name, stoppingToken); var cultureEntity = await fairplaytubeDatabaseContext .Culture.SingleAsync(p => p.Name == singleAdditionalCulture.Name, cancellationToken : stoppingToken); for (int iPos = 0; iPos < cultureTranslations.Length; iPos++) { var singleEnglishUSKey = allEnglishUSKeys[iPos]; var translatedValue = cultureTranslations[iPos].translations.First().text; Resource resourceEntity = await fairplaytubeDatabaseContext.Resource .SingleOrDefaultAsync(p => p.Key == singleEnglishUSKey.Key && p.Type == singleEnglishUSKey.Type && p.CultureId == cultureEntity.CultureId, cancellationToken : stoppingToken); if (resourceEntity is null) { resourceEntity = new() { Key = singleEnglishUSKey.Key, Type = singleEnglishUSKey.Type, Value = translatedValue, CultureId = cultureEntity.CultureId }; await fairplaytubeDatabaseContext.Resource.AddAsync(resourceEntity, stoppingToken); } } if (fairplaytubeDatabaseContext.ChangeTracker.HasChanges()) { await fairplaytubeDatabaseContext.SaveChangesAsync(stoppingToken); } } } }