コード例 #1
0
        public void GetProducts()
        {
            GetProductsCall api = new GetProductsCall(this.apiContext);
            //
            ProductSearchType prodSearchType = new ProductSearchType();
            prodSearchType.ProductID = "556677";
            prodSearchType.AttributeSetID = 123;
            prodSearchType.ProductReferenceID = "44462740";
            //
            ProductSortCodeType productSortCodeType = ProductSortCodeType.PopularityAsc;
            //
            AffiliateTrackingDetailsType affTrackingDetailsType = new AffiliateTrackingDetailsType();
            affTrackingDetailsType.TrackingID = "trackId";
            affTrackingDetailsType.AffiliateUserID = "UserId";
            affTrackingDetailsType.TrackingPartnerCode = "PartnerCode";
            //
            api.Site = SiteCodeType.US;

            try
            {
                CharacteristicsSetProductHistogramType products =
                    api.GetProducts(prodSearchType, productSortCodeType, true, false, true, false, affTrackingDetailsType,true);
            }
            catch(ApiException apie)
            {
                Console.WriteLine("ApiException: " + apie.Message);
            }
            catch(SdkException sdke)
            {
                Assert.Fail("SdkException: " + sdke.Message);
            }
        }
コード例 #2
0
        public void GetProductSearchResults()
        {
            this.apiContext.Timeout = 360000;
            GetProductSearchResultsCall api = new GetProductSearchResultsCall(this.apiContext);
            ProductSearchType ps = new ProductSearchType();
            //ps.AttributeSetID = 1785;// Cell phones
            ps.MaxChildrenPerFamily = 20; ps.MaxChildrenPerFamilySpecified = true;
            ps.AvailableItemsOnly = false; ps.AvailableItemsOnlySpecified = true;
            ps.QueryKeywords = "Nokia";
            StringCollection ids = new StringCollection();
            ids.Add("1785");
            ps.CharacteristicSetIDs = ids;
            // Pagination
            PaginationType pt = new PaginationType();
            pt.EntriesPerPage = 50; pt.EntriesPerPageSpecified = true;
            pt.PageNumber = 1; pt.PageNumberSpecified = true;
            ps.Pagination = pt;

            ProductSearchTypeCollection pstc = new ProductSearchTypeCollection();
            pstc.Add(ps);
            // Make API call.
            ProductSearchResultTypeCollection results = api.GetProductSearchResults(pstc);
            Assert.IsNotNull(results);
            Assert.IsTrue(results.Count > 0);
            TestData.ProductSearchResults = results;
            Assert.IsNotNull(TestData.ProductSearchResults);
            Assert.IsTrue(TestData.ProductSearchResults.Count > 0);
        }
コード例 #3
0
 public static ProductSearchTypeModel FromDomain(ProductSearchType domain)
 {
     return(new ProductSearchTypeModel
     {
         SearchTypeDescription = domain.SearchTypeDescription,
         SearchTypeId = domain.SearchTypeId
     });
 }
コード例 #4
0
        public async Task Handle(NewProductAddedIntegrationEvent @event)
        {
            Log.ForContext <NewProductAddedIntegrationEventHandler>().Information("Handle => {@event}", @event);
            var searchRecord = new ProductSearchType
            {
                Name    = @event.Name,
                Details = @event.Details,
                Brand   = @event.Brand
            };
            var result = await _searchService.AddNewRecord(searchRecord);

            Log.ForContext <NewProductAddedIntegrationEventHandler>().Debug("Add new record is {result}", result);
        }
コード例 #5
0
 public void GetProductFamilyMembers()
 {
     Assert.IsNotNull(TestData.ProductSearchResults);
     GetProductFamilyMembersCall api = new GetProductFamilyMembersCall(this.apiContext);
     ProductFamilyTypeCollection fm = TestData.ProductSearchResults[0].AttributeSet[0].ProductFamilies;
     ProductType parent = fm[0].ParentProduct;
     ProductSearchType ps = new ProductSearchType();
     ps.AttributeSetID = parent.CharacteristicsSet.AttributeSetID;
     ps.ProductID = parent.productID;
     api.ProductSearchList = new ProductSearchTypeCollection();
     api.ProductSearchList.Add(ps);
     // Make API call.
     api.Execute();
     ProductSearchResultTypeCollection results = api.ApiResponse.ProductSearchResult;
     Assert.IsNotNull(results);
     Assert.IsTrue(results.Count > 0);
 }
コード例 #6
0
        public IQueryable<Product> GetProductsByCriteria(ProductSearchType searchType, string category, string productName)
        {
            IQueryable<Product> products = null;

            switch (searchType)
            {
                case ProductSearchType.None:
                    products = rep.GetAll();
                    break;
                case ProductSearchType.ByCategory:
                    products = rep.GetAll().Where(cu => cu.Category == category);
                    break;
                case ProductSearchType.ByName:
                    products = rep.GetAll().Where(cu => cu.Name == productName);
                    break;
            }

            return products;
        }
コード例 #7
0
 private IList <ProductDTO> getProducts(ProductSearchType searchType, string name, string category)
 {
     try
     {
         GetProductsRequest request = new GetProductsRequest();
         request.SearchType  = searchType;
         request.ProductName = name;
         request.Category    = category;
         GetProductsResponse response = Service.GetProductsByCriteria(request);
         return(response.Products);
     }
     catch (Exception ex)
     {
         if (ExceptionPolicy.HandleException(ex, "PL Policy"))
         {
             throw;
         }
         return(new List <ProductDTO>());
     }
 }
コード例 #8
0
        /// <summary>
        /// Initializes a new instance from the <see cref="ProductRowViewerViewModel"/> class
        /// </summary>
        public ProductRowViewerListViewModel()
        {
            this.ProductSearchType = ProductSearchType.ID;

            var list = Product.GetAllProducts()?.ConvertAll(
                (product) => ConvertToProductRowViewer(product));

            if (list != null)
            {
                AllItems = new ObservableCollection <BaseRowViewerViewModel>(list);
            }
            else
            {
                AllItems = new ObservableCollection <BaseRowViewerViewModel>();
            }

            Items = new ObservableCollection <BaseRowViewerViewModel>();

            Fill_List();
        }
コード例 #9
0
        public IQueryable <Product> GetProductsByCriteria(ProductSearchType searchType, string category, string productName)
        {
            IQueryable <Product> products = null;

            switch (searchType)
            {
            case ProductSearchType.None:
                products = rep.GetAll();
                break;

            case ProductSearchType.ByCategory:
                products = rep.GetAll().Where(cu => cu.Category == category);
                break;

            case ProductSearchType.ByName:
                products = rep.GetAll().Where(cu => cu.Name == productName);
                break;
            }

            return(products);
        }
コード例 #10
0
ファイル: T_010_AddItemLibrary.cs プロジェクト: fudder/cs493
        public void AddItemFull3()
        {
            bool isSucess,isProductSearchPageAvailable;
            bool existing=false,isbnExisting=false;
            string message;
            Int32Collection attributes=new Int32Collection();
            CategoryTypeCollection categories=null;
            CharacteristicsSetTypeCollection characteristics=null;

            ItemType item= ItemHelper.BuildItem();
            //check whether the category is catalog enabled.
            isSucess=CategoryHelper.IsCatagoryEnabled(this.apiContext,PSPACATEGORYID.ToString(),CategoryEnableCodeType.ProductSearchPageAvailable,out isProductSearchPageAvailable,out message);
            Assert.IsTrue(isSucess,message);
            Assert.IsTrue(isProductSearchPageAvailable,message);
            isSucess=CategoryHelper.IsCatagoryEnabled(this.apiContext,PSPACATEGORYID.ToString(),CategoryEnableCodeType.CatalogEnabled,out isProductSearchPageAvailable,out message);
            Assert.IsTrue(isSucess,message);
            Assert.IsTrue(isProductSearchPageAvailable,message);
            //modify item information approporiately.
            item.PrimaryCategory.CategoryID=PSPACATEGORYID.ToString();
            item.Description = "check whether the item can be added by GetProductSearchPage method way,This is a test item created by eBay SDK SanityTest.";

            //get characters information using GetCategory2CSCall
            GetCategory2CSCall csCall=new GetCategory2CSCall(this.apiContext);

            DetailLevelCodeTypeCollection levels=new DetailLevelCodeTypeCollection();
            DetailLevelCodeType level=new DetailLevelCodeType();
            level=DetailLevelCodeType.ReturnAll;
            levels.Add(level);
            csCall.DetailLevelList=levels;
            csCall.CategoryID=PSPACATEGORYID.ToString();
            csCall.Execute();
            //check whether the call is success.
            Assert.IsTrue(csCall.AbstractResponse.Ack==AckCodeType.Success || csCall.AbstractResponse.Ack==AckCodeType.Warning,"do not success!");
            Assert.IsNotNull(csCall.ApiResponse.MappedCategoryArray);
            Assert.Greater(csCall.ApiResponse.MappedCategoryArray.Count,0);
            categories=csCall.ApiResponse.MappedCategoryArray;

            foreach(CategoryType category in categories)
            {
                if(string.Compare(category.CategoryID,PSPACATEGORYID)==0)
                {
                    characteristics=category.CharacteristicsSets;
                    existing= true;
                    break;
                }
            }

            //confirm that the category was in the mapping category.
            Assert.IsTrue(existing,PSPACATEGORYID+" do not exist in the mapping category");
            Assert.IsNotNull(characteristics);
            Assert.Greater(characteristics.Count,0);

            foreach(CharacteristicsSetType characteristic in characteristics)
            {
                attributes.Add(characteristic.AttributeSetID);
            }

            //confirm that there is real attributeset in the mapping category.
            Assert.AreEqual(attributes.Count,1);//there is only one AttributeSetID in the category 279.

            GetProductSearchPageCall searchPageCall=new GetProductSearchPageCall(this.apiContext);
            searchPageCall.AttributeSetIDList=attributes;
            DetailLevelCodeTypeCollection levels2=new DetailLevelCodeTypeCollection();
            DetailLevelCodeType level2=new DetailLevelCodeType();
            level2=DetailLevelCodeType.ReturnAll;
            levels2.Add(level2);
            searchPageCall.DetailLevelList=levels2;
            searchPageCall.Execute();
            //check whether the call is success.
            Assert.IsTrue(searchPageCall.ApiResponse.Ack==AckCodeType.Success || searchPageCall.ApiResponse.Ack==AckCodeType.Warning,"do not success!");
            Assert.AreEqual(searchPageCall.ApiResponse.ProductSearchPage.Count,1);//for the input attributeset id is only one.
            Assert.IsNotNull(searchPageCall.ApiResponse.ProductSearchPage[0].SearchCharacteristicsSet);//for the input attributeset id is only one.
            Assert.IsNotNull(searchPageCall.ApiResponse.ProductSearchPage[0].SearchCharacteristicsSet.Characteristics);
            Assert.Greater(searchPageCall.ApiResponse.ProductSearchPage[0].SearchCharacteristicsSet.Characteristics.Count,0);

            //check the isbn-13 attribute id exists and its value has not been changed.
            CharacteristicTypeCollection chs = searchPageCall.ApiResponse.ProductSearchPage[0].SearchCharacteristicsSet.Characteristics;
            foreach(CharacteristicType charactersic in chs)
            {
                //check whether the isbn attribute can be used
                if(charactersic.AttributeID==ISBN13ATTRIBUTEID && (string.Compare(charactersic.Label.Name,"ISBN-13",true)==0))
                {
                    isbnExisting=true;
                    break;
                }
            }

            Assert.IsTrue(isbnExisting,"the isbn attribute id is not existing or has been changed!");
            //using GetProductSearchResults call to find products.
            ProductSearchType productSearch=new ProductSearchType();
            productSearch.AttributeSetID=attributes[0];
            SearchAttributesTypeCollection searchAttributes=new SearchAttributesTypeCollection();
            SearchAttributesType searchAttribute=new SearchAttributesType();
            searchAttribute.AttributeID=ISBN13ATTRIBUTEID;
            ValTypeCollection vals=new ValTypeCollection();
            ValType val=new ValType();
            val.ValueLiteral=ISBN;
            vals.Add(val);
            searchAttribute.ValueList=vals;
            searchAttributes.Add(searchAttribute);
            productSearch.SearchAttributes=searchAttributes;
            GetProductSearchResultsCall searchResultsCall=new GetProductSearchResultsCall(this.apiContext);
            searchResultsCall.ProductSearchList=new ProductSearchTypeCollection(new ProductSearchType[]{productSearch});
            searchResultsCall.Execute();
            //check whether the call is success.
            Assert.IsTrue(searchResultsCall.ApiResponse.Ack==AckCodeType.Success || searchResultsCall.ApiResponse.Ack==AckCodeType.Warning,"do not success!");
            Assert.Greater(searchResultsCall.ApiResponse.ProductSearchResult.Count,0);
            Assert.AreEqual(int.Parse(searchResultsCall.ApiResponse.ProductSearchResult[0].NumProducts),1);
            Assert.Greater(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet.Count,0);
            Assert.Greater(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet[0].ProductFamilies.Count,0);
            Assert.IsFalse(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet[0].ProductFamilies[0].hasMoreChildren);
            Assert.IsNotNull(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet[0].ProductFamilies[0].ParentProduct.productID);

            string productID=searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet[0].ProductFamilies[0].ParentProduct.productID;
            ProductListingDetailsType plist=new ProductListingDetailsType();
            plist.ProductID=productID;
            plist.IncludePrefilledItemInformation=true;
            plist.IncludeStockPhotoURL=true;
            item.ProductListingDetails=plist;

            FeeTypeCollection fees;

            VerifyAddItemCall vi = new VerifyAddItemCall(apiContext);
            fees = vi.VerifyAddItem(item);
            Assert.IsNotNull(fees);

            AddItemCall addItemCall = new AddItemCall(apiContext);;
            fees = addItemCall.AddItem(item);
            //check whether the call is success.
            Assert.IsTrue(addItemCall.AbstractResponse.Ack==AckCodeType.Success || addItemCall.AbstractResponse.Ack==AckCodeType.Warning,"do not success!");
            Assert.IsTrue(item.ItemID!=string.Empty);
            Assert.IsNotNull(fees);

            //caution check
            ItemType itemOut;
            isSucess=ItemHelper.GetItem(item,this.apiContext,out message, out itemOut);
            Assert.IsTrue(isSucess,message);
            Assert.IsNotNull(itemOut,"Item is null");
            Assert.Greater(itemOut.AttributeSetArray.Count,0);
            Assert.Greater(itemOut.AttributeSetArray[0].Attribute.Count,0);
            Assert.Greater(itemOut.AttributeSetArray[0].Attribute[0].Value.Count,0);
        }
コード例 #11
0
        public async Task <ActionResult> Post([FromBody] ProductSearchType value)
        {
            var result = await _searchService.AddNewRecord(value);

            return(Ok(result));
        }
コード例 #12
0
        public ICollection <Product> Search(ProductSearchType SearchType, string value)
        {
            List <Product> List    = new List <Product>();
            var            contaxt = new DataLayer.InventoryDBContext();

            switch (SearchType)
            {
            case ProductSearchType.All:
            {
                //search by title
                var _product = contaxt.Products.Where(p => p.Title.Contains(value)).ToList();
                List.AddRange(_product);

                //search by id
                int id = 0;
                if (int.TryParse(value, out id))
                {
                    _product = contaxt.Products.Where(p => p.ProductId == id).ToList();
                    List.AddRange(_product);
                }
                //search by code
                int code = 0;
                if (int.TryParse(value, out code))
                {
                    _product = contaxt.Products.Where(p => p.Code == code).ToList();
                    List.AddRange(_product);
                }
                return(List);
            }

            case ProductSearchType.CorporationId:
            {
                //search by id
                int id = 0;
                if (int.TryParse(value, out id))
                {
                    var _product = contaxt.Products.Where(p => p.ProductId == id).ToList();
                    List.AddRange(_product);
                }
                return(List);
            }

            case ProductSearchType.Title:
            {
                //search by title
                var _product = contaxt.Products.Where(p => p.Title.Contains(value)).ToList();
                List.AddRange(_product);
                return(List);
            }

            case ProductSearchType.code:
            {
                int code = 0;
                if (int.TryParse(value, out code))
                {
                    var _product = contaxt.Products.Where(p => p.Code == code).ToList();
                    List.AddRange(_product);
                }
                return(List);
            }

            default:
            {
                return(null);
            }
            }
        }
コード例 #13
0
ファイル: GetProductsCall.cs プロジェクト: fudder/cs493
        /// <summary>
        /// Searches for stock information and reviews for certain kinds of products,
        /// such as a particular digital camera model.
        /// <p>
        /// GetProducts is designed to be useful to applications that support
        /// shopping comparison, product reviews, or basic supply and
        /// demand data.
        /// </p>
        /// <p>
        /// GetProducts also supports tracking so that members of the
        /// eBay Affiliates Program can get commissions for driving traffic to eBay.
        /// </p>
        /// <p class="tablenote"><b>Note:</b>
        /// For selling use cases, use GetProductSearchResults and
        /// GetProductSellingPages instead.
        /// </p>
        /// <p>
        /// To use this call, you typically pass in keywords, and GetProducts finds
        /// products with matching words in the product title, description, and/or
        /// Item Specifics.
        /// <p>
        /// For each product of interest, you call GetProducts again to retrieve
        /// additional details that would be useful to buyers:
        /// </p>
        /// <ul>
        /// <li>Top reviews of the product by eBay members,
        /// including part of the review text, plus links to the full text on the
        /// eBay Web site.</li>
        /// <li>Relevant buying guides (shopping advice) written by
        /// eBay members and by eBay staff, including part of the guide text,
        /// plus links to the full text
        /// on the eBay Web site.</li>
        /// <li>Up to 200 matching items on eBay (if any). (To find more matching
        /// items, use GetSearchResults.)</li>
        /// </ul>
        /// <p>
        /// <span class="tablenote"><b>Note:</b>
        /// As catalog queries can take longer than item queries,
        /// GetProducts can be slower than GetSearchResults.
        /// Also, due to the way product data is cached, you may get a faster response
        /// when you run the same query a second time.</span>
        /// </summary>
        /// 
        /// <param name="ProductSearch">
        /// Contains the fields that form the search query. You can query
        /// against keywords, an eBay product reference ID (not to be confused
        /// with an eBay product ID), or external product ID (like an ISBN).
        /// </param>
        ///
        /// <param name="ProductSort">
        /// Sorts the list of products returned. This is mostly only useful
        /// with QueryKeywords. (When you use ExternalProductID or
        /// ProductReferenceID, eBay usually only returns one product.)
        /// </param>
        ///
        /// <param name="IncludeItemArray">
        /// If true, the response includes items (if any) that match the
        /// product specified in ExternalProductID or ProductReferenceID.
        /// Not applicable with QueryKeywords.
        /// </param>
        ///
        /// <param name="IncludeReviewDetails">
        /// If true, the response includes up to 20 reviews (if any)
        /// for the product specified in ExternalProductID or
        /// ProductReferenceID.
        /// The reviews are sorted by most helpful (most votes) first.
        /// When you include review details, please note that
        /// response times may be longer than 60 seconds.
        /// Not applicable with QueryKeywords.
        /// </param>
        ///
        /// <param name="IncludeBuyingGuideDetails">
        /// If true, the response includes up to 5 buying guides (if any)
        /// for the product specified in ExternalProductID or
        /// ProductReferenceID.
        /// Not applicable with QueryKeywords.
        /// </param>
        ///
        /// <param name="IncludeHistogram">
        /// If true, the response includes a histogram that lists the
        /// number of matching products found and the domains in which
        /// they were found. (A domain is like a high-level category.)
        /// Including the histogram can affect the call's performance.
        /// You may see significantly slower response times when many
        /// matching products are found.
        /// </param>
        ///
        /// <param name="AffiliateTrackingDetails">
        /// See the
        /// <a href="https://www.ebaypartnernetwork.com/" target="_blank">eBay Partner Network</a>.
        /// eBay uses the values in AffiliateTrackingDetails to build a View Item URL
        /// string, in order to include that string in the response.
        /// When a user clicks through the URL to eBay,
        /// you may get a commission (see the URL above).
        /// Only applicable when IncludeItemArray is specified
        /// (because the View Item URL is only returned in item information,
        /// not in product information).
        /// </param>
        ///
        /// <param name="HideDuplicateItems">
        /// Specifies whether or not to remove duplicate items from search results.
        /// When set to true, and there are duplicate items for an item in the
        /// search results, the subsequent duplicates will not appear in the
        /// results.
        /// Item listings are considered duplicates in the following
        /// conditions: 
        /// <ul>
        /// <li>Items are listed by the same seller</li>
        /// <li>Items have exactly the same item title</li>
        /// <li>Items have similar listing formats</li>
        /// <ul>
        /// <li>Auctions: Auction Items, Auction BIN items, Multi-Quantity
        /// Auctions, and Multi-Quantity Auctions BIN items</li>
        /// <li>Fixed Price: Fixed Price, Multi-quantity Fixed Price, Fixed
        /// Price with Best Offer, and Store Inventory Format items</li>
        /// <li>Classified Ads</li>
        /// </ul>
        /// </ul>
        /// For Auctions, items must also have the same price and number of bids to
        /// be considered duplicates.
        /// 
        /// Filtering of duplicate item listings is not supported on all sites.
        /// For GetProducts, this filter only works when IncludeItemArray is set to
        /// true.
        /// </param>
        ///
        public CharacteristicsSetProductHistogramType GetProducts(ProductSearchType ProductSearch, ProductSortCodeType ProductSort, bool IncludeItemArray, bool IncludeReviewDetails, bool IncludeBuyingGuideDetails, bool IncludeHistogram, AffiliateTrackingDetailsType AffiliateTrackingDetails, bool HideDuplicateItems)
        {
            this.ProductSearch = ProductSearch;
            this.ProductSort = ProductSort;
            this.IncludeItemArray = IncludeItemArray;
            this.IncludeReviewDetails = IncludeReviewDetails;
            this.IncludeBuyingGuideDetails = IncludeBuyingGuideDetails;
            this.IncludeHistogram = IncludeHistogram;
            this.AffiliateTrackingDetails = AffiliateTrackingDetails;
            this.HideDuplicateItems = HideDuplicateItems;

            Execute();
            return ApiResponse.CharacteristicsSetProductHistogram;
        }
コード例 #14
0
 private IList<ProductDTO> getProducts(ProductSearchType searchType, string name, string category)
 {
     try
     {
         GetProductsRequest request = new GetProductsRequest();
         request.SearchType = searchType;
         request.ProductName = name;
         request.Category = category;
         GetProductsResponse response = Service.GetProductsByCriteria(request);
         return response.Products;
     }
     catch (Exception ex)
     {
         if (ExceptionPolicy.HandleException(ex, "PL Policy")) throw;
         return new List<ProductDTO>();
     }
 }
コード例 #15
0
        public void GetProductSearchResultsFull()
        {
            bool isbnExisting=false;
            Int32Collection attributes=new Int32Collection();

            Assert.IsNotNull(TestData.ProductSearchPages2);
            Assert.Greater(TestData.ProductSearchPages2.Count,0);
            Assert.Greater(TestData.ProductSearchPages2[0].SearchCharacteristicsSet.Characteristics.Count,0);

            //check whether the call is success.
            Assert.AreEqual(string.Compare(TestData.Category2CS2.CategoryID,PSPACATEGORYID,true),0);
            CharacteristicsSetTypeCollection characteristics = TestData.Category2CS2.CharacteristicsSets;

            //confirm that the category was in the mapping category.
            Assert.IsNotNull(characteristics);
            Assert.Greater(characteristics.Count,0);

            foreach(CharacteristicsSetType characteristic in characteristics)
            {
                attributes.Add(characteristic.AttributeSetID);
            }

            //check the isbn-13 attribute id exists and its value has not been changed.
            CharacteristicTypeCollection chs = TestData.ProductSearchPages2[0].SearchCharacteristicsSet.Characteristics;
            foreach(CharacteristicType charactersic in chs)
            {
                //check whether the isbn attribute can be used
                if(charactersic.AttributeID==ISBN13ATTRIBUTEID && (string.Compare(charactersic.Label.Name,"ISBN-13",true)==0))
                {
                    isbnExisting=true;
                    break;
                }
            }

            Assert.IsTrue(isbnExisting,"the isbn attribute id is not existing or has been changed!");
            //using GetProductSearchResults call to find products.
            ProductSearchType productSearch=new ProductSearchType();
            productSearch.AttributeSetID=attributes[0];
            SearchAttributesTypeCollection searchAttributes=new SearchAttributesTypeCollection();
            SearchAttributesType searchAttribute=new SearchAttributesType();
            searchAttribute.AttributeID=ISBN13ATTRIBUTEID;
            ValTypeCollection vals=new ValTypeCollection();
            ValType val=new ValType();
            val.ValueLiteral=ISBN;
            vals.Add(val);
            searchAttribute.ValueList=vals;
            searchAttributes.Add(searchAttribute);
            productSearch.SearchAttributes=searchAttributes;
            GetProductSearchResultsCall searchResultsCall=new GetProductSearchResultsCall(this.apiContext);
            searchResultsCall.ProductSearchList=new ProductSearchTypeCollection(new ProductSearchType[]{productSearch});
            searchResultsCall.Execute();
            //check whether the call is success.
            Assert.IsTrue(searchResultsCall.ApiResponse.Ack==AckCodeType.Success || searchResultsCall.ApiResponse.Ack==AckCodeType.Warning,"do not success!");
            Assert.Greater(searchResultsCall.ApiResponse.ProductSearchResult.Count,0);
            Assert.AreEqual(int.Parse(searchResultsCall.ApiResponse.ProductSearchResult[0].NumProducts),1);
            Assert.Greater(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet.Count,0);
            Assert.Greater(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet[0].ProductFamilies.Count,0);
            Assert.IsFalse(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet[0].ProductFamilies[0].hasMoreChildren);
            Assert.IsNotNull(searchResultsCall.ApiResponse.ProductSearchResult[0].AttributeSet[0].ProductFamilies[0].ParentProduct.productID);
            TestData.ProductSearchResults2 = searchResultsCall.ApiResponse.ProductSearchResult;
        }