| 
									
										
										
										
											2021-09-10 06:43:06 +02:00
										 |  |  | import React from 'react'; | 
					
						
							|  |  |  | import { ThemeProvider, lightTheme } from '@strapi/parts'; | 
					
						
							|  |  |  | import { render as renderTL, fireEvent, waitFor, screen } from '@testing-library/react'; | 
					
						
							|  |  |  | import { QueryClientProvider, QueryClient } from 'react-query'; | 
					
						
							|  |  |  | import { Provider } from 'react-redux'; | 
					
						
							|  |  |  | import { combineReducers, createStore } from 'redux'; | 
					
						
							|  |  |  | import en from '../../../translations/en.json'; | 
					
						
							|  |  |  | import server from './server'; | 
					
						
							|  |  |  | import reducers from '../../../hooks/reducers'; | 
					
						
							|  |  |  | import LocaleSelect from '..'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | jest.mock('../../../utils', () => ({ | 
					
						
							|  |  |  |   getTrad: x => x, | 
					
						
							|  |  |  | })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | jest.mock('react-intl', () => ({ | 
					
						
							|  |  |  |   FormattedMessage: ({ id }) => id, | 
					
						
							|  |  |  |   useIntl: () => ({ formatMessage: jest.fn(({ id }) => en[id]) }), | 
					
						
							|  |  |  | })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | jest.mock('@strapi/helper-plugin', () => ({ | 
					
						
							|  |  |  |   ...jest.requireActual('@strapi/helper-plugin'), | 
					
						
							|  |  |  |   useNotification: jest.fn(), | 
					
						
							|  |  |  | })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const queryClient = new QueryClient({ | 
					
						
							|  |  |  |   defaultOptions: { | 
					
						
							|  |  |  |     queries: { | 
					
						
							|  |  |  |       refetchOnWindowFocus: false, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const store = createStore(combineReducers(reducers)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const render = props => | 
					
						
							|  |  |  |   renderTL( | 
					
						
							|  |  |  |     <QueryClientProvider client={queryClient}> | 
					
						
							|  |  |  |       <Provider store={store}> | 
					
						
							|  |  |  |         <ThemeProvider theme={lightTheme}> | 
					
						
							|  |  |  |           <LocaleSelect {...props} /> | 
					
						
							|  |  |  |         </ThemeProvider> | 
					
						
							|  |  |  |       </Provider> | 
					
						
							|  |  |  |     </QueryClientProvider>, | 
					
						
							|  |  |  |     { container: document.body } | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('LocaleSelect', () => { | 
					
						
							|  |  |  |   beforeAll(() => server.listen()); | 
					
						
							|  |  |  |   afterEach(() => server.resetHandlers()); | 
					
						
							|  |  |  |   afterAll(() => server.close()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('shows an aria-busy element and a loader when loading the data', async () => { | 
					
						
							|  |  |  |     const { container } = render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(container.firstChild).toMatchInlineSnapshot(`
 | 
					
						
							|  |  |  |       .c3 { | 
					
						
							|  |  |  |         position: absolute; | 
					
						
							|  |  |  |         left: 0; | 
					
						
							|  |  |  |         right: 0; | 
					
						
							|  |  |  |         bottom: 0; | 
					
						
							|  |  |  |         top: 0; | 
					
						
							|  |  |  |         width: 100%; | 
					
						
							|  |  |  |         background: transparent; | 
					
						
							|  |  |  |         border: none; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c3:focus { | 
					
						
							|  |  |  |         outline: none; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c1 { | 
					
						
							|  |  |  |         font-weight: 500; | 
					
						
							|  |  |  |         font-size: 0.75rem; | 
					
						
							|  |  |  |         line-height: 1.33; | 
					
						
							|  |  |  |         color: #32324d; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c12 { | 
					
						
							|  |  |  |         font-weight: 400; | 
					
						
							|  |  |  |         font-size: 0.875rem; | 
					
						
							|  |  |  |         line-height: 1.43; | 
					
						
							|  |  |  |         color: #666687; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c7 { | 
					
						
							|  |  |  |         padding-left: 12px; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c11 { | 
					
						
							|  |  |  |         padding-right: 16px; | 
					
						
							|  |  |  |         padding-left: 16px; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c4 { | 
					
						
							|  |  |  |         display: -webkit-box; | 
					
						
							|  |  |  |         display: -webkit-flex; | 
					
						
							|  |  |  |         display: -ms-flexbox; | 
					
						
							|  |  |  |         display: flex; | 
					
						
							|  |  |  |         -webkit-flex-direction: row; | 
					
						
							|  |  |  |         -ms-flex-direction: row; | 
					
						
							|  |  |  |         flex-direction: row; | 
					
						
							|  |  |  |         -webkit-box-pack: justify; | 
					
						
							|  |  |  |         -webkit-justify-content: space-between; | 
					
						
							|  |  |  |         -ms-flex-pack: justify; | 
					
						
							|  |  |  |         justify-content: space-between; | 
					
						
							|  |  |  |         -webkit-align-items: center; | 
					
						
							|  |  |  |         -webkit-box-align: center; | 
					
						
							|  |  |  |         -ms-flex-align: center; | 
					
						
							|  |  |  |         align-items: center; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c6 { | 
					
						
							|  |  |  |         display: -webkit-box; | 
					
						
							|  |  |  |         display: -webkit-flex; | 
					
						
							|  |  |  |         display: -ms-flexbox; | 
					
						
							|  |  |  |         display: flex; | 
					
						
							|  |  |  |         -webkit-flex-direction: row; | 
					
						
							|  |  |  |         -ms-flex-direction: row; | 
					
						
							|  |  |  |         flex-direction: row; | 
					
						
							|  |  |  |         -webkit-align-items: center; | 
					
						
							|  |  |  |         -webkit-box-align: center; | 
					
						
							|  |  |  |         -ms-flex-align: center; | 
					
						
							|  |  |  |         align-items: center; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c0 { | 
					
						
							|  |  |  |         display: -webkit-box; | 
					
						
							|  |  |  |         display: -webkit-flex; | 
					
						
							|  |  |  |         display: -ms-flexbox; | 
					
						
							|  |  |  |         display: flex; | 
					
						
							|  |  |  |         -webkit-flex-direction: column; | 
					
						
							|  |  |  |         -ms-flex-direction: column; | 
					
						
							|  |  |  |         flex-direction: column; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c0 > * { | 
					
						
							|  |  |  |         margin-top: 0; | 
					
						
							|  |  |  |         margin-bottom: 0; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c0 > * + * { | 
					
						
							|  |  |  |         margin-top: 4px; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c2 { | 
					
						
							|  |  |  |         position: relative; | 
					
						
							|  |  |  |         border: 1px solid #dcdce4; | 
					
						
							|  |  |  |         padding-right: 12px; | 
					
						
							|  |  |  |         border-radius: 4px; | 
					
						
							|  |  |  |         background: #ffffff; | 
					
						
							|  |  |  |         overflow: hidden; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c2:focus-within { | 
					
						
							|  |  |  |         border: 1px solid #4945ff; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c13 { | 
					
						
							|  |  |  |         background: transparent; | 
					
						
							|  |  |  |         border: none; | 
					
						
							|  |  |  |         position: relative; | 
					
						
							|  |  |  |         z-index: 1; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c13 svg { | 
					
						
							|  |  |  |         height: 0.6875rem; | 
					
						
							|  |  |  |         width: 0.6875rem; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c13 svg path { | 
					
						
							|  |  |  |         fill: #666687; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c14 { | 
					
						
							|  |  |  |         display: -webkit-box; | 
					
						
							|  |  |  |         display: -webkit-flex; | 
					
						
							|  |  |  |         display: -ms-flexbox; | 
					
						
							|  |  |  |         display: flex; | 
					
						
							|  |  |  |         background: none; | 
					
						
							|  |  |  |         border: none; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c14 svg { | 
					
						
							|  |  |  |         width: 0.375rem; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c5 { | 
					
						
							|  |  |  |         min-height: 2.5rem; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c9 { | 
					
						
							|  |  |  |         border: 0; | 
					
						
							|  |  |  |         -webkit-clip: rect(0 0 0 0); | 
					
						
							|  |  |  |         clip: rect(0 0 0 0); | 
					
						
							|  |  |  |         height: 1px; | 
					
						
							|  |  |  |         margin: -1px; | 
					
						
							|  |  |  |         overflow: hidden; | 
					
						
							|  |  |  |         padding: 0; | 
					
						
							|  |  |  |         position: absolute; | 
					
						
							|  |  |  |         width: 1px; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c10 { | 
					
						
							|  |  |  |         -webkit-animation: gzYjWD 1s infinite linear; | 
					
						
							|  |  |  |         animation: gzYjWD 1s infinite linear; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       .c8 img { | 
					
						
							|  |  |  |         height: 1rem; | 
					
						
							|  |  |  |         width: 1rem; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <div> | 
					
						
							|  |  |  |         <div | 
					
						
							|  |  |  |           class="c0" | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           <span | 
					
						
							|  |  |  |             class="c1" | 
					
						
							|  |  |  |             for="select-1" | 
					
						
							|  |  |  |             id="select-1-label" | 
					
						
							|  |  |  |           > | 
					
						
							|  |  |  |             Locales | 
					
						
							|  |  |  |           </span> | 
					
						
							|  |  |  |           <div | 
					
						
							|  |  |  |             class="c2" | 
					
						
							|  |  |  |           > | 
					
						
							|  |  |  |             <button | 
					
						
							|  |  |  |               aria-busy="true" | 
					
						
							|  |  |  |               aria-disabled="false" | 
					
						
							|  |  |  |               aria-expanded="false" | 
					
						
							|  |  |  |               aria-haspopup="listbox" | 
					
						
							|  |  |  |               aria-labelledby="select-1-label select-1-content" | 
					
						
							|  |  |  |               class="c3" | 
					
						
							|  |  |  |               id="select-1" | 
					
						
							|  |  |  |               type="button" | 
					
						
							|  |  |  |             /> | 
					
						
							|  |  |  |             <div | 
					
						
							|  |  |  |               class="c4 c5" | 
					
						
							|  |  |  |             > | 
					
						
							|  |  |  |               <div | 
					
						
							|  |  |  |                 class="c6" | 
					
						
							|  |  |  |               > | 
					
						
							|  |  |  |                 <div | 
					
						
							|  |  |  |                   aria-hidden="true" | 
					
						
							|  |  |  |                   class="c7" | 
					
						
							|  |  |  |                 > | 
					
						
							|  |  |  |                   <div | 
					
						
							|  |  |  |                     aria-live="assertive" | 
					
						
							|  |  |  |                     class="c8" | 
					
						
							|  |  |  |                     role="alert" | 
					
						
							|  |  |  |                   > | 
					
						
							|  |  |  |                     <div | 
					
						
							|  |  |  |                       class="c9" | 
					
						
							|  |  |  |                     > | 
					
						
							|  |  |  |                       Loading the available locales... | 
					
						
							|  |  |  |                     </div> | 
					
						
							|  |  |  |                     <img | 
					
						
							|  |  |  |                       aria-hidden="true" | 
					
						
							|  |  |  |                       class="c10" | 
					
						
							|  |  |  |                       src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjMiIGhlaWdodD0iNjMiIHZpZXdCb3g9IjAgMCA2MyA2MyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQyLjU1NjMgMTEuOTgxNkMzOS40ODQgMTAuMzA3MSAzNS44NTc1IDkuMjkwOTcgMzIuMzM1NCA5LjEzNTIxQzI4LjY0NDMgOC45Mjg4OCAyNC44Mjk1IDkuNzIzMTggMjEuMzMzNiAxMS40MTI5QzIwLjkxMjMgMTEuNTkwMSAyMC41Mzc2IDExLjgxMDEgMjAuMTcyMiAxMi4wMjQ5TDIwLjAxMDggMTIuMTE3OUMxOS44Nzc0IDEyLjE5NTEgMTkuNzQ0MSAxMi4yNzI0IDE5LjYwOCAxMi4zNTM2QzE5LjMyNTMgMTIuNTE0NiAxOS4wNDkyIDEyLjY3NDQgMTguNzU0NCAxMi44NzkyQzE4LjU0NjMgMTMuMDMyOSAxOC4zMzk1IDEzLjE3NTkgMTguMTMwMSAxMy4zMjNDMTcuNTY1OCAxMy43MjA4IDE2Ljk4NjggMTQuMTMxNyAxNi40OTgzIDE0LjU5NzlDMTQuODQ3NiAxNS45NTI0IDEzLjU1NzEgMTcuNjA3NSAxMi42MDcxIDE4LjkyMTRDMTAuNDM2NSAyMi4xNTY2IDkuMDg2MjIgMjUuOTU2NyA4LjgwNzAyIDI5LjYxNDNMOC43NzY0IDMwLjE1ODhDOC43MzMyOCAzMC45MTk2IDguNjg0NzYgMzEuNzA1NyA4Ljc1MzUzIDMyLjQ1NTVDOC43NjY0OCAzMi42MDg0IDguNzY2MSAzMi43NjM4IDguNzc1MDYgMzIuOTE0QzguNzg4OTUgMzMuMjI5IDguODAxNTIgMzMuNTM3MyA4Ljg0NiAzMy44NjcyTDkuMDczOTYgMzUuNDIyMUM5LjA5NzU2IDM1LjU3NjQgOS4xMTk4IDM1Ljc0MTMgOS4xNjMzIDM1LjkyNjNMOS42NTkxOSAzNy45MjcyTDEwLjEzOCAzOS4yODIzQzEwLjI3MjkgMzkuNjY3MyAxMC40MTU4IDQwLjA3NTEgMTAuNiA0MC40M0MxMi4wMjkyIDQzLjYzNyAxNC4xNDI1IDQ2LjQ1NzggMTYuNzA2MyA0OC41ODVDMTkuMDUwOCA1MC41Mjk2IDIxLjgyNCA1Mi4wMDIzIDI0Ljc0OTEgNTIuODQ1MkwyNi4yMzcxIDUzLjIzNzZDMjYuMzc4MSA1My4yNjkzIDI2LjQ5MjYgNTMuMjg4OSAyNi42MDMxIDUzLjMwNThMMjYuNzc3NSA1My4zMzExQzI3LjAwNTIgNTMuMzYzNiAyNy4yMTk1IDUzLjM5ODYgMjcuNDQ0NSA1My40MzVDMjcuODU5OCA1My41MDc2IDI4LjI2NzIgNTMuNTc0OCAyOC43MDc5IDUzLjYxODNMMzAuNTY0MSA1My43MjI5QzMwLjk1MTYgNTMuNzI0OSAzMS4zMzUyIDUzLjcwNjggMzEuNzA4MSA1My42ODc0QzMxLjkwMzkgNTMuNjgxIDMyLjA5ODQgNTMuNjY4MSAzMi4zMjg4IDUzLjY2MkMzNC41MjUzIDUzLjQ3NzIgMzYuNTEwNiA1My4wNjM0IDM4LjA1MTYgNTIuNDY1MkMzOC4xNzY5IDUyLjQxNzEgMzguMzAwOCA1Mi4zNzk2IDM4LjQyMzQgNTIuMzM1NUMzOC42NzI3IDUyLjI0OTkgMzguOTI1OSA1Mi4xNjcgMzkuMTQzMiA1Mi4wNTk5TDQwLjg1OTEgNTEuMjYyNkw0Mi41NzAyIDUwLjI2NkM0Mi45MDA5IDUwLjA2ODIgNDMuMDIwNSA0OS42NDE0IDQyLjgyODIgNDkuMjk4NEM0Mi42MzIgNDguOTUyNiA0Mi4yMDM0IDQ4LjgzMDggNDEuODYzNCA0OS4wMTY2TDQwLjE3OTIgNDkuOTIxOEwzOC40OTk1IDUwLjYyMjRDMzguMzE2OSA1MC42OTUzIDM4LjEyMSA1MC43NTM0IDM3LjkyMjQgNTAuODE1NUMzNy43ODM4IDUwLjg0ODkgMzcuNjUxOCA1MC44OTgzIDM3LjUwMTIgNTAuOTQwOEMzNi4wNzExIDUxLjQzNSAzNC4yNDQ1IDUxLjc0MjUgMzIuMjQ0IDUxLjgzNDZDMzIuMDQ0MiA1MS44MzgzIDMxLjg0NzEgNTEuODM3OSAzMS42NTQgNTEuODQwM0MzMS4zMDUxIDUxLjg0MTQgMzAuOTYwMiA1MS44NDUxIDMwLjYzOTIgNTEuODMwNUwyOC45MTc3IDUxLjY3MjVDMjguNTQ3NiA1MS42MTkgMjguMTY5NSA1MS41NDI3IDI3Ljc4NDggNTEuNDY3OEMyNy41NjM5IDUxLjQxNjcgMjcuMzM3NiA1MS4zNzM3IDI3LjEyOTkgNTEuMzM3NEwyNi45NTI5IDUxLjI5ODdDMjYuODcwNCA1MS4yODM0IDI2Ljc3NzIgNTEuMjY2NyAyNi43MzMzIDUxLjI1NDNMMjUuMzQ2NiA1MC44MzIyQzIyLjc2NTEgNDkuOTc4OSAyMC4zMyA0OC41NzI5IDE4LjI5NDIgNDYuNzU1N0MxNi4xMDU2IDQ0Ljc5NTEgMTQuMzMzOSA0Mi4yMzM1IDEzLjE3NDIgMzkuMzU4MkMxMi4wMjc2IDM2LjYwMTMgMTEuNTk4OCAzMy4yNzkyIDExLjk3MTYgMzAuMDA3NkMxMi4zMTQ1IDI3LjAyMTMgMTMuMzk0OCAyNC4xNjM1IDE1LjE4NTggMjEuNTA4M0MxNS4zMDM0IDIxLjMzMzkgMTUuNDIxIDIxLjE1OTYgMTUuNTIxMiAyMS4wMTk2QzE2LjQzMDkgMTkuODY4OCAxNy41NDA4IDE4LjU1ODkgMTguOTQ4MyAxNy40OTZDMTkuMzM2NyAxNy4xNTI1IDE5Ljc4NjIgMTYuODU2IDIwLjI2MTEgMTYuNTQ3OEMyMC40ODc4IDE2LjQwMDkgMjAuNzA3OSAxNi4yNTUzIDIwLjg5MDcgMTYuMTMwNkMyMS4wOTc0IDE2LjAwNDggMjEuMzE4OCAxNS44ODMxIDIxLjUzNDggMTUuNzY5NEMyMS42NzYxIDE1LjY5NzUgMjEuODE2MiAxNS42MTkgMjEuOTM4OCAxNS41NTc2TDIyLjEwMDIgMTUuNDY0NkMyMi40MDAyIDE1LjMwMzcgMjIuNjc0OSAxNS4xNTQ2IDIyLjk5MDggMTUuMDM5TDI0LjExODYgMTQuNTcxNUMyNC4zMzk5IDE0LjQ4NDQgMjQuNTcxOCAxNC40MTU5IDI0Ljc5OTcgMTQuMzQ0N0MyNC45NTMgMTQuMjk4MiAyNS4wOTgyIDE0LjI2MzUgMjUuMjYzNSAxNC4yMDc4QzI1Ljc4NiAxNC4wMTgyIDI2LjMyODMgMTMuOTExMiAyNi45MTA1IDEzLjc5NjVDMjcuMTE3IDEzLjc1NzEgMjcuMzMwMiAxMy43MTYzIDI3LjU2MDggMTMuNjU4NUMyNy43NTUzIDEzLjYxMSAyNy45NzM3IDEzLjU5NjkgMjguMjA4MiAxMy41NzYyQzI4LjM2NCAxMy41NjAzIDI4LjUxNzIgMTMuNTQ4MyAyOC42MzE4IDEzLjUzMzNDMjguNzg3NiAxMy41MTczIDI4LjkzNDIgMTMuNTA2NiAyOS4wOTI3IDEzLjQ4NjdDMjkuMzI4NSAxMy40NTU1IDI5LjU0NTYgMTMuNDM0NyAyOS43NDk0IDEzLjQzMzdDMzAuMDIzNyAxMy40NCAzMC4yOTk0IDEzLjQzNTcgMzAuNTc3NyAxMy40Mjc0QzMxLjA4MTEgMTMuNDIxIDMxLjU1NzkgMTMuNDE5NyAzMi4wMzE4IDEzLjQ5MTRDMzQuOTY2NCAxMy43MzUyIDM3LjcxNDQgMTQuNjA4NSA0MC4yMDUyIDE2Lj | 
					
						
							|  |  |  |                     /> | 
					
						
							|  |  |  |                   </div> | 
					
						
							|  |  |  |                 </div> | 
					
						
							|  |  |  |                 <div | 
					
						
							|  |  |  |                   class="c11" | 
					
						
							|  |  |  |                 > | 
					
						
							|  |  |  |                   <span | 
					
						
							|  |  |  |                     class="c12" | 
					
						
							|  |  |  |                     id="select-1-content" | 
					
						
							| 
									
										
										
										
											2021-09-14 15:28:55 +02:00
										 |  |  |                   > | 
					
						
							|  |  |  |                     Select... | 
					
						
							|  |  |  |                   </span> | 
					
						
							| 
									
										
										
										
											2021-09-10 06:43:06 +02:00
										 |  |  |                 </div> | 
					
						
							|  |  |  |               </div> | 
					
						
							|  |  |  |               <div | 
					
						
							|  |  |  |                 class="c6" | 
					
						
							|  |  |  |               > | 
					
						
							|  |  |  |                  | 
					
						
							|  |  |  |                 <button | 
					
						
							|  |  |  |                   aria-hidden="true" | 
					
						
							|  |  |  |                   class="c7 c13 c14" | 
					
						
							|  |  |  |                   tabindex="-1" | 
					
						
							| 
									
										
										
										
											2021-09-20 12:32:26 +02:00
										 |  |  |                   type="button" | 
					
						
							| 
									
										
										
										
											2021-09-10 06:43:06 +02:00
										 |  |  |                 > | 
					
						
							|  |  |  |                   <svg | 
					
						
							|  |  |  |                     fill="none" | 
					
						
							|  |  |  |                     height="1em" | 
					
						
							|  |  |  |                     viewBox="0 0 14 8" | 
					
						
							|  |  |  |                     width="1em" | 
					
						
							|  |  |  |                     xmlns="http://www.w3.org/2000/svg" | 
					
						
							|  |  |  |                   > | 
					
						
							|  |  |  |                     <path | 
					
						
							|  |  |  |                       clip-rule="evenodd" | 
					
						
							|  |  |  |                       d="M14 .889a.86.86 0 01-.26.625L7.615 7.736A.834.834 0 017 8a.834.834 0 01-.615-.264L.26 1.514A.861.861 0 010 .889c0-.24.087-.45.26-.625A.834.834 0 01.875 0h12.25c.237 0 .442.088.615.264a.86.86 0 01.26.625z" | 
					
						
							|  |  |  |                       fill="#32324D" | 
					
						
							|  |  |  |                       fill-rule="evenodd" | 
					
						
							|  |  |  |                     /> | 
					
						
							|  |  |  |                   </svg> | 
					
						
							|  |  |  |                 </button> | 
					
						
							|  |  |  |               </div> | 
					
						
							|  |  |  |             </div> | 
					
						
							|  |  |  |           </div> | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |     `);
 | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('only shows the locales that have not already been used', async () => { | 
					
						
							|  |  |  |     render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await waitFor(() => | 
					
						
							|  |  |  |       expect(screen.queryByText('Loading the available locales...')).not.toBeInTheDocument() | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     fireEvent.mouseDown(screen.getByLabelText('Locales')); | 
					
						
							|  |  |  |     await waitFor(() => screen.getByRole('listbox')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(screen.getByText('Afrikaans (af)')).toBeVisible(); | 
					
						
							|  |  |  |     expect(screen.getByText('French (fr)')).toBeVisible(); | 
					
						
							|  |  |  |     expect(screen.queryByText('English (en)')).toBeFalsy(); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   it('brings back an object of code and displayName keys when changing', async () => { | 
					
						
							|  |  |  |     const onLocaleChangeSpy = jest.fn(); | 
					
						
							|  |  |  |     render({ onLocaleChange: onLocaleChangeSpy }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     await waitFor(() => | 
					
						
							|  |  |  |       expect(screen.queryByText('Loading the available locales...')).not.toBeInTheDocument() | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     fireEvent.mouseDown(screen.getByLabelText('Locales')); | 
					
						
							|  |  |  |     await waitFor(() => screen.getByRole('listbox')); | 
					
						
							|  |  |  |     fireEvent.click(screen.getByText('French (fr)')); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     expect(onLocaleChangeSpy).toBeCalledWith({ code: 'fr', displayName: 'French (fr)' }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |