-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[core] Use
describeTreeView
for icons tests (#12672)
Signed-off-by: Flavien DELANGLE <[email protected]> Co-authored-by: Nora <[email protected]>
- Loading branch information
1 parent
b51d152
commit acd41a2
Showing
9 changed files
with
257 additions
and
81 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
197 changes: 197 additions & 0 deletions
197
packages/x-tree-view/src/internals/plugins/useTreeViewIcons/useTreeViewIcons.test.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,197 @@ | ||
import * as React from 'react'; | ||
import { expect } from 'chai'; | ||
import { | ||
describeTreeView, | ||
DescribeTreeViewRendererReturnValue, | ||
} from 'test/utils/tree-view/describeTreeView'; | ||
import { | ||
UseTreeViewExpansionSignature, | ||
UseTreeViewIconsSignature, | ||
} from '@mui/x-tree-view/internals'; | ||
|
||
describeTreeView<[UseTreeViewIconsSignature, UseTreeViewExpansionSignature]>( | ||
'useTreeViewIcons plugin', | ||
({ render }) => { | ||
describe('slots (expandIcon, collapseIcon, endIcon, icon)', () => { | ||
const getIconTestId = (response: DescribeTreeViewRendererReturnValue<[]>, itemId: string) => | ||
response.getItemIconContainer(itemId).querySelector(`div`)?.dataset.testid; | ||
|
||
it('should render the expandIcon slot defined on the tree if no icon slot is defined on the item and the item is collapsed', () => { | ||
const response = render({ | ||
items: [{ id: '1', children: [{ id: '1.1' }] }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('treeExpandIcon'); | ||
}); | ||
|
||
it('should render the collapseIcon slot defined on the tree if no icon is defined on the item and the item is expanded', () => { | ||
const response = render({ | ||
items: [{ id: '1', children: [{ id: '1.1' }] }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
defaultExpandedItems: ['1'], | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('treeCollapseIcon'); | ||
}); | ||
|
||
it('should render the endIcon slot defined on the tree if no icon is defined on the item and the item has no children', () => { | ||
const response = render({ | ||
items: [{ id: '1' }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('treeEndIcon'); | ||
}); | ||
|
||
it('should render the expandIcon slot defined on the item if the item is collapsed', () => { | ||
const response = render({ | ||
items: [{ id: '1', children: [{ id: '1.1' }] }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
slotProps: { | ||
item: { | ||
slots: { | ||
expandIcon: () => <div data-testid="itemExpandIcon" />, | ||
collapseIcon: () => <div data-testid="itemCollapseIcon" />, | ||
endIcon: () => <div data-testid="itemEndIcon" />, | ||
}, | ||
}, | ||
}, | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('itemExpandIcon'); | ||
}); | ||
|
||
it('should render the collapseIcon slot defined on the item if the item is expanded', () => { | ||
const response = render({ | ||
items: [{ id: '1', children: [{ id: '1.1' }] }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
slotProps: { | ||
item: { | ||
slots: { | ||
expandIcon: () => <div data-testid="itemExpandIcon" />, | ||
collapseIcon: () => <div data-testid="itemCollapseIcon" />, | ||
endIcon: () => <div data-testid="itemEndIcon" />, | ||
}, | ||
}, | ||
}, | ||
defaultExpandedItems: ['1'], | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('itemCollapseIcon'); | ||
}); | ||
|
||
it('should render the endIcon slot defined on the tree if the item has no children', () => { | ||
const response = render({ | ||
items: [{ id: '1' }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
slotProps: { | ||
item: { | ||
slots: { | ||
expandIcon: () => <div data-testid="itemExpandIcon" />, | ||
collapseIcon: () => <div data-testid="itemCollapseIcon" />, | ||
endIcon: () => <div data-testid="itemEndIcon" />, | ||
}, | ||
}, | ||
}, | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('itemEndIcon'); | ||
}); | ||
|
||
it('should render the icon slot defined on the item if the item is collapsed', () => { | ||
const response = render({ | ||
items: [{ id: '1', children: [{ id: '1.1' }] }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
slotProps: { | ||
item: { | ||
slots: { | ||
expandIcon: () => <div data-testid="itemExpandIcon" />, | ||
collapseIcon: () => <div data-testid="itemCollapseIcon" />, | ||
endIcon: () => <div data-testid="itemEndIcon" />, | ||
icon: () => <div data-testid="itemIcon" />, | ||
}, | ||
}, | ||
}, | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('itemIcon'); | ||
}); | ||
|
||
it('should render the icon slot defined on the item if the item is expanded', () => { | ||
const response = render({ | ||
items: [{ id: '1', children: [{ id: '1.1' }] }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
slotProps: { | ||
item: { | ||
slots: { | ||
expandIcon: () => <div data-testid="itemExpandIcon" />, | ||
collapseIcon: () => <div data-testid="itemCollapseIcon" />, | ||
endIcon: () => <div data-testid="itemEndIcon" />, | ||
icon: () => <div data-testid="itemIcon" />, | ||
}, | ||
}, | ||
}, | ||
defaultExpandedItems: ['1'], | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('itemIcon'); | ||
}); | ||
|
||
it('should render the icon slot defined on the item if the item has no children', () => { | ||
const response = render({ | ||
items: [{ id: '1' }], | ||
slots: { | ||
expandIcon: () => <div data-testid="treeExpandIcon" />, | ||
collapseIcon: () => <div data-testid="treeCollapseIcon" />, | ||
endIcon: () => <div data-testid="treeEndIcon" />, | ||
}, | ||
slotProps: { | ||
item: { | ||
slots: { | ||
expandIcon: () => <div data-testid="itemExpandIcon" />, | ||
collapseIcon: () => <div data-testid="itemCollapseIcon" />, | ||
endIcon: () => <div data-testid="itemEndIcon" />, | ||
icon: () => <div data-testid="itemIcon" />, | ||
}, | ||
}, | ||
}, | ||
}); | ||
|
||
expect(getIconTestId(response, '1')).to.equal('itemIcon'); | ||
}); | ||
}); | ||
}, | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.