Add test implementation for search queries with field hint.

--- Source/Tests/TraktApiSharp.Tests/Modules/TraktSearchModuleTests.cs
+++ Source/Tests/TraktApiSharp.Tests/Modules/TraktSearchModuleTests.cs
@@ -69,29 +69,28 @@
         }

         [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}",
-            //                                                    searchResults, 1, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
+        public void TestTraktSearchModuleGetTextQueryResultsWithField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&fields={field.UriName}",
+                                                                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
         }

         [TestMethod]
@@ -127,49 +126,16 @@
         }

         [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-
-            //var type = TraktSearchResultType.Show;
-            //var query = "batman";
-
-            //var filter = new TraktSearchFilter()
-            //    .WithYears(2011)
-            //    .WithGenres("action", "thriller")
-            //    .WithLanguages("en", "de")
-            //    .WithCountries("us")
-            //    .WithRuntimes(70, 140)
-            //    .WithRatings(70, 95);
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&{filter.ToString()}",
-            //                                                    searchResults, 1, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOption()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-
-            var type = TraktSearchResultType.Episode;
-            var query = "batman";
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+
+            var type = TraktSearchResultType.Show;
+            var query = "batman";
+            var field = TraktSearchField.Tagline;

             var filter = new TraktSearchFilter()
                 .WithYears(2011)
@@ -179,79 +145,28 @@
                 .WithRuntimes(70, 140)
                 .WithRatings(70, 95);

-            var extendedOption = new TraktExtendedOption
-            {
-                Full = true,
-                Images = true
-            };
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}",
-                searchResults, 1, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-                                                                                extendedOption).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-
-            //var type = TraktSearchResultType.Episode;
-            //var query = "batman";
-
-            //var filter = new TraktSearchFilter()
-            //    .WithYears(2011)
-            //    .WithGenres("action", "thriller")
-            //    .WithLanguages("en", "de")
-            //    .WithCountries("us")
-            //    .WithRuntimes(70, 140)
-            //    .WithRatings(70, 95);
-
-            //var extendedOption = new TraktExtendedOption
-            //{
-            //    Full = true,
-            //    Images = true
-            //};
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth(
-            //    $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}",
-            //    searchResults, 1, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-            //                                                                            extendedOption).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-
-            var type = TraktSearchResultType.Person;
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}",
+                                                                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOption()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+
+            var type = TraktSearchResultType.Episode;
             var query = "batman";

             var filter = new TraktSearchFilter()
@@ -269,74 +184,31 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}&page={page}",
-                searchResults, page, 10, 1, itemCount);
+                $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}",
+                searchResults, 1, 10, 1, itemCount);

             var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-                                                                                extendedOption, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndPageAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var page = 2;
-
-            //var type = TraktSearchResultType.Person;
-            //var query = "batman";
-
-            //var filter = new TraktSearchFilter()
-            //    .WithYears(2011)
-            //    .WithGenres("action", "thriller")
-            //    .WithLanguages("en", "de")
-            //    .WithCountries("us")
-            //    .WithRuntimes(70, 140)
-            //    .WithRatings(70, 95);
-
-            //var extendedOption = new TraktExtendedOption
-            //{
-            //    Full = true,
-            //    Images = true
-            //};
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth(
-            //    $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}&page={page}",
-            //    searchResults, page, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-            //                                                                            extendedOption, page).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(page);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var limit = 4;
-
-            var type = TraktSearchResultType.List;
-            var query = "batman";
+                                                                                extendedOption).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+
+            var type = TraktSearchResultType.Episode;
+            var query = "batman";
+            var field = TraktSearchField.Overview;

             var filter = new TraktSearchFilter()
                 .WithYears(2011)
@@ -353,73 +225,30 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}&limit={limit}",
-                searchResults, 1, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-                                                                                extendedOption, null, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndLimitAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var limit = 4;
-
-            //var type = TraktSearchResultType.List;
-            //var query = "batman";
-
-            //var filter = new TraktSearchFilter()
-            //    .WithYears(2011)
-            //    .WithGenres("action", "thriller")
-            //    .WithLanguages("en", "de")
-            //    .WithCountries("us")
-            //    .WithRuntimes(70, 140)
-            //    .WithRatings(70, 95);
-
-            //var extendedOption = new TraktExtendedOption
-            //{
-            //    Full = true,
-            //    Images = true
-            //};
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth(
-            //    $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}&limit={limit}",
-            //    searchResults, 1, limit, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-            //                                                                            extendedOption, null, limit).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(limit);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-
-            var type = TraktSearchResultType.Movie;
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}&extended={extendedOption.ToString()}",
+                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter,
+                                                                                extendedOption).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Person;
             var query = "batman";

             var filter = new TraktSearchFilter()
@@ -430,67 +259,39 @@
                 .WithRuntimes(70, 140)
                 .WithRatings(70, 95);

-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&{filter.ToString()}&page={page}",
-                                                                searchResults, page, 10, 1, itemCount);
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}&page={page}",
+                searchResults, page, 10, 1, itemCount);

             var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-                                                                                null, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPageAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var page = 2;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //var filter = new TraktSearchFilter()
-            //    .WithYears(2011)
-            //    .WithGenres("action", "thriller")
-            //    .WithLanguages("en", "de")
-            //    .WithCountries("us")
-            //    .WithRuntimes(70, 140)
-            //    .WithRatings(70, 95);
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&{filter.ToString()}&page={page}",
-            //                                                    searchResults, page, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-            //                                                                            null, page).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(page);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var limit = 4;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
+                                                                                extendedOption, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndPageAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Person;
+            var query = "batman";
+            var field = TraktSearchField.Translations;

             var filter = new TraktSearchFilter()
                 .WithYears(2011)
@@ -500,67 +301,37 @@
                 .WithRuntimes(70, 140)
                 .WithRatings(70, 95);

-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&{filter.ToString()}&limit={limit}",
-                                                                searchResults, 1, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-                                                                                null, null, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndLimitAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var limit = 4;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //var filter = new TraktSearchFilter()
-            //    .WithYears(2011)
-            //    .WithGenres("action", "thriller")
-            //    .WithLanguages("en", "de")
-            //    .WithCountries("us")
-            //    .WithRuntimes(70, 140)
-            //    .WithRatings(70, 95);
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&{filter.ToString()}&limit={limit}",
-            //                                                    searchResults, 1, limit, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-            //                                                                            null, null, limit).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(limit);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPageAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-            var limit = 4;
-
-            var type = TraktSearchResultType.Movie;
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}&extended={extendedOption.ToString()}&page={page}",
+                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter,
+                                                                                extendedOption, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.List;
             var query = "batman";

             var filter = new TraktSearchFilter()
@@ -571,214 +342,17 @@
                 .WithRuntimes(70, 140)
                 .WithRatings(70, 95);

-            TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&{filter.ToString()}&page={page}&limit={limit}",
-                searchResults, page, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-                                                                                null, page, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPageAndLimitAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var page = 2;
-            //var limit = 4;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //var filter = new TraktSearchFilter()
-            //    .WithYears(2011)
-            //    .WithGenres("action", "thriller")
-            //    .WithLanguages("en", "de")
-            //    .WithCountries("us")
-            //    .WithRuntimes(70, 140)
-            //    .WithRatings(70, 95);
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth(
-            //    $"search/{type.UriName}?query={query}&{filter.ToString()}&page={page}&limit={limit}",
-            //    searchResults, page, limit, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-            //                                                                            null, page, limit).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(limit);
-            //response.Page.Should().HaveValue().And.Be(page);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOption()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
             var extendedOption = new TraktExtendedOption
             {
                 Full = true,
                 Images = true
             };

-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}",
-                                                                searchResults, 1, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-                                                                                extendedOption).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //var extendedOption = new TraktExtendedOption
-            //{
-            //    Full = true,
-            //    Images = true
-            //};
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}",
-            //                                                    searchResults, 1, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-            //                                                                            extendedOption).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
-            var extendedOption = new TraktExtendedOption
-            {
-                Full = true,
-                Images = true
-            };
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&page={page}",
-                searchResults, page, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-                                                                                extendedOption, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPageAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var page = 2;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //var extendedOption = new TraktExtendedOption
-            //{
-            //    Full = true,
-            //    Images = true
-            //};
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth(
-            //    $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&page={page}",
-            //    searchResults, page, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-            //                                                                            extendedOption, page).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(page);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var limit = 4;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
-            var extendedOption = new TraktExtendedOption
-            {
-                Full = true,
-                Images = true
-            };
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&limit={limit}",
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}&limit={limit}",
                 searchResults, 1, limit, 1, itemCount);

-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
                                                                                extendedOption, null, limit).Result;

             response.Should().NotBeNull();
@@ -790,286 +364,17 @@
         }

         [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndLimitAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var limit = 4;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //var extendedOption = new TraktExtendedOption
-            //{
-            //    Full = true,
-            //    Images = true
-            //};
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth(
-            //    $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&limit={limit}",
-            //    searchResults, 1, limit, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-            //                                                                            extendedOption, null, limit).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(limit);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPageAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-            var limit = 4;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
-            var extendedOption = new TraktExtendedOption
-            {
-                Full = true,
-                Images = true
-            };
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&page={page}&limit={limit}",
-                searchResults, page, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-                                                                                extendedOption, page, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPageAndLimitAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var page = 2;
-            //var limit = 4;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //var extendedOption = new TraktExtendedOption
-            //{
-            //    Full = true,
-            //    Images = true
-            //};
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth(
-            //    $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&page={page}&limit={limit}",
-            //    searchResults, page, limit, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-            //                                                                            extendedOption, page, limit).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(limit);
-            //response.Page.Should().HaveValue().And.Be(page);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&page={page}",
-                                                                searchResults, page, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-                                                                                null, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithPageAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var page = 2;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&page={page}",
-            //                                                    searchResults, page, 10, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-            //                                                                            null, page).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(10);
-            //response.Page.Should().HaveValue().And.Be(page);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var limit = 4;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&limit={limit}",
-                                                                searchResults, 1, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-                                                                                null, null, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithLimitAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var limit = 4;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&limit={limit}",
-            //                                                    searchResults, 1, limit, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-            //                                                                            null, null, limit).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(limit);
-            //response.Page.Should().HaveValue().And.Be(1);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithPageAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-            var limit = 4;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&page={page}&limit={limit}",
-                                                                searchResults, page, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-                                                                                null, page, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsWithPageAndLimitAndFields()
-        {
-            Assert.Fail();
-
-            //var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            //searchResults.Should().NotBeNullOrEmpty();
-
-            //var itemCount = 5;
-            //var page = 2;
-            //var limit = 4;
-
-            //var type = TraktSearchResultType.Movie;
-            //var query = "batman";
-
-            //TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&page={page}&limit={limit}",
-            //                                                    searchResults, page, limit, 1, itemCount);
-
-            //var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
-            //                                                                            null, page, limit).Result;
-
-            //response.Should().NotBeNull();
-            //response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            //response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            //response.Limit.Should().HaveValue().And.Be(limit);
-            //response.Page.Should().HaveValue().And.Be(page);
-            //response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsComplete()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 5;
-            var page = 2;
-            var limit = 4;
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndExtendedOptionAndLimitAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.List;
+            var query = "batman";
+            var field = TraktSearchField.Aliases;

             var filter = new TraktSearchFilter()
                 .WithYears(2011)
@@ -1086,188 +391,243 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{type.UriName}?query={query}&{filter.ToString()}&extended={extendedOption.ToString()}&page={page}&limit={limit}",
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}&extended={extendedOption.ToString()}&limit={limit}",
+                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter,
+                                                                                extendedOption, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+
+            var filter = new TraktSearchFilter()
+                .WithYears(2011)
+                .WithGenres("action", "thriller")
+                .WithLanguages("en", "de")
+                .WithCountries("us")
+                .WithRuntimes(70, 140)
+                .WithRatings(70, 95);
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&{filter.ToString()}&page={page}",
+                                                                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
+                                                                                null, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPageAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.People;
+
+            var filter = new TraktSearchFilter()
+                .WithYears(2011)
+                .WithGenres("action", "thriller")
+                .WithLanguages("en", "de")
+                .WithCountries("us")
+                .WithRuntimes(70, 140)
+                .WithRatings(70, 95);
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}&page={page}",
+                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter,
+                                                                                null, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+
+            var filter = new TraktSearchFilter()
+                .WithYears(2011)
+                .WithGenres("action", "thriller")
+                .WithLanguages("en", "de")
+                .WithCountries("us")
+                .WithRuntimes(70, 140)
+                .WithRatings(70, 95);
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&{filter.ToString()}&limit={limit}",
+                                                                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
+                                                                                null, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndLimitAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Biography;
+
+            var filter = new TraktSearchFilter()
+                .WithYears(2011)
+                .WithGenres("action", "thriller")
+                .WithLanguages("en", "de")
+                .WithCountries("us")
+                .WithRuntimes(70, 140)
+                .WithRatings(70, 95);
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}&limit={limit}",
+                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter,
+                                                                                null, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPageAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+
+            var filter = new TraktSearchFilter()
+                .WithYears(2011)
+                .WithGenres("action", "thriller")
+                .WithLanguages("en", "de")
+                .WithCountries("us")
+                .WithRuntimes(70, 140)
+                .WithRatings(70, 95);
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&{filter.ToString()}&page={page}&limit={limit}",
                 searchResults, page, limit, 1, itemCount);

             var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, filter,
-                                                                                extendedOption, page, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsExceptions()
-        {
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-            var uri = $"search/{type.UriName}?query={query}";
-
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.NotFound);
-
-            Func<Task<TraktPaginationListResult<TraktSearchResult>>> act =
-                async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query);
-            act.ShouldThrow<TraktNotFoundException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.Unauthorized);
-            act.ShouldThrow<TraktAuthorizationException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.BadRequest);
-            act.ShouldThrow<TraktBadRequestException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.Forbidden);
-            act.ShouldThrow<TraktForbiddenException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.MethodNotAllowed);
-            act.ShouldThrow<TraktMethodNotFoundException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.Conflict);
-            act.ShouldThrow<TraktConflictException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.InternalServerError);
-            act.ShouldThrow<TraktServerException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.BadGateway);
-            act.ShouldThrow<TraktBadGatewayException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)412);
-            act.ShouldThrow<TraktPreconditionFailedException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)422);
-            act.ShouldThrow<TraktValidationException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)429);
-            act.ShouldThrow<TraktRateLimitException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)503);
-            act.ShouldThrow<TraktServerUnavailableException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)504);
-            act.ShouldThrow<TraktServerUnavailableException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)520);
-            act.ShouldThrow<TraktServerUnavailableException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)521);
-            act.ShouldThrow<TraktServerUnavailableException>();
-
-            TestUtility.ClearMockHttpClient();
-            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)522);
-            act.ShouldThrow<TraktServerUnavailableException>();
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetTextQueryResultsArgumentExceptions()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var type = TraktSearchResultType.Movie;
-            var query = "batman";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}", searchResults);
-
-            var searchResultType = default(TraktSearchResultType);
-
-            Func<Task<TraktPaginationListResult<TraktSearchResult>>> act =
-                async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(searchResultType, null);
-            act.ShouldThrow<ArgumentNullException>();
-
-            act = async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, null);
-            act.ShouldThrow<ArgumentException>();
-
-            act = async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, string.Empty);
-            act.ShouldThrow<ArgumentException>();
-
-            act = async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(TraktSearchResultType.Unspecified, query);
-            act.ShouldThrow<ArgumentException>();
-        }
-
-        #endregion
-
-        // -----------------------------------------------------------------------------------------------
-        // -----------------------------------------------------------------------------------------------
-
-        #region SearchIdLookup
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResults()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}",
-                                                                searchResults, 1, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithResultType()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}",
-                                                                searchResults, 1, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndExtendedOption()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
+                                                                                null, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithFilterAndPageAndLimitAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Name;
+
+            var filter = new TraktSearchFilter()
+                .WithYears(2011)
+                .WithGenres("action", "thriller")
+                .WithLanguages("en", "de")
+                .WithCountries("us")
+                .WithRuntimes(70, 140)
+                .WithRatings(70, 95);
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}&page={page}&limit={limit}",
+                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter,
+                                                                                null, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOption()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";

             var extendedOption = new TraktExtendedOption
             {
@@ -1275,33 +635,31 @@
                 Images = true
             };

-            TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&extended={extendedOption.ToString()}",
-                searchResults, 1, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
-                                                                                extendedOption).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndExtendedOptionAndPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}",
+                                                                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+                                                                                extendedOption).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Description;

             var extendedOption = new TraktExtendedOption
             {
@@ -1310,32 +668,31 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&extended={extendedOption.ToString()}&page={page}",
-                searchResults, page, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
-                                                                                extendedOption, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndExtendedOptionAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&extended={extendedOption.ToString()}",
+                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, null,
+                                                                                extendedOption).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";

             var extendedOption = new TraktExtendedOption
             {
@@ -1344,112 +701,32 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&extended={extendedOption.ToString()}&limit={limit}",
-                searchResults, 1, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
-                                                                                extendedOption, null, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&page={page}",
-                                                                searchResults, page, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
-                                                                                null, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&limit={limit}",
-                                                                searchResults, 1, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
-                                                                                null, null, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndPageAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&page={page}&limit={limit}",
-                                                                searchResults, page, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
-                                                                                null, page, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOption()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
+                $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&page={page}",
+                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+                                                                                extendedOption, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPageAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;

             var extendedOption = new TraktExtendedOption
             {
@@ -1457,31 +734,32 @@
                 Images = true
             };

-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}",
-                                                                searchResults, 1, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
-                                                                                extendedOption).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOptionAndPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&extended={extendedOption.ToString()}&page={page}",
+                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, null,
+                                                                                extendedOption, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";

             var extendedOption = new TraktExtendedOption
             {
@@ -1490,31 +768,32 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}&page={page}",
-                searchResults, page, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
-                                                                                extendedOption, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOptionAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
+                $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&limit={limit}",
+                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+                                                                                extendedOption, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndLimitAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;

             var extendedOption = new TraktExtendedOption
             {
@@ -1523,32 +802,32 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
-                $"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}&limit={limit}",
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&extended={extendedOption.ToString()}&limit={limit}",
                 searchResults, 1, limit, 1, itemCount);

-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
-                                                                                extendedOption, null, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOptionAndPageAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, null,
+                                                                                extendedOption, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPageAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";

             var extendedOption = new TraktExtendedOption
             {
@@ -1556,113 +835,34 @@
                 Images = true
             };

-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}" +
-                                                                $"&page={page}&limit={limit}",
-                                                                searchResults, page, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
-                                                                                extendedOption, page, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithPage()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?page={page}",
-                                                                searchResults, page, 10, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
-                                                                                null, page).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(10);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?limit={limit}",
-                                                                searchResults, 1, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
-                                                                                null, null, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(1);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsWithPageAndLimit()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-
-            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?page={page}&limit={limit}",
-                                                                searchResults, page, limit, 1, itemCount);
-
-            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
-                                                                                null, page, limit).Result;
-
-            response.Should().NotBeNull();
-            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
-            response.ItemCount.Should().HaveValue().And.Be(itemCount);
-            response.Limit.Should().HaveValue().And.Be(limit);
-            response.Page.Should().HaveValue().And.Be(page);
-            response.PageCount.Should().HaveValue().And.Be(1);
-        }
-
-        [TestMethod]
-        public void TestTraktSearchModuleGetIdLookupResultsComplete()
-        {
-            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
-            searchResults.Should().NotBeNullOrEmpty();
-
-            var itemCount = 1;
-            var page = 2;
-            var limit = 4;
-
-            var idType = TraktSearchIdType.ImDB;
-            var lookupId = "tt0848228";
-            var resultType = TraktSearchResultType.Movie;
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&extended={extendedOption.ToString()}&page={page}&limit={limit}",
+                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+                                                                                extendedOption, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithExtendedOptionAndPageAndLimitAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;

             var extendedOption = new TraktExtendedOption
             {
@@ -1671,6 +871,797 @@
             };

             TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&extended={extendedOption.ToString()}&page={page}&limit={limit}",
+                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, null,
+                                                                                extendedOption, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&page={page}",
+                                                                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+                                                                                null, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithPageAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&fields={field.UriName}&page={page}",
+                                                                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, null,
+                                                                                null, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&limit={limit}",
+                                                                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+                                                                                null, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithLimitAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&fields={field.UriName}&limit={limit}",
+                                                                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, null,
+                                                                                null, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithPageAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}&page={page}&limit={limit}",
+                                                                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, null, null,
+                                                                                null, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsWithPageAndLimitAndField()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&page={page}&limit={limit}",
+                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, null,
+                                                                                null, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsComplete()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 5;
+            var page = 2;
+            var limit = 4;
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var field = TraktSearchField.Title;
+
+            var filter = new TraktSearchFilter()
+                .WithYears(2011)
+                .WithGenres("action", "thriller")
+                .WithLanguages("en", "de")
+                .WithCountries("us")
+                .WithRuntimes(70, 140)
+                .WithRatings(70, 95);
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{type.UriName}?query={query}&fields={field.UriName}&{filter.ToString()}" +
+                $"&extended={extendedOption.ToString()}&page={page}&limit={limit}",
+                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query, field, filter,
+                                                                                extendedOption, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsExceptions()
+        {
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+            var uri = $"search/{type.UriName}?query={query}";
+
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.NotFound);
+
+            Func<Task<TraktPaginationListResult<TraktSearchResult>>> act =
+                async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, query);
+            act.ShouldThrow<TraktNotFoundException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.Unauthorized);
+            act.ShouldThrow<TraktAuthorizationException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.BadRequest);
+            act.ShouldThrow<TraktBadRequestException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.Forbidden);
+            act.ShouldThrow<TraktForbiddenException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.MethodNotAllowed);
+            act.ShouldThrow<TraktMethodNotFoundException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.Conflict);
+            act.ShouldThrow<TraktConflictException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.InternalServerError);
+            act.ShouldThrow<TraktServerException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, HttpStatusCode.BadGateway);
+            act.ShouldThrow<TraktBadGatewayException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)412);
+            act.ShouldThrow<TraktPreconditionFailedException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)422);
+            act.ShouldThrow<TraktValidationException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)429);
+            act.ShouldThrow<TraktRateLimitException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)503);
+            act.ShouldThrow<TraktServerUnavailableException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)504);
+            act.ShouldThrow<TraktServerUnavailableException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)520);
+            act.ShouldThrow<TraktServerUnavailableException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)521);
+            act.ShouldThrow<TraktServerUnavailableException>();
+
+            TestUtility.ClearMockHttpClient();
+            TestUtility.SetupMockResponseWithoutOAuth(uri, (HttpStatusCode)522);
+            act.ShouldThrow<TraktServerUnavailableException>();
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetTextQueryResultsArgumentExceptions()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var type = TraktSearchResultType.Movie;
+            var query = "batman";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{type.UriName}?query={query}", searchResults);
+
+            var searchResultType = default(TraktSearchResultType);
+
+            Func<Task<TraktPaginationListResult<TraktSearchResult>>> act =
+                async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(searchResultType, null);
+            act.ShouldThrow<ArgumentNullException>();
+
+            act = async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, null);
+            act.ShouldThrow<ArgumentException>();
+
+            act = async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(type, string.Empty);
+            act.ShouldThrow<ArgumentException>();
+
+            act = async () => await TestUtility.MOCK_TEST_CLIENT.Search.GetTextQueryResultsAsync(TraktSearchResultType.Unspecified, query);
+            act.ShouldThrow<ArgumentException>();
+        }
+
+        #endregion
+
+        // -----------------------------------------------------------------------------------------------
+        // -----------------------------------------------------------------------------------------------
+
+        #region SearchIdLookup
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResults()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}",
+                                                                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithResultType()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}",
+                                                                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndExtendedOption()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&extended={extendedOption.ToString()}",
+                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
+                                                                                extendedOption).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndExtendedOptionAndPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&extended={extendedOption.ToString()}&page={page}",
+                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
+                                                                                extendedOption, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndExtendedOptionAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&extended={extendedOption.ToString()}&limit={limit}",
+                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
+                                                                                extendedOption, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&page={page}",
+                                                                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
+                                                                                null, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&limit={limit}",
+                                                                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
+                                                                                null, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithResultTypeAndPageAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&page={page}&limit={limit}",
+                                                                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, resultType,
+                                                                                null, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOption()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}",
+                                                                searchResults, 1, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
+                                                                                extendedOption).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOptionAndPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}&page={page}",
+                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
+                                                                                extendedOption, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOptionAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
+                $"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}&limit={limit}",
+                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
+                                                                                extendedOption, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithExtendedOptionAndPageAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?extended={extendedOption.ToString()}" +
+                                                                $"&page={page}&limit={limit}",
+                                                                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
+                                                                                extendedOption, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithPage()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?page={page}",
+                                                                searchResults, page, 10, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
+                                                                                null, page).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(10);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?limit={limit}",
+                                                                searchResults, 1, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
+                                                                                null, null, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(1);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsWithPageAndLimit()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth($"search/{idType.UriName}/{lookupId}?page={page}&limit={limit}",
+                                                                searchResults, page, limit, 1, itemCount);
+
+            var response = TestUtility.MOCK_TEST_CLIENT.Search.GetIdLookupResultsAsync(idType, lookupId, null,
+                                                                                null, page, limit).Result;
+
+            response.Should().NotBeNull();
+            response.Items.Should().NotBeNull().And.HaveCount(itemCount);
+            response.ItemCount.Should().HaveValue().And.Be(itemCount);
+            response.Limit.Should().HaveValue().And.Be(limit);
+            response.Page.Should().HaveValue().And.Be(page);
+            response.PageCount.Should().HaveValue().And.Be(1);
+        }
+
+        [TestMethod]
+        public void TestTraktSearchModuleGetIdLookupResultsComplete()
+        {
+            var searchResults = TestUtility.ReadFileContents(@"Objects\Basic\Search\SearchIdLookupResults.json");
+            searchResults.Should().NotBeNullOrEmpty();
+
+            var itemCount = 1;
+            var page = 2;
+            var limit = 4;
+
+            var idType = TraktSearchIdType.ImDB;
+            var lookupId = "tt0848228";
+            var resultType = TraktSearchResultType.Movie;
+
+            var extendedOption = new TraktExtendedOption
+            {
+                Full = true,
+                Images = true
+            };
+
+            TestUtility.SetupMockPaginationResponseWithoutOAuth(
                 $"search/{idType.UriName}/{lookupId}?type={resultType.UriName}&extended={extendedOption.ToString()}" +
                 $"&page={page}&limit={limit}",
                 searchResults, page, limit, 1, itemCount);