parent
20bb576fb6
commit
1b2a94b030
|
@ -0,0 +1,4 @@
|
||||||
|
Significance: patch
|
||||||
|
Type: add
|
||||||
|
|
||||||
|
Add playwright api-core-tests for reports crud operations
|
|
@ -2,9 +2,6 @@ const {
|
||||||
test,
|
test,
|
||||||
expect
|
expect
|
||||||
} = require('@playwright/test');
|
} = require('@playwright/test');
|
||||||
const {
|
|
||||||
refund
|
|
||||||
} = require('../../data');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for the WooCommerce Refunds API.
|
* Tests for the WooCommerce Refunds API.
|
||||||
|
|
|
@ -0,0 +1,407 @@
|
||||||
|
const {
|
||||||
|
test,
|
||||||
|
expect
|
||||||
|
} = require('@playwright/test');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for the WooCommerce Refunds API.
|
||||||
|
*
|
||||||
|
* @group api
|
||||||
|
* @group reports
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
test.describe('Reports API tests', () => {
|
||||||
|
|
||||||
|
test('can view all reports', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the reports
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "sales",
|
||||||
|
"description": "List of sales reports.",
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('can view sales reports', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the sales reports
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports/sales');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
const today = new Date();
|
||||||
|
const dd = String(today.getDate()).padStart(2, '0');
|
||||||
|
const mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
|
||||||
|
const yyyy = today.getFullYear();
|
||||||
|
const dateString = yyyy + '-' + mm + '-' + dd;
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"total_sales": expect.any(String),
|
||||||
|
"net_sales": expect.any(String),
|
||||||
|
"average_sales": expect.any(String),
|
||||||
|
"total_orders": expect.any(Number),
|
||||||
|
"total_items": expect.any(Number),
|
||||||
|
"total_tax": expect.any(String),
|
||||||
|
"total_shipping": expect.any(String),
|
||||||
|
"total_refunds": expect.any(Number),
|
||||||
|
"total_discount": expect.any(String),
|
||||||
|
"totals_grouped_by": "day",
|
||||||
|
"totals": expect.objectContaining({
|
||||||
|
[dateString]: {
|
||||||
|
"sales": expect.any(String),
|
||||||
|
"orders": expect.any(Number),
|
||||||
|
"items": expect.any(Number),
|
||||||
|
"tax": expect.any(String),
|
||||||
|
"shipping": expect.any(String),
|
||||||
|
"discount": expect.any(String),
|
||||||
|
"customers": expect.any(Number)
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
"total_customers": expect.any(Number),
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('can view top sellers reports', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the top sellers
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports/top_sellers');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('can view coupons totals', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the coupons totals
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports/coupons/totals');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "percent",
|
||||||
|
"name": "Percentage discount",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "fixed_cart",
|
||||||
|
"name": "Fixed cart discount",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "fixed_product",
|
||||||
|
"name": "Fixed product discount",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('can view customers totals', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the customers totals
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports/customers/totals');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "paying",
|
||||||
|
"name": "Paying customer",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "non_paying",
|
||||||
|
"name": "Non-paying customer",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('can view orders totals', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the orders totals
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports/orders/totals');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "pending",
|
||||||
|
"name": "Pending payment",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "processing",
|
||||||
|
"name": "Processing",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "on-hold",
|
||||||
|
"name": "On hold",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "completed",
|
||||||
|
"name": "Completed",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "cancelled",
|
||||||
|
"name": "Cancelled",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "refunded",
|
||||||
|
"name": "Refunded",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "failed",
|
||||||
|
"name": "Failed",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "checkout-draft",
|
||||||
|
"name": "Draft",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('can view products totals', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the products totals
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports/products/totals');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "external",
|
||||||
|
"name": "External/Affiliate product",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "grouped",
|
||||||
|
"name": "Grouped product",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "simple",
|
||||||
|
"name": "Simple product",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "variable",
|
||||||
|
"name": "Variable product",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('can view reviews totals', async ({
|
||||||
|
request
|
||||||
|
}) => {
|
||||||
|
// call API to retrieve the reviews totals
|
||||||
|
const response = await request.get('/wp-json/wc/v3/reports/reviews/totals');
|
||||||
|
const responseJSON = await response.json();
|
||||||
|
expect(response.status()).toEqual(200);
|
||||||
|
expect(Array.isArray(responseJSON)).toBe(true);
|
||||||
|
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "rated_1_out_of_5",
|
||||||
|
"name": "Rated 1 out of 5",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "rated_2_out_of_5",
|
||||||
|
"name": "Rated 2 out of 5",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "rated_3_out_of_5",
|
||||||
|
"name": "Rated 3 out of 5",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "rated_4_out_of_5",
|
||||||
|
"name": "Rated 4 out of 5",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
expect(responseJSON).toEqual(
|
||||||
|
expect.arrayContaining([
|
||||||
|
expect.objectContaining({
|
||||||
|
"slug": "rated_5_out_of_5",
|
||||||
|
"name": "Rated 5 out of 5",
|
||||||
|
"total": expect.any(Number)
|
||||||
|
})
|
||||||
|
]));
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue