mirror of
https://github.com/inventree/InvenTree.git
synced 2026-02-14 02:07:13 +00:00
[bug] Fix table ordering (#11277)
* Additional filtering options for stock list * Fix ordering for stock table * Ordering fix for build order table * Ordering for supplier parts and manufacturer parts * SalesOrderLineItem: Order by IPN * ReturnOrderLineItem table: - Order by part name - Order by part IPN * Update API version to 451 Increment API version to 451 and update changelog. * Add playwright tests for column sorting * Add backend tests for API ordering --------- Co-authored-by: Matthias Mair <code@mjmair.com>
This commit is contained in:
@@ -167,3 +167,16 @@ export const deletePart = async (name: string) => {
|
||||
expect(res.status()).toBe(204);
|
||||
}
|
||||
};
|
||||
|
||||
// Click on the column sorting toggle
|
||||
export const toggleColumnSorting = async (page: Page, columnName: string) => {
|
||||
// Click on the column header to toggle sorting
|
||||
const regex = new RegExp(
|
||||
`^${columnName}\\s*(Not sorted|Sorted ascending|Sorted descending)$`,
|
||||
'i'
|
||||
);
|
||||
|
||||
await page.getByRole('button', { name: regex }).click();
|
||||
await page.waitForTimeout(50);
|
||||
await page.waitForLoadState('networkidle');
|
||||
};
|
||||
|
||||
@@ -104,9 +104,10 @@ test('Spotlight - No Keys', async ({ browser }) => {
|
||||
await page.waitForTimeout(250);
|
||||
|
||||
// assert the nav headers are visible
|
||||
await page.getByText('Navigation').waitFor();
|
||||
await page.getByText('Documentation').waitFor();
|
||||
await page.getByText('Navigation').first().waitFor();
|
||||
await page.getByText('Documentation').first().waitFor();
|
||||
await page.getByText('About').first().waitFor();
|
||||
|
||||
await page
|
||||
.getByRole('button', { name: 'Notifications', exact: true })
|
||||
.waitFor();
|
||||
|
||||
@@ -2,7 +2,8 @@ import { test } from './baseFixtures.js';
|
||||
import {
|
||||
clearTableFilters,
|
||||
navigate,
|
||||
setTableChoiceFilter
|
||||
setTableChoiceFilter,
|
||||
toggleColumnSorting
|
||||
} from './helpers.js';
|
||||
import { doCachedLogin } from './login.js';
|
||||
|
||||
@@ -98,3 +99,25 @@ test('Tables - Columns', async ({ browser }) => {
|
||||
await page.getByRole('menuitem', { name: 'Reference', exact: true }).click();
|
||||
await page.getByRole('menuitem', { name: 'Project Code' }).click();
|
||||
});
|
||||
|
||||
test('Tables - Sorting', async ({ browser }) => {
|
||||
// Go to the "stock list" page
|
||||
const page = await doCachedLogin(browser, {
|
||||
url: 'stock/location/index/stock-items',
|
||||
username: 'steven',
|
||||
password: 'wizardstaff'
|
||||
});
|
||||
|
||||
// Stock table sorting
|
||||
await toggleColumnSorting(page, 'Part');
|
||||
await toggleColumnSorting(page, 'IPN');
|
||||
await toggleColumnSorting(page, 'Stock');
|
||||
await toggleColumnSorting(page, 'Status');
|
||||
|
||||
// Purchase order sorting
|
||||
await navigate(page, '/web/purchasing/index/purchaseorders');
|
||||
await toggleColumnSorting(page, 'Reference');
|
||||
await toggleColumnSorting(page, 'Supplier');
|
||||
await toggleColumnSorting(page, 'Order Status');
|
||||
await toggleColumnSorting(page, 'Line Items');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user