wb-private-api
Version:
Wildberries Private API
146 lines (125 loc) • 6.86 kB
JavaScript
/* eslint-disable camelcase */
/* eslint-disable no-undef */
const Constants = require("../src/Constants");
const WBPrivateAPI = require("../src/WBPrivateAPI");
const wbapi = new WBPrivateAPI({
destination: Constants.DESTINATIONS.MOSCOW,
});
describe("Проверка поиска рекламодателей", () => {
test("Проверка рекламы по Поиску .getSearchAds()", async () => {
const ads = await wbapi.getSearchAds("Платье");
expect(ads.adverts.length).toBeGreaterThan(0);
expect(ads.prioritySubjects.length).toBeGreaterThan(0);
expect(ads.adverts[0].cpm).toBeGreaterThan(0);
expect(ads.pages.length).toBeGreaterThan(0);
});
});
describe("Проверка поиска товаров WBPrivateAPI.search()", () => {
test('Поиск количества товаров по ключевому запросу "Платье"', async () => {
const totalProducts = await wbapi.searchTotalProducts("Платье");
expect(totalProducts).toBeGreaterThan(0);
});
test('Поиск количества товаров (редких) по ключевому запросу "тату чебурашка"', async () => {
const totalProducts = await wbapi.searchTotalProducts("тату чебурашка");
expect(totalProducts).toBeGreaterThan(0);
});
test('Поиск данных из фильтров по ключевому запросу "конструктор детский"', async () => {
const result = await wbapi.searchCustomFilters("конструктор детский", [
"fbrand",
"fsupplier",
]);
const [brands, suppliers] = result.filters;
expect(brands.items.length).toBeGreaterThan(0);
expect(suppliers.items.length).toBeGreaterThan(0);
});
test('Проверка получения Query Params по ключевому запросу "Платье"', async () => {
const metadata = await wbapi.getQueryMetadata("Платье");
const { catalog_type, catalog_value } = metadata;
expect(typeof metadata === "object").toBeTruthy();
expect(catalog_type).toBe("preset");
expect(catalog_value).toBe("preset=500060403");
});
test("Проверка метода getQueryMetadata на запросы разных страниц", async () => {
const pageOne = await wbapi.getQueryMetadata("Платье", 3, true, 1);
const pageTwo = await wbapi.getQueryMetadata("Платье", 3, true, 2);
expect(pageOne.products[0].id !== pageTwo.products[0].id).toBeTruthy();
});
test('Сбор 3 страниц товаров по ключевому запросу "Платье"', async () => {
const catalog = await wbapi.search("платье", 3, 3);
expect(catalog.products.length).toBe(300);
});
test('Проверка фильтрации товаров по бренду и ключевому запросу "торшер"', async () => {
const filters = [{ type: "fbrand", value: 11399 }];
const catalog = await wbapi.search("торшер", 1, 0, filters);
expect(catalog.products.length).toBeGreaterThan(0);
expect(
catalog.products.every((p) => p.brandId === filters[0].value)
).toBeTruthy();
});
test('Проверка фильтрации товаров по поставщику и ключевому запросу "торшер"', async () => {
const filters = [{ type: "fsupplier", value: 36934 }];
const catalog = await wbapi.search("резинки зеленые для волос из ткани", 1, 0, filters);
expect(catalog.products.length).toBeGreaterThan(0);
expect(
catalog.products.every((p) => p.supplierId === filters[0].value)
).toBeTruthy();
});
test('Проверка фильтрации товаров по бренду и по поставщику с ключевым запросом "торшер"', async () => {
const filters = [
{ type: "fbrand", value: 310484464 },
{ type: "fsupplier", value: 1179677 },
];
const catalog = await wbapi.search("торшер", 1, 0, filters);
expect(catalog.products.length).toBeGreaterThan(0);
expect(
catalog.products.every((p) => p.brandId === filters[0].value) &&
catalog.products.every((p) => p.supplierId === filters[1].value)
).toBeTruthy();
});
test("Проверка совместимости с axios-retry", async () => {
const catalog = await wbapi.search("Платье", 1, 3);
expect(catalog.products.length).toBe(100);
});
test("Проверка метода .getQueryMetadata на прохождение HTTP 429 ошибки", async () => {
const catalogs = await Promise.all([
wbapi.getQueryMetadata("платье", 100, true, 1, 3),
wbapi.getQueryMetadata("платье", 100, true, 2, 3),
wbapi.getQueryMetadata("платье", 100, true, 3, 3),
]);
expect(
catalogs.reduce((acc, current) => {
return (acc += current.products.length);
}, 0)
).toBe(300);
});
test("Проверка аргумента pageCount на понижение кол-ва страниц, если их меньше чем запрошено", async () => {
const pageCount = 100;
const catalog = await wbapi.search("nokia 3310", pageCount);
expect(pageCount).toBeGreaterThan(catalog.pages);
});
test('Проверка метода .keyHint(query) на вывод предположений по ключевому запросу "Платье"', async () => {
const hints = await wbapi.keyHint("Платье");
expect(hints[0].type).toBe("suggest");
});
test("Проверка метода .searchSimilarByNm(productId) на возврат идентификаторов похожиш товаров", async () => {
const similarIds = await wbapi.searchSimilarByNm(60059650);
expect(similarIds.length).toBeGreaterThan(0);
});
test("Проверка метода .getPromos() на возврат текущих промо-акций", async () => {
const promos = await wbapi.getPromos();
expect(promos.length).toBeGreaterThan(0);
});
test("Проверка метода .getListOfProducts() на возврат найденных товаров", async () => {
const products = Array(10)
.fill(15693390)
.map((v, idx) => v + idx);
const list = await wbapi.getListOfProducts(products);
expect(list.length).toBeGreaterThan(0);
});
});
describe("Проверка выдачи данных по продавцу", () => {
test("Проверка метода .getSupplierInfo()", async () => {
const supplier = await wbapi.getSupplierInfo(1136572);
expect(supplier.id).toBe(1136572);
});
});