public void DoTicketSearch() { DepartmentCollection depts = TestSetup.KayakoApiService.Departments.GetDepartments(); depts.Add(new Department() { Id = 0 }); TicketCollection tickets = TestSetup.KayakoApiService.Tickets.GetTickets(depts.Select(d => d.Id).ToArray()); Ticket randomTicket = tickets[new Random().Next(tickets.Count)]; int expectedSearchAmount = tickets.Where(t => t.Email.Equals(randomTicket.Email, StringComparison.InvariantCultureIgnoreCase)).Count(); TicketSearchQuery query = new TicketSearchQuery(randomTicket.Email); query.AddSearchField(TicketSearchField.EmailAddress); TicketCollection queriedTickets = TestSetup.KayakoApiService.Tickets.SearchTickets(query); Assert.AreEqual(expectedSearchAmount, queriedTickets.Count); }
/// <summary> /// Run a search on tickets. You can combine the search factors to make the span multiple areas. /// For example, to search the full name, contents and email you can send the arguments as: /// query=John&fullname=1&email=1&contents=1 /// </summary> public TicketCollection SearchTickets(TicketSearchQuery query) { if (String.IsNullOrEmpty(query.Query)) { throw new ArgumentException("A search query must be provided"); } string apiMethod = "/Tickets/TicketSearch"; RequestBodyBuilder parameters = query.GetRequestBodyParameters(); TicketCollection tickets = Connector.ExecutePost<TicketCollection>(apiMethod, parameters.ToString()); return tickets; }