Files
bruno/packages/bruno-app/src/selectors/tab.spec.js
Sid 57d2fc7899 fix: example-request tab collision (#7989)
* fix: prevent response-example tabs from hijacking request sidebar selection

* fix: add selectors for examples with index

* test: better locator

* fix: duplicate name collision

* fix: refactor sidebar example handling functions for better clarity and reusability

* chore: cr comments
2026-05-13 21:47:39 +05:30

91 lines
2.3 KiB
JavaScript

import { getTabUidForItem, isTabForItemActive, isTabForItemPresent } from './tab';
describe('tab selectors', () => {
const baseState = {
tabs: {
activeTabUid: null,
tabs: []
}
};
it('does not resolve request tab uid from response-example pathname fallback', () => {
const state = {
...baseState,
tabs: {
...baseState.tabs,
tabs: [
{
uid: 'example-1',
type: 'response-example',
pathname: '/c/req.bru',
collectionUid: 'c1'
}
]
}
};
const selector = getTabUidForItem({ itemUid: 'request-1', itemPathname: '/c/req.bru', collectionUid: 'c1' });
expect(selector(state)).toBeNull();
});
it('does not mark request active when only response-example tab is active on same pathname', () => {
const state = {
...baseState,
tabs: {
activeTabUid: 'example-1',
tabs: [
{
uid: 'example-1',
type: 'response-example',
pathname: '/c/req.bru',
collectionUid: 'c1'
}
]
}
};
const selector = isTabForItemActive({ itemUid: 'request-1', itemPathname: '/c/req.bru', collectionUid: 'c1' });
expect(selector(state)).toBe(false);
});
it('does not mark request present when only response-example tab exists for same pathname', () => {
const state = {
...baseState,
tabs: {
...baseState.tabs,
tabs: [
{
uid: 'example-1',
type: 'response-example',
pathname: '/c/req.bru',
collectionUid: 'c1'
}
]
}
};
const selector = isTabForItemPresent({ itemUid: 'request-1', itemPathname: '/c/req.bru', collectionUid: 'c1' });
expect(selector(state)).toBe(false);
});
it('still resolves regular request tab by pathname fallback', () => {
const state = {
...baseState,
tabs: {
...baseState.tabs,
tabs: [
{
uid: 'request-1',
type: 'http-request',
pathname: '/c/req.bru',
collectionUid: 'c1'
}
]
}
};
const selector = getTabUidForItem({ itemUid: 'missing-uid', itemPathname: '/c/req.bru', collectionUid: 'c1' });
expect(selector(state)).toBe('request-1');
});
});