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")); }
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)); }
public void Validate_Should_Throw_ASVE_If_No_QueryString_Is_Provided() { //Arrange var builder = new AqlQueryBuilder(); var request = builder.Build(); //Act request.Validate(); }
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(); }
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)); }
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()); }