import {act, render} from 'sentry-test/reactTestingLibrary';
import {useSorts} from 'sentry/views/explore/hooks/useSorts';
describe('useSorts', function () {
it('allows changing sorts', function () {
let sorts, setSorts;
const fields = ['id', 'timestamp'];
function TestPage() {
[sorts, setSorts] = useSorts({fields});
return null;
}
render(, {disableRouterMocks: true});
expect(sorts).toEqual([
{
kind: 'desc',
field: 'timestamp',
},
]); // default
act(() =>
setSorts([
{
kind: 'asc',
field: 'timestamp',
},
])
);
expect(sorts).toEqual([
{
kind: 'asc',
field: 'timestamp',
},
]);
act(() =>
setSorts([
{
kind: 'desc',
field: 'id',
},
])
);
expect(sorts).toEqual([
{
kind: 'desc',
field: 'id',
},
]);
});
it('falls back to timestamp desc if possible', function () {
let sorts, setSorts;
const fields = ['id', 'timestamp'];
function TestPage() {
[sorts, setSorts] = useSorts({fields});
return null;
}
render(, {disableRouterMocks: true});
act(() =>
setSorts([
{
kind: 'asc',
field: 'foo',
},
])
);
expect(sorts).toEqual([
{
kind: 'desc',
field: 'timestamp',
},
]);
});
it('falls back to first column desc if timestamp is not available', function () {
let sorts, setSorts;
const fields = ['id'];
function TestPage() {
[sorts, setSorts] = useSorts({fields});
return null;
}
render(, {disableRouterMocks: true});
act(() =>
setSorts([
{
kind: 'asc',
field: 'foo',
},
])
);
expect(sorts).toEqual([
{
kind: 'desc',
field: 'id',
},
]);
});
});