public void Can_Send_Async_ApiRequests_Via_ApiClient()
        {
            //Arrange
            var builder = new AqlQueryBuilder();

            builder
            .BasePath("/Structures/Classification/JULA Produkter")
            .SearchRequestFilters(Filter.ReturnNoAttributes())
            .QueryType(AqlQueryTypes.Below)
            .ObjectTypeToFind(12)
            .QueryString("#215 = \"169010\"");

            var  manualEvent    = new ManualResetEvent(false);
            bool callbackCalled = false;

            //Act
            XElement result  = null;
            var      request = new BatchRequest(builder.Build());

            _client.SendApiRequestAsync(
                request, data => {
                result         = data;
                callbackCalled = true;
                manualEvent.Set();
            }
                );

            manualEvent.WaitOne();

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(callbackCalled, Is.True);
        }
        public void Can_Supply_Response_Converter_And_Receive_Correct_Response_Type()
        {
            //Arrange
            var aql = new AqlQueryBuilder();

            aql.BasePath("/Structures/Classification/JULA Produkter")
            .QueryType(AqlQueryTypes.Below)
            .ObjectTypeToFind(12)
            .QueryString("#215 = \"169010\"")
            .ConfigureSearchControls()
            .AddRequestFilters(
                Filter.CountLimit(1),
                Filter.ExcludeBin())
            .ReturnAttributes(
                AttributeToReturn.WithName("Artikelnummer"),
                AttributeToReturn.WithName("2_Rubrik"));

            var converter = new ContextResponseConverter();

            //Act
            var request = new BatchRequest(aql.Build());
            var reply   = _client.SendApiRequest(request, converter.Convert);

            //Assert
            Assert.That(reply, Is.Not.Null);
            Assert.That(reply, Is.InstanceOf <IEnumerable <ContextResponse> >());
            Assert.That(reply.Count(), Is.EqualTo(1));
        }
Пример #3
0
        public void Can_Combine_All_Api_Commands()
        {
            //Arrange
            var aqlBuilder = new AqlQueryBuilder();

            //Act
            aqlBuilder.BasePath("/foo/bar")
            .SearchRequestFilters(Filter.ReturnNoAttributes())
            .QueryType(AqlQueryTypes.Below)
            .ObjectTypeToFind(12)
            .QueryString("#215 = \"foo\"")
            .ConfigureSearchControls()
            .AddRequestFilters(
                Filter.ExcludeBin(),
                Filter.ExcludeDocument(),
                Filter.CountLimit(1))
            .ReturnAttributes(AttributeToReturn.WithName("Artikelnummer"))
            .ReturnLanguages(LanguageToReturn.WithLanguageId(10))
            .ConfigureReferenceHandling(
                ReferenceOptions.ResolveAttributes(),
                ReferenceOptions.ResolveSpecialCharacters(),
                ReferenceOptions.UseChannel(3),
                ReferenceOptions.ReturnValuesOnly());

            Console.WriteLine(aqlBuilder.Build().ToAdsml().ToString());
            var request = new BatchRequest(aqlBuilder.Build());

            //Assert
            Assert.DoesNotThrow(() => aqlBuilder.Build());
            Assert.DoesNotThrow(() => request.ToAdsml().ValidateAdsmlDocument("adsml.xsd"));
        }
Пример #4
0
        public void Can_Instantiate_New_AqlQueryBuilder()
        {
            //Act
            var aql = new AqlQueryBuilder();

            //Assert
            Assert.That(aql, Is.Not.Null);
        }
        public void Validate_Should_Throw_ASVE_If_No_QueryString_Is_Provided()
        {
            //Arrange
            var builder = new AqlQueryBuilder();
            var request = builder.Build();

            //Act
            request.Validate();
        }
Пример #6
0
        public void Can_Specify_QueryType()
        {
            //Arrange
            var aql = new AqlQueryBuilder();

            //Act
            aql.QueryType(AqlQueryTypes.Below);

            //Assert
            Assert.That(aql.SelectedAqlQueryType.ToString(), Is.EqualTo("Below"));
        }
Пример #7
0
        public void Can_Specify_ObjectTypeToFind_By_TypeName()
        {
            //Arrange
            var aql = new AqlQueryBuilder();

            //Act
            aql.ObjectTypeToFind("foo");

            //Assert
            Assert.That(aql.ObjectTypeName, Is.EqualTo("foo"));
        }
Пример #8
0
        public void Can_Provide_QueryString()
        {
            //Arrange
            var aql = new AqlQueryBuilder();

            //Act
            aql.QueryString("bar");

            //Assert
            Assert.That(aql.Query, Is.EqualTo("bar"));
        }
Пример #9
0
        public void Can_Specify_Base_Path()
        {
            //Arrange
            var aql = new AqlQueryBuilder();

            //Act
            aql.BasePath("foo");

            //Assert
            Assert.That(aql.Path, Is.EqualTo("foo"));
        }
Пример #10
0
        public void Can_Specify_ObjectTypeToFind_By_TypeId()
        {
            //Arrange
            var aql = new AqlQueryBuilder();

            //Act
            aql.ObjectTypeToFind(10);

            //Assert
            Assert.That(aql.ObjectTypeIds.Count, Is.EqualTo(1));
            Assert.That(aql.ObjectTypeIds.Single(), Is.EqualTo(10));
        }
        public void Validate_Should_Throw_ASVE_If_QueryType_But_No_BasePath_Is_Provided()
        {
            //Arrange
            var builder = new AqlQueryBuilder();

            builder.QueryType(AqlQueryTypes.Below)
            .QueryString("foo");

            var request = builder.Build();

            //Act
            request.Validate();
        }
Пример #12
0
        public void Can_Configure_SearchControls()
        {
            //Arrange
            var aql = new AqlQueryBuilder();

            //Act
            aql.ConfigureSearchControls().AddRequestFilters(Filter.CountLimit(1));

            //Assert
            Assert.That(
                aql.SearchControlBuilder.Build().ToAdsml().ToString(),
                Is.EqualTo(new XElement("SearchControls", new XAttribute("countLimit", "1")).ToString())
                );
        }
        public void Should_Default_ObjectTypeToMatch_To_Any_If_Not_Specified()
        {
            //Arrange
            var builder = new AqlQueryBuilder();

            builder.QueryString("foo");

            //Act
            var requestXml   = builder.Build().ToAdsml();
            var filterString = requestXml.Descendants("Filter").Single().Value;

            //Assert
            Assert.That(filterString.Contains("ANY"));
        }
        public void Should_Not_Throw_Exception_If_Query_Returns_No_Results()
        {
            //Arrange
            AqlQueryBuilder builder = new AqlQueryBuilder();

            builder.BasePath("/Structures/Classification/JULA Produkter")
            .QueryType(AqlQueryTypes.Below)
            .ObjectTypeToFind(12)
            .QueryString("#215 = \"000\"");

            //Act
            var request = new BatchRequest(builder.Build());

            //Assert
            Assert.DoesNotThrow(() => _client.SendApiRequest(request));
        }
Пример #15
0
        public void Can_Build_AqlSearchRequest()
        {
            //Arrange
            var builder = new AqlQueryBuilder();

            //Act
            builder.BasePath("/foo/bar")
            .ObjectTypeToFind("baz")
            .QueryString("foo");

            var aql     = builder.Build();
            var request = new BatchRequest(aql);

            //Assert
            Assert.That(aql, Is.Not.Null);
            Assert.That(aql, Is.InstanceOf <AqlSearchRequest>());

            Assert.DoesNotThrow(() => request.ToAdsml().ValidateAdsmlDocument("adsml.xsd"));
        }
        public void Can_Send_ApiRequests_Via_ApiClient()
        {
            //Arrange
            var builder = new AqlQueryBuilder();

            builder
            .BasePath("/Structures/Classification/JULA Produkter/")
            .SearchRequestFilters(Filter.ReturnNoAttributes())
            .QueryType(AqlQueryTypes.Below)
            .ObjectTypeToFind(12)
            .QueryString("#215 = \"169010\"");

            //Act
            var request = new BatchRequest(builder.Build());
            var result  = _client.SendApiRequest(request);

            //Assert
            Assert.That(result, Is.Not.Null);
            Assert.That(result, Is.InstanceOf <XElement>());
        }
        public void Should_Throw_AdsmlException_If_An_ErrorResponse_Is_Returned()
        {
            //Arrange
            XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
            string     xml = new XElement("BatchResponse",
                                          new XAttribute("version", "5.1.16 build 116 (2010/05/27 14-36)"),
                                          new XAttribute(XNamespace.Xmlns + "xsi", xsi),
                                          new XAttribute(xsi + "noNamespaceSchemaLocation", "adsml.xsd"),
                                          new XElement("ErrorResponse",
                                                       new XAttribute("description", "ERROR_CODE_4013"),
                                                       new XAttribute("id", "4013"),
                                                       new XAttribute("type", "applicationError"),
                                                       new XElement("Message", "Structure type \"Classifiation\" does not exist"))).ToString();

            var mockWebClient = new Mock <IApiWebClient>();

            mockWebClient.Setup(m => m.UploadString(It.IsAny <string>(), It.IsAny <string>())).Returns(xml);

            var client = new ApiClient(mockWebClient.Object, "f", "b", "q");

            var request = new AqlQueryBuilder();

            request.BasePath("/Structures/Classification/JULA Produkter")
            .QueryType(AqlQueryTypes.Below)
            .ObjectTypeToFind(12)
            .QueryString("#215 = \"169010\"")
            .ConfigureSearchControls()
            .AddRequestFilters(
                Filter.CountLimit(1),
                Filter.ExcludeBin())
            .ReturnAttributes(
                AttributeToReturn.WithName("Artikelnummer"),
                AttributeToReturn.WithName("2_Rubrik"));

            //Act
            client.SendApiRequest(request.Build());
        }