public void GetTicketsCustomFields() { TicketCustomFields ticketCustomFields = TestSetup.KayakoApiService.Tickets.GetTicketCustomFields(2); Assert.IsNotNull(ticketCustomFields.FieldGroups, "No ticket custom fields were returned"); Assert.IsNotEmpty(ticketCustomFields.FieldGroups, "No ticket custom fields were returned"); OutputMessage <TicketCustomFields>("Result: ", ticketCustomFields); }
public void Setup() { _kayakoApiRequest = new Mock <IKayakoApiRequest>(); _ticketController = new TicketController(_kayakoApiRequest.Object); _responseTicketCollection = new TicketCollection { new Ticket() }; _createTicketRequestRequiredFields = new TicketRequest { Subject = "Subject", FullName = "Fullname", Email = "*****@*****.**", Contents = "Contents", DepartmentId = 1, TicketStatusId = 2, TicketPriorityId = 3, TicketTypeId = 4 }; _createTicketRequiredFieldsParameters = "subject=Subject&fullname=Fullname&[email protected]&contents=Contents&departmentid=1&ticketstatusid=2&ticketpriorityid=3&tickettypeid=4"; _responseTicketCustomFields = new TicketCustomFields { FieldGroups = new List <TicketCustomFieldGroup> { new TicketCustomFieldGroup { Id = 1, Title = "Title", Fields = new[] { new TicketCustomField { Type = TicketCustomFieldType.Text, Name = "FieldName1", FieldContent = "content1" }, new TicketCustomField { Type = TicketCustomFieldType.Text, Name = "FieldName2", FieldContent = "content2" } } } } }; }
public void UpdateTicketCustomFields() { DepartmentCollection depts = TestSetup.KayakoApiService.Departments.GetDepartments(); TicketCollection tickets = TestSetup.KayakoApiService.Tickets.GetTickets(depts.Select(d => d.Id).ToArray()); int idToUse = -1; foreach (Ticket ticket in tickets) { TicketCustomFields ticketCustomFields = TestSetup.KayakoApiService.Tickets.GetTicketCustomFields(ticket.Id); if (ticketCustomFields.FieldGroups.Count > 0) { if (ticketCustomFields.FieldGroups.Where(tcf => tcf.Fields.Length > 0 && tcf.Fields.Any(a => a.Type == Core.Constants.TicketCustomFieldType.Text || a.Type == Core.Constants.TicketCustomFieldType.TextArea)).Any()) { idToUse = ticket.Id; break; } } } if (idToUse != -1) { TicketCustomFields ticketCustomFields = TestSetup.KayakoApiService.Tickets.GetTicketCustomFields(idToUse); TicketCustomFieldGroup group = ticketCustomFields.FieldGroups.FirstOrDefault(tcf => tcf.Fields.Length > 0 && tcf.Fields.Any(a => a.Type == Core.Constants.TicketCustomFieldType.Text || a.Type == Core.Constants.TicketCustomFieldType.TextArea)); TicketCustomField field = group.Fields.FirstOrDefault(type => type.Type == Core.Constants.TicketCustomFieldType.Text || type.Type == Core.Constants.TicketCustomFieldType.TextArea); field.FieldContent = String.Format("This was updated at : {0}", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")); TicketCustomFields updatedTicketCustomFields = TestSetup.KayakoApiService.Tickets.UpdateTicketCustomFields(idToUse, ticketCustomFields); TicketCustomFieldGroup updatedGroup = updatedTicketCustomFields.FieldGroups.FirstOrDefault(customField => customField.Fields.Length > 0 && customField.Fields.Any(a => a.Type == Core.Constants.TicketCustomFieldType.Text || a.Type == Core.Constants.TicketCustomFieldType.TextArea)); TicketCustomField updatedField = updatedGroup.Fields.FirstOrDefault(type => type.Type == Core.Constants.TicketCustomFieldType.Text || type.Type == Core.Constants.TicketCustomFieldType.TextArea); Assert.AreEqual(field.FieldContent, updatedField.FieldContent); } else { throw new Exception("Could not find any tickets with any text/text area custom fields."); } }
/// <summary> /// Update the custom field values for a ticket. Please note all custom fields for the ticket must be sent through with /// their values. /// </summary> public TicketCustomFields UpdateTicketCustomFields(int ticketId, TicketCustomFields customFields) { string apiMethod = String.Format("/Tickets/TicketCustomField/{0}", ticketId); StringBuilder sb = new StringBuilder(); foreach (TicketCustomFieldGroup group in customFields.FieldGroups) { foreach (TicketCustomField field in group.Fields) { if (!String.IsNullOrEmpty(sb.ToString())) { sb.Append("&"); } sb.AppendFormat("{0}={1}", field.Name, HttpUtility.UrlEncode((field.FieldContent ?? ""))); } } return(Connector.ExecutePost <TicketCustomFields>(apiMethod, sb.ToString())); }
public void TicketCustomFieldCollectionDeserialization() { var ticketcustomFields = new TicketCustomFields { FieldGroups = new List <TicketCustomFieldGroup> { new TicketCustomFieldGroup { Id = 4, Title = "Test Ticket", Fields = new [] { new TicketCustomField { Id = 2, Type = TicketCustomFieldType.Text, Name = "ab32ds122", Title = "Test", FieldContent = "Test Plaintext Field" }, new TicketCustomField { Id = 3, Type = TicketCustomFieldType.LinkedSelectFields, Name = "fd923nds2", Title = "Linked Select", FieldContent = "Product > Fusion" }, new TicketCustomField { Id = 4, Type = TicketCustomFieldType.MultiSelect, Name = "mcz923nxa", Title = "Multiple", FieldContent = "Value1, Value2" }, new TicketCustomField { Id = 5, Type = TicketCustomFieldType.Date, Name = "z13nc8923", Title = "Date", FieldContent = "05/24/2011" }, new TicketCustomField { Id = 6, Type = TicketCustomFieldType.File, FileName = "report.txt", Name = "mds923nx92", Title = "File", FieldContent = "VTFkSlJsUXRNVE01TURvZ1EzVnpkRzl0SUVacFpXeGtjeUJwYmlCVWFXTnJaWFFnVm1sbGQzTUtDbE5YU1VaVUxURXpPVEU2SUZCMVlteHBZeTlRY21sMllYUmxJRlpwYzJsaWFXeHBkSGtnVkc5bloyeGxJR2x1SUZWelpYSXZWWE5sY2lCUGNtZGhibWw2WVhScGIyNGdRM1Z6ZEc5dElFWnBaV3hrSUVkeWIzVndjd29L" } } } } }; var expectedTicketCustomFields = XmlDataUtility.ReadFromFile <TicketCustomFields>("TestData/TicketCustomFields.xml"); AssertUtility.ObjectsEqual(expectedTicketCustomFields, ticketcustomFields); }