public async Task LoanFieldDescriptors_RefreshStandardFields_NoUpdates() { var client = await GetTestClientAsync(); var count = LoanFieldDescriptors.StandardFields.Count; await LoanFieldDescriptors.RefreshStandardFieldsAsync(client); Assert.AreEqual(count, LoanFieldDescriptors.StandardFields.Count); foreach (var pair in LoanFieldDescriptors.StandardFields) { Assert.AreEqual(pair.Value.GetType(), typeof(FieldDescriptor), pair.Key); } }
public async Task LoanFieldDescriptors_RefreshStandardFields_DoesNotAffectUserAddedFields() { var client = await GetTestClientAsync(); const string newFieldId = "NEWFIELD"; Assert.IsTrue(LoanFieldDescriptors.FieldMappings.TryAdd(newFieldId, "Loan.NewField", false)); var count = LoanFieldDescriptors.StandardFields.Count; await LoanFieldDescriptors.RefreshStandardFieldsAsync(client); Assert.AreEqual(count, LoanFieldDescriptors.StandardFields.Count); foreach (var pair in LoanFieldDescriptors.StandardFields) { Assert.AreEqual(pair.Value.GetType(), typeof(FieldDescriptor), pair.Key); } Assert.IsTrue(LoanFieldDescriptors.FieldMappings.ContainsKey(newFieldId)); }
/// <summary> /// Refreshes the custom fields cache. /// </summary> /// <param name="client">The client to use to retrieve the custom fields.</param> /// <param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="CancellationToken.None"/>.</param> /// <returns></returns> public async Task RefreshCustomFieldsAsync(EncompassRestClient client, CancellationToken cancellationToken = default) { Preconditions.NotNull(client, nameof(client)); var retrievedCustomFields = new Dictionary <string, FieldDescriptor>(StringComparer.OrdinalIgnoreCase); var customFieldsList = await client.Settings.Loan.CustomFields.GetCustomFieldsAsync(cancellationToken).ConfigureAwait(false); foreach (var customField in customFieldsList) { var modelPath = $"Loan.CustomFields[(FieldName == '{customField.Id}')].StringValue"; retrievedCustomFields[customField.Id] = new NonStandardFieldDescriptor(customField.Id, LoanFieldDescriptors.CreateModelPath(modelPath), modelPath, customField.Description, customField.Format, customField.Options?.Select(o => new FieldOption(o)).ToList(), false); } var customFields = _customFields; foreach (var pair in customFields) { if (retrievedCustomFields.TryGetValue(pair.Key, out var descriptor)) { customFields[pair.Key] = descriptor; retrievedCustomFields.Remove(pair.Key); } else { customFields.TryRemove(pair.Key, out _); } } foreach (var pair in retrievedCustomFields) { customFields[pair.Key] = pair.Value; } CustomFieldsLastRefreshedUtc = DateTime.UtcNow; }
public int GetHashCode(string obj) => !string.IsNullOrEmpty(obj) ? LoanFieldDescriptors.CreateModelPath(obj)?.GetHashCode() ?? 0 : 0;
public bool Equals(string x, string y) => string.IsNullOrEmpty(x) ? string.IsNullOrEmpty(y) : LoanFieldDescriptors.CreateModelPath(x)?.Equals(LoanFieldDescriptors.CreateModelPath(y)) ?? false;