@@ -42,36 +42,49 @@ describe('ThumbnailNavigation', () => {
4242 expect ( screen . getAllByRole ( 'gridcell' ) . length ) . toEqual ( 3 ) ;
4343 } ) ;
4444
45+ it ( 'uses Grid component for horizontal (far-bottom) layout' , ( ) => {
46+ render ( < Subject position = "far-bottom" /> ) ;
47+ // Grid component renders with role="grid" inside the Thumbnails wrapper
48+ const thumbnailWrapper = screen . getByLabelText ( 'Thumbnails' ) ;
49+ const grid = thumbnailWrapper . querySelector ( '[role="grid"]' ) ;
50+ expect ( grid ) . toBeInTheDocument ( ) ;
51+ // Grid should have 3 gridcells (all in one row)
52+ expect ( screen . getAllByRole ( 'gridcell' ) ) . toHaveLength ( 3 ) ;
53+ } ) ;
54+
55+ it ( 'uses List component for vertical (far-right) layout' , ( ) => {
56+ render ( < Subject position = "far-right" /> ) ;
57+ // List component renders with role="list" inside the Thumbnails wrapper
58+ const thumbnailWrapper = screen . getByLabelText ( 'Thumbnails' ) ;
59+ const list = thumbnailWrapper . querySelector ( '[role="list"]' ) ;
60+ expect ( list ) . toBeInTheDocument ( ) ;
61+ // List should have 3 gridcells (each as a separate item)
62+ expect ( screen . getAllByRole ( 'gridcell' ) ) . toHaveLength ( 3 ) ;
63+ } ) ;
64+
4565 // TODO: Test that we recalculate dimensions when the view changes (resetAfterIndex)
4666 // TODO: Test that the window scrolls when the canvasIndex prop changes (scorllToItem)
4767
4868 it ( 'gives the grid a size' , ( ) => {
4969 const { rerender } = render ( < Subject /> ) ;
50- expect ( screen . getByRole ( 'grid' ) ) . toHaveStyle ( {
51- height : '150px' ,
52- width : '100%' ,
53- } ) ;
70+ expect ( screen . getByLabelText ( 'Thumbnails' ) ) . toHaveStyle ( { height : '150px' , width : '100%' } ) ;
5471
5572 rerender ( < Subject position = "far-right" /> ) ;
56- expect ( screen . getByRole ( 'grid' ) ) . toHaveStyle ( {
57- height : '100%' ,
58- minHeight : 0 ,
59- width : '123px' ,
60- } ) ;
73+ expect ( screen . getByLabelText ( 'Thumbnails' ) ) . toHaveStyle ( { height : '100%' , minHeight : 0 , width : '127px' } ) ;
6174 } ) ;
6275
6376 it ( 'roughly doubles the width of the grid in book view' , ( ) => {
6477 const { rerender } = render ( < Subject position = "far-right" /> ) ;
65- expect ( screen . getByRole ( 'grid ') ) . toHaveStyle ( { width : '123px ' } ) ;
78+ expect ( screen . getByLabelText ( 'Thumbnails ') ) . toHaveStyle ( { width : '127px ' } ) ;
6679
6780 rerender ( < Subject position = "far-right" view = "book" /> ) ;
68- expect ( screen . getByRole ( 'grid ') ) . toHaveStyle ( { width : '223px ' } ) ;
81+ expect ( screen . getByLabelText ( 'Thumbnails ') ) . toHaveStyle ( { width : '227px ' } ) ;
6982 } ) ;
7083
7184 it ( 'calculates the scaled width of each cell' , ( ) => {
7285 render ( < Subject /> ) ;
7386
74- expect ( screen . getAllByRole ( 'gridcell' ) [ 0 ] ) . toHaveStyle ( { width : '74px ' } ) ;
87+ expect ( screen . getAllByRole ( 'gridcell' ) [ 0 ] ) . toHaveStyle ( { width : '111px ' } ) ;
7588 } ) ;
7689
7790 it ( 'calculates the scaled height of each cell when on the right' , ( ) => {
@@ -82,7 +95,7 @@ describe('ThumbnailNavigation', () => {
8295 it ( 'keeps a minimum size for each cell' , ( ) => {
8396 render ( < Subject fixture = { zeroWidthFixture } /> ) ;
8497
85- expect ( screen . getAllByRole ( 'gridcell' ) [ 0 ] ) . toHaveStyle ( { width : '100px ' } ) ;
98+ expect ( screen . getAllByRole ( 'gridcell' ) [ 0 ] ) . toHaveStyle ( { width : '111px ' } ) ;
8699 } ) ;
87100
88101 it ( 'keeps a minimum size for each cell when on the right' , ( ) => {
@@ -97,69 +110,31 @@ describe('ThumbnailNavigation', () => {
97110
98111 describe ( 'handleKeyUp' , ( ) => {
99112 it ( 'handles right arrow by advancing the current canvas' , async ( ) => {
100- render (
101- < Subject
102- canvasIndex = { 1 }
103- hasNextCanvas
104- setNextCanvas = { setNextCanvas }
105- /> ,
106- ) ;
113+ render ( < Subject canvasIndex = { 1 } hasNextCanvas setNextCanvas = { setNextCanvas } /> ) ;
107114
108115 screen . getByRole ( 'grid' ) . focus ( ) ;
109- fireEvent . keyDown ( screen . getByRole ( 'grid' ) , {
110- code : 'ArrowRight' ,
111- key : 'ArrowRight' ,
112- } ) ;
116+ fireEvent . keyDown ( screen . getByRole ( 'grid' ) , { code : 'ArrowRight' , key : 'ArrowRight' } ) ;
113117 expect ( setNextCanvas ) . toHaveBeenCalled ( ) ;
114118 } ) ;
115119 it ( 'handles down arrow by advancing the current canvas when the canvas is on the right' , ( ) => {
116- render (
117- < Subject
118- canvasIndex = { 1 }
119- hasNextCanvas
120- position = "far-right"
121- setNextCanvas = { setNextCanvas }
122- /> ,
123- ) ;
120+ render ( < Subject canvasIndex = { 1 } hasNextCanvas position = "far-right" setNextCanvas = { setNextCanvas } /> ) ;
124121
125- screen . getByRole ( 'grid' ) . focus ( ) ;
126- fireEvent . keyDown ( screen . getByRole ( 'grid' ) , {
127- code : 'ArrowDown' ,
128- key : 'ArrowDown' ,
129- } ) ;
122+ screen . getByLabelText ( 'Thumbnails' ) . focus ( ) ;
123+ fireEvent . keyDown ( screen . getByLabelText ( 'Thumbnails' ) , { code : 'ArrowDown' , key : 'ArrowDown' } ) ;
130124 expect ( setNextCanvas ) . toHaveBeenCalled ( ) ;
131125 } ) ;
132126 it ( 'handles left arrow by selecting the previous canvas' , ( ) => {
133- render (
134- < Subject
135- canvasIndex = { 2 }
136- hasPreviousCanvas
137- setPreviousCanvas = { setPreviousCanvas }
138- /> ,
139- ) ;
127+ render ( < Subject canvasIndex = { 2 } hasPreviousCanvas setPreviousCanvas = { setPreviousCanvas } /> ) ;
140128
141- screen . getByRole ( 'grid' ) . focus ( ) ;
142- fireEvent . keyDown ( screen . getByRole ( 'grid' ) , {
143- code : 'ArrowLeft' ,
144- key : 'ArrowLeft' ,
145- } ) ;
129+ screen . getByLabelText ( 'Thumbnails' ) . focus ( ) ;
130+ fireEvent . keyDown ( screen . getByLabelText ( 'Thumbnails' ) , { code : 'ArrowLeft' , key : 'ArrowLeft' } ) ;
146131 expect ( setPreviousCanvas ) . toHaveBeenCalled ( ) ;
147132 } ) ;
148133 it ( 'handles up arrow by selecting the previous canvas when the canvas is on the right' , ( ) => {
149- render (
150- < Subject
151- canvasIndex = { 2 }
152- hasPreviousCanvas
153- position = "far-right"
154- setPreviousCanvas = { setPreviousCanvas }
155- /> ,
156- ) ;
134+ render ( < Subject canvasIndex = { 2 } hasPreviousCanvas position = "far-right" setPreviousCanvas = { setPreviousCanvas } /> ) ;
157135
158- screen . getByRole ( 'grid' ) . focus ( ) ;
159- fireEvent . keyDown ( screen . getByRole ( 'grid' ) , {
160- code : 'ArrowUp' ,
161- key : 'ArrowUp' ,
162- } ) ;
136+ screen . getByLabelText ( 'Thumbnails' ) . focus ( ) ;
137+ fireEvent . keyDown ( screen . getByLabelText ( 'Thumbnails' ) , { code : 'ArrowUp' , key : 'ArrowUp' } ) ;
163138 expect ( setPreviousCanvas ) . toHaveBeenCalled ( ) ;
164139 } ) ;
165140 } ) ;
0 commit comments