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&amp;fullname=1&amp;email=1&amp;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;
        }