private static IReadOnlyList<string> InvokePopulateColumnValues(Application app, IEnumerable<KeyValuePair<string, List<string>>> headers, out OrderedDictionary subRecordSet) { var csvExporter = new ApplicationListCsvExporter(); var privateObject = new PrivateObject(csvExporter); var args = new object[] { app, headers, null }; var result = (IReadOnlyList<string>)privateObject.Invoke("PopulateColumnValues", args); subRecordSet = (OrderedDictionary)args[2]; return result; }
public void NullSourceParameter() { var csvExporter = new ApplicationListCsvExporter(); var headers = csvExporter.GenerateHeaders(null); Assert.IsNull(headers); }
private static string InvokeEscapeForCsv(string dirty) { var csvExporter = new ApplicationListCsvExporter(); var privateObject = new PrivateObject(csvExporter); var args = new object[] { dirty }; return (string)privateObject.Invoke("EscapeForCsv", args); }
public void Applications_NoAppData() { string jsonString = AssemblyResourceReader.ReadAsString("Test_Data.Applications_NoAppData.json"); var apps = JsonConvert.DeserializeObject<List<Application>>(jsonString); var csvExporter = new ApplicationListCsvExporter(); var headers = csvExporter.GenerateHeaders(apps); Assert.IsNotNull(headers); Assert.AreNotEqual(0, headers.Count); }
public void MultiAppsWithOneTypeOfRepeater() { string jsonString = AssemblyResourceReader.ReadAsString("Test_Data.Applications_Expense.json"); var apps = JsonConvert.DeserializeObject<List<Application>>(jsonString); var csvExporter = new ApplicationListCsvExporter(); var headers = csvExporter.GenerateHeaders(apps); Assert.IsNotNull(headers); Assert.AreNotEqual(0, headers.Count); var expensesHeader = headers.FirstOrDefault(h => h.Key == "Expenses"); Assert.IsNotNull(expensesHeader); Assert.IsNotNull(expensesHeader.Value); Assert.IsInstanceOfType(expensesHeader.Value, typeof(List<string>)); Assert.AreNotEqual(0, expensesHeader.Value.Count); }
private static void InvokeGenerateApplicationRowsCsv(IReadOnlyList<string> recordBase, OrderedDictionary subRecordSets, StringBuilder sb) { var csvExporter = new ApplicationListCsvExporter(); var privateObject = new PrivateObject(csvExporter); var args = new object[] { recordBase, subRecordSets, sb }; var types = new[] { typeof(IReadOnlyList<string>), typeof(OrderedDictionary), typeof(StringBuilder) }; privateObject.Invoke("GenerateApplicationRowsCsv", types, args); }
private static void InvokeGenerateHeaderCsv(IReadOnlyList<KeyValuePair<string, List<string>>> headers, StringBuilder sb) { var csvExporter = new ApplicationListCsvExporter(); var privateObject = new PrivateObject(csvExporter); var args = new object[] { headers, sb }; var types = new[] { typeof(IReadOnlyList<KeyValuePair<string, List<string>>>), typeof(StringBuilder) }; privateObject.Invoke("GenerateHeaderCsv", types, args); }
private static void InvokeGenerateApplicationCsv(Application app, IEnumerable<KeyValuePair<string, List<string>>> headers, StringBuilder sb) { var csvExporter = new ApplicationListCsvExporter(); var privateObject = new PrivateObject(csvExporter); var args = new object[] { app, headers, sb }; var types = new[] { typeof(Application), typeof(IEnumerable<KeyValuePair<string, List<string>>>), typeof(StringBuilder) }; privateObject.Invoke("GenerateApplicationCsv", types, args); }
private static bool InvokeTryGetAppProperty(string key, Application app, out object column) { Func<string, User> getUserFn = userId => { if (userId == "creator") { return new User { DisplayName = "The Creator", Id = "creator" }; } if (userId == "modifier") { return new User { DisplayName = "The Modifier", Id = "modifier" }; } return null; }; var csvExporter = new ApplicationListCsvExporter(getUserFn); var privateObject = new PrivateObject(csvExporter); var args = new object[] { key, app, null }; var result = (bool)privateObject.Invoke("TryGetAppProperty", args); column = args[2]; return result; }
private static void InvokePrefixEmptyColumns(int emptyColumnPrefix, StringBuilder sb) { var csvExporter = new ApplicationListCsvExporter(); var privateObject = new PrivateObject(csvExporter); var args = new object[] { emptyColumnPrefix, sb }; var types = new[] { typeof(int), typeof(StringBuilder) }; privateObject.Invoke("PrefixEmptyColumns", types, args); }
private static List<string> InvokePopulateNestedRecordColumnValues(Dictionary<string, object> record, List<string> headers) { var csvExporter = new ApplicationListCsvExporter(); var privateObject = new PrivateObject(csvExporter); var args = new object[] { record, headers }; return (List<string>)privateObject.Invoke("PopulateNestedRecordColumnValues", args); }
/// <summary> /// Downloads a CSV document for an Application Search. /// </summary> /// <param name="context">The request context.</param> /// <param name="sessionData">The <see cref="SessionData"/> containing the application id.</param> /// <param name="formId">The form id.</param> /// <param name="filter">The search filter as JSON.</param> /// <param name="fileName">The file name.</param> /// <param name="applicationManager"><see cref="ApplicationManager"/> instance for performing application search.</param> /// <param name="userManager">The user manager.</param> private void Download(HttpContext context, SessionData sessionData, string formId, string filter, string fileName, ApplicationManager applicationManager, UserManager userManager) { var filterObj = JsonConvert.DeserializeObject<ApplicationSearchFilter>(filter); var apps = applicationManager.FindApplications(formId, sessionData.UserId, filterObj); var sb = new StringBuilder(); ApplicationListCsvExporter csvExporter = new ApplicationListCsvExporter(userManager.GetUserById); csvExporter.GenerateCsv(apps, sb); var csvBytes = Encoding.UTF8.GetBytes(sb.ToString()); var response = HttpContext.Current.Response; response.BuildBinaryFileResponse(string.Format("{0}.csv", fileName), csvBytes, Encoding.UTF8, InternetMediaType.ApplicationOctetStream); response.Flush(); context.ApplicationInstance.CompleteRequest(); }