コード例 #1
0
        public void When_Row_Is_Dynamic_Query_By_Key_Succeeds()
        {
            var query = new ViewQuery().
                From("beer_ext", "all_beers").
                Bucket("beer-sample").
                Limit(1).
                Development(false).
                BaseUri(_baseUri);

            var client = new ViewClient(new HttpClient(),
                new JsonDataMapper(new ClientConfiguration()),
                new BucketConfig { Name = "beer-sample" },
                new ClientConfiguration());

            var result = client.Execute<Beer>(query);

            var query2 = new ViewQuery().
                From("beer_ext", "all_beers").
                Bucket("beer-sample").
                Key(result.Rows.First().Id).
                BaseUri(_baseUri);

            var result2 = client.Execute<Beer>(query2);
            Assert.AreEqual(result.Rows.First().Id, result2.Rows.First().Id);
        }
コード例 #2
0
        public void When_Row_Is_Dynamic_Query_By_Key_Succeeds()
        {
            //arrange
            var query = new ViewQuery().
                From("beer_ext", "all_beers").
                Bucket("beer-sample").
                Limit(1).
                Development(false).
                BaseUri(_baseUri);

            var client = GetViewClient("beer-sample");

            //act
            var result = client.Execute<Beer>(query);

            var query2 = new ViewQuery().
                From("beer_ext", "all_beers").
                Bucket("beer-sample").
                Key(result.Rows.First().Id).
                BaseUri(_baseUri);

            var result2 = client.Execute<Beer>(query2);

            //assert
            Assert.AreEqual(result.Rows.First().Id, result2.Rows.First().Id);
        }
コード例 #3
0
        public void Test_Build_Basic_Query_Using_From()
        {
            var expected = new Uri("http://localhost:8092/default/_design/cities/_view/by_name?");
            const string baseUri = "http://localhost:8092";
            var query = new ViewQuery("default", baseUri).
                From("cities", "by_name");

            Assert.AreEqual(expected, query.RawUri());
        }
コード例 #4
0
        public void Test_Build_Basic_Query_Using_From_Limit_10()
        {
            var expected = new Uri("http://127.0.0.1:8092/default/_design/cities/_view/by_name?limit=10");
            const string baseUri = "http://127.0.0.1:8092";
            var query = new ViewQuery("default", baseUri).
                From("cities", "by_name").
                Limit(10);

            Assert.AreEqual(expected, query.RawUri());
        }
コード例 #5
0
        public void When_BaseUri_Returns_BucketName_And_UUID_Bucket_Property_IsIgnored()
        {
            const string expected = "http://192.168.56.102:8092/beer-sample%2B179b38da638e51deee5bcf5be82d2093/_design/beer/_view/brewery_beers?";
            const string baseUriWithUuid = "http://192.168.56.102:8092/beer-sample%2B179b38da638e51deee5bcf5be82d2093";

            var actual = new ViewQuery(baseUriWithUuid).
                From("beer", "brewery_beers").
                Bucket("beer-sample");

            Assert.AreEqual(new Uri(expected), actual.RawUri());
        }
コード例 #6
0
        public void Test_Build_Basic_Query()
        {
            var expected = new Uri("http://localhost:8092/default/_design/cities/_view/by_name?");
            const string baseUri = "http://localhost:8092";
            var query = new ViewQuery(baseUri).
                Bucket("default").
                DesignDoc("cities").
                View("by_name");

            Assert.AreEqual(expected, query.RawUri());
        }
コード例 #7
0
        public void When_Development_True_DesignDoc_Has_dev_Prefix()
        {
            var expected = new Uri("http://localhost:8092/default/_design/dev_cities/_view/by_name?");
            const string baseUri = "http://localhost:8092";
            var query = new ViewQuery(baseUri, true).
                Bucket("default").
                DesignDoc("cities").
                View("by_name");

            Assert.AreEqual(expected, query.RawUri());
        }
コード例 #8
0
        public void When_Query_Is_Succesful_Rows_Are_Returned()
        {
            var query = new ViewQuery(false).
                From("beer-sample", "beer").
                View("brewery_beers");

            var client = new ViewClient(new HttpClient(), new JsonDataMapper());
            var result = client.Execute<dynamic>(query);
            Assert.IsNotNull(result.Rows);
            Assert.AreEqual(result.StatusCode, HttpStatusCode.OK);
        }
コード例 #9
0
 public void Test_Build_Basic_Query_Using_From_Limit_10_And_Start_and_EndKeys_With_Encode_False()
 {
     var expected = new Uri("http://localhost:8092/beer-sample/_design/beer/_view/brewery_beers?endkey=[\"aass_brewery\"]&limit=10&startkey=[\"21st_amendment_brewery_cafe\"]");
     const string baseUri = "http://localhost:8092";
     var query = new ViewQuery("beer-sample", baseUri).
         From("beer", "brewery_beers").
         StartKey("[\"21st_amendment_brewery_cafe\"]", false).
         EndKey("[\"aass_brewery\"]", false).
         Limit(10);
     var uri = query.RawUri();
     Assert.AreEqual(expected, uri);
 }
コード例 #10
0
        public void Test_View_Query()
        {
            using (var bucket = _cluster.OpenBucket("beer-sample"))
            {
                var query = new ViewQuery(false).
                    From("beer-sample", "beer").
                    View("brewery_beers").
                    Limit(10);

                Console.WriteLine(query.RawUri());
                var result = bucket.Query<dynamic>(query);
                Assert.Greater(result.TotalRows, 0);
            }
        }
コード例 #11
0
        public void When_Url_Is_Invalid_WebException_Is_Returned()
        {
            var query = new ViewQuery(false).
                From("beer-sample", "beer").
                View("brewery_beers").
                BaseUri("http://192.168.56.105:8092/");

            var client = new ViewClient(new HttpClient(), new JsonDataMapper());
            var result = client.Execute<dynamic>(query);
            Assert.IsNotNull(result.Rows);
            Assert.IsFalse(result.Success);
            Assert.AreEqual(HttpStatusCode.ServiceUnavailable, result.StatusCode);
            Assert.AreEqual(typeof(HttpRequestException), result.Exception.GetType());
        }
コード例 #12
0
        public void When_View_Is_Not_Found_404_Is_Returned()
        {
            var query = new ViewQuery(false).
                From("beer-sample", "beer").
                View("view_that_does_not_exist");

            var client = new ViewClient(new HttpClient(), new JsonDataMapper());
            var result = client.Execute<dynamic>(query);
            
            Assert.IsNotNull(result.Message);
            Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode);
            Assert.IsFalse(result.Success);

            Console.WriteLine(result.Message);
        }
コード例 #13
0
        public void When_View_Is_Called_With_Invalid_Parameters_Error_Is_Returned()
        {
            var query = new ViewQuery(false).
                From("beer-sample", "beer").
                View("brewery_beers").
                Group(true);

            var client = new ViewClient(new HttpClient(), new JsonDataMapper());
            var result = client.Execute<dynamic>(query);
            
            Assert.AreEqual("query_parse_error", result.Error);
            Assert.AreEqual("Invalid URL parameter 'group' or  'group_level' for non-reduce view.", result.Message);
            Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode);
            Assert.IsFalse(result.Success);

            Console.WriteLine(result.Message);
        }
コード例 #14
0
        public void When_Query_Is_Succesful_Rows_Are_Returned()
        {
            var query = new ViewQuery().
                From("beer", "brewery_beers").
                Bucket("beer-sample").
                Limit(10);

            var client = new ViewClient(new HttpClient(),
                new JsonDataMapper(new ClientConfiguration()),
                new BucketConfig { Name = "beer-sample" },
                new ClientConfiguration());

            var result = client.Execute<dynamic>(query);
            Assert.IsNotNull(result.Rows);
            foreach (var viewRow in result.Rows)
            {
                Assert.IsNotNull(viewRow.Id);
            }
            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
        }
コード例 #15
0
        public void When_Poco_Is_Supplied_Map_Results_To_It()
        {
            var query = new ViewQuery().
              From("beer", "all_beers").
              Bucket("beer-sample").Limit(10);

            var client = new ViewClient(new HttpClient(),
                new JsonDataMapper(new ClientConfiguration()),
                new BucketConfig { Name = "beer-sample" },
                new ClientConfiguration());

            var result = client.Execute<Beer>(query);
            foreach (var viewRow in result.Rows)
            {
                Assert.IsNotNull(viewRow.Id);
            }
            Console.WriteLine(result.Error);
            Assert.IsNotNull(result.Rows);
            Assert.IsTrue(result.Success);
            Assert.AreEqual(result.Rows.Count(), result.Values.Count());
        }
コード例 #16
0
        public void When_Poco_Is_Supplied_Map_Results_To_It()
        {
            //arrange
            var query = new ViewQuery().
              From("beer_ext", "all_beers").
              Bucket("beer-sample").
              Limit(10).
              Development(false).
              BaseUri(_baseUri);

            var client = GetViewClient("beer-sample");

            //act
            var result = client.Execute<Beer>(query);

            //assert
            foreach (var viewRow in result.Rows)
            {
                Assert.IsNotNull(viewRow.Id);
            }
            Assert.IsNotNull(result.Rows);
            Assert.IsTrue(result.Success);
            Assert.AreEqual(result.Rows.Count(), result.Values.Count());
        }
コード例 #17
0
 public void Test_Build_Basic_Query_Using_From_Limit_10_And_Start_and_EndKeys_2()
 {
     var expected = new Uri("http://localhost:8092/default/_design/test/_view/test_view?stale=update_after&endkey=\"doc3\"&limit=10&startkey=\"doc2\"");
     const string baseUri = "http://localhost:8092";
     var query = new ViewQuery("default", baseUri).
         From("test", "test_view").
         StartKey("doc2").
         EndKey("doc3").
         Stale(StaleState.UpdateAfter).
         Limit(10);
     var uri = query.RawUri();
     Assert.AreEqual(expected, uri);
 }
コード例 #18
0
        public void Test_ExecuteAsync()
        {
            //arrange
            var query = new ViewQuery().
                From("docs", "all_docs").
                Bucket("default").
                BaseUri(_baseUri);

            var client = GetViewClient("travel-sample");

            int n = 10000;
            var options = new ParallelOptions { MaxDegreeOfParallelism = 4};

            //act - needs to be refactored
            Parallel.For(0, n, options, async i =>
            {
                var result = await client.ExecuteAsync<dynamic>(query).ContinueOnAnyContext();
                Console.WriteLine("{0} {1} {2}", i, result.Success, result.Message);
            });
        }
コード例 #19
0
        public void When_Query_Is_Valid_ViewQuery_Succeeds()
        {
            var bucket = new Mock<IBucket>();
            bucket.Setup(x => x.Query<Beer>(It.IsAny<IViewQuery>()))
                .Returns(() => new FakeViewResult<Beer>
                {
                    Success = true,
                    Rows = new List<ViewRow<Beer>>
                    {
                        new ViewRow<Beer> {Id = "beer1", Key = "beer1", Value = new Beer()},
                        new ViewRow<Beer> {Id = "beer1", Key = "beer1", Value = new Beer()}
                    }
                });

            var dao = new DataAccessObject<Beer>(bucket.Object);
            var query = new ViewQuery()
                .Bucket("beer-sample")
                .DesignDoc("beer")
                .View("brewery_beers");

            var result = dao.Select(query);
            Assert.AreEqual(2, result.Count());
        }
コード例 #20
0
        public void When_View_Is_Called_With_Invalid_Parameters_Error_Is_Returned()
        {
            //arrange
            var query = new ViewQuery().
                From("beer", "brewery_beers").
                Bucket("beer-sample").
                Group(true).
                BaseUri(_baseUri);

            var client = GetViewClient("beer-sample");

            //act
            var result = client.Execute<dynamic>(query);

            //assert
            Assert.AreEqual("query_parse_error", result.Error);
            Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode);
            Assert.IsFalse(result.Success);
        }
コード例 #21
0
        public void When_Url_Is_Invalid_Exception_Is_Returned_2()
        {
            //arrange
            var query = new ViewQuery().
                From("beer", "brewery_beers").
                Bucket("beer-sample").
                BaseUri(new Uri("http://192.168.62.200:8092/"));

            var client = GetViewClient("beer-sample", 5000);

            //act
            var result = client.Execute<dynamic>(query);

            //assert
            Assert.IsNotNull(result.Rows);
            Assert.IsFalse(result.Success);
            Assert.AreEqual(HttpStatusCode.ServiceUnavailable, result.StatusCode);
            Assert.IsNotNull(result.Exception);
        }
コード例 #22
0
        public void When_Query_Is_Succesful_Rows_Are_Returned()
        {
            //arrange
            var query = new ViewQuery().
                From("beer", "brewery_beers").
                Bucket("beer-sample").
                Limit(10).
                BaseUri(_baseUri);

            var client = GetViewClient("beer-sample", 5000);

            //act
            var result = client.Execute<dynamic>(query);

            //assert
            Assert.IsNotNull(result.Rows);
            foreach (var viewRow in result.Rows)
            {
                Assert.IsNotNull(viewRow.Id);
            }
            Assert.AreEqual(HttpStatusCode.OK, result.StatusCode);
        }
コード例 #23
0
        public void When_View_Is_Not_Found_404_Is_Returned()
        {
            //arrange
            var query = new ViewQuery().
                From("beer", "view_that_does_not_exist").
                Bucket("beer-sample").
                BaseUri(_baseUri);

            var client = GetViewClient("beer-sample");

            //act
            var result = client.Execute<dynamic>(query);

            //assert
            Assert.IsNotNull(result.Message);
            Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode);
            Assert.IsFalse(result.Success);
        }
コード例 #24
0
        public void Test_ExecuteAsync()
        {
            var query = new ViewQuery().
                From("docs", "all_docs").
                Bucket("default");

            var client = new ViewClient(new HttpClient(),
                new JsonDataMapper(new ClientConfiguration()),
                new BucketConfig { Name = "beer-sample" },
                new ClientConfiguration());

            int n = 10000;
            var options = new ParallelOptions { MaxDegreeOfParallelism = 4};

            Parallel.For(0, n, options, async i =>
            {
                var result = await client.ExecuteAsync<dynamic>(query);
                Console.WriteLine("{0} {1} {2}", i, result.Success, result.Message);
            });
        }
コード例 #25
0
        public void When_Url_Is_Invalid_WebException_Is_Returned_2()
        {
            var query = new ViewQuery().
                From("beer", "brewery_beers").
                Bucket("beer-sample").
                BaseUri("http://192.168.62.200:8092/");

            var client = new ViewClient(new HttpClient(),
                new JsonDataMapper(new ClientConfiguration()),
                new BucketConfig { Name = "beer-sample" },
                new ClientConfiguration{ViewRequestTimeout = 5000});

            var result = client.Execute<dynamic>(query);
            Assert.IsNotNull(result.Rows);
            Assert.IsFalse(result.Success);
            Assert.AreEqual(HttpStatusCode.ServiceUnavailable, result.StatusCode);
            Assert.AreEqual(typeof(WebException), result.Exception.GetType());
        }
コード例 #26
0
        public void When_View_Is_Called_With_Invalid_Parameters_Error_Is_Returned()
        {
            var query = new ViewQuery().
                From("beer", "brewery_beers").
                Bucket("beer-sample").
                Group(true);

            var client = new ViewClient(new HttpClient(),
                new JsonDataMapper(new ClientConfiguration()),
                new BucketConfig { Name = "beer-sample" },
                new ClientConfiguration());

            var result = client.Execute<dynamic>(query);

            Assert.AreEqual("query_parse_error", result.Error);
            Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode);
            Assert.IsFalse(result.Success);

            Console.WriteLine(result.Message);
        }
コード例 #27
0
        public void Test_View_Query_Lots()
        {
            using (var bucket = _cluster.OpenBucket("beer-sample"))
            {
                var query = new ViewQuery().
                    Bucket("beer-sample").
                    From("beer", "brewery_beers");

                var result = bucket.Query<dynamic>(query);
                for (var i = 0; i < 10; i++)
                {
                    using (new OperationTimer())
                    {
                        Assert.Greater(result.TotalRows, 0);
                    }
                }
            }
        }
コード例 #28
0
        public void When_View_Does_Not_Exist_Return_Failure()
        {
            using (var bucket = _cluster.OpenBucket("beer-sample"))
            {
                var query = new ViewQuery().
                    From("beer-sample2", "beer").//does not exist
                    Bucket("beer-sample").
                    Limit(10);

                Console.WriteLine(query.RawUri());
                var result = bucket.Query<dynamic>(query);
                Assert.IsFalse(result.Success);
                Assert.AreEqual("not_found", result.Error);
                Assert.AreEqual(result.TotalRows, 0);
            }
        }
コード例 #29
0
        public void When_Query_Is_Not_Valid_ViewQuery_Throws_ViewRequestException()
        {
            var bucket = new Mock<IBucket>();
            bucket.Setup(x => x.Query<Beer>(It.IsAny<IViewQuery>()))
                .Returns(() => new FakeViewResult<Beer>
                {
                    Success = false,
                    Rows = new List<ViewRow<Beer>>(),
                    StatusCode = HttpStatusCode.InternalServerError,
                    Error = "View was not found",
                    Message = "View was not found"
                });

            var dao = new DataAccessObject<Beer>(bucket.Object);
            var query = new ViewQuery()
                .Bucket("beer-sample")
                .DesignDoc("beer")
                .View("brewery-beers");

           var exception = Assert.Throws<ViewRequestException>(()=> dao.Select(query));
           Assert.AreEqual(HttpStatusCode.InternalServerError, exception.StatusCode);
           Assert.AreEqual("View was not found", exception.Message);
        }
コード例 #30
0
        public void Test_View_Query2()
        {
            using (var bucket = _cluster.OpenBucket("default"))
            {
                var query = new ViewQuery().
                    From("empty", "empty_view").
                    Limit(10);

                Console.WriteLine(query.RawUri());
                var result = bucket.Query<dynamic>(query);
                Assert.AreEqual(result.TotalRows, 0);
            }
        }