private async Task SyncLookupItem(string entityName) { var items = _crm.GetLookupItems(entityName); var ids = items.Select(t => t.Id); var existingIds = _dbContext.LookupItems .Where(t => t.EntityName == entityName) .Select(t => t.Id); _dbContext.RemoveRange(_dbContext.LookupItems.Where(t => t.EntityName == entityName && !ids.Contains(t.Id))); _dbContext.UpdateRange(items.Where(t => existingIds.Contains(t.Id))); await _dbContext.AddRangeAsync(items.Where(t => !existingIds.Contains(t.Id))); await _dbContext.SaveChangesAsync(); }
public void GetLookupItems_ReturnsMatchingOrderedByIdAscending() { var queryableCountries = MockCountries(); _mockService.Setup(mock => mock.CreateQuery("dfe_country", _context)) .Returns(queryableCountries); var result = _crm.GetLookupItems("dfe_country").ToList(); result.Select(country => country.Value).Should().BeEquivalentTo( new object[] { "Country 1", "Country 2", "Country 3" }, options => options.WithStrictOrdering()); result.Select(country => country.EntityName).Should().OnlyContain(name => name == "dfe_country"); }