-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: MM-58164 Search text is behind the textbox while searching (#8026)
* fix: MM-58164 search text hides behind textbox * clean up unit test for useCollapsibleHeader * simplify math * unlock doesn't need to use useCallback as it doesn't have any deps * revert changes on unlock * using lockValue & headerOffset directly into children props * disable scrolling to prevent scrollValue from being updated * properly snapping flatlist to the proper spot in a few scenarios --------- Co-authored-by: Mattermost Build <[email protected]>
- Loading branch information
1 parent
2e46f6c
commit 00e05d5
Showing
5 changed files
with
126 additions
and
36 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. | ||
// See LICENSE.txt for license information. | ||
import {renderHook} from '@testing-library/react-hooks'; | ||
import {act} from '@testing-library/react-native'; | ||
|
||
import ViewConstants from '@constants/view'; | ||
|
||
import * as DeviceFunctions from './device'; | ||
import {useCollapsibleHeader} from './header'; | ||
|
||
const LARGE_HEADER_TITLE_HEIGHT = 128; | ||
const HEADER_OFFSET = LARGE_HEADER_TITLE_HEIGHT - ViewConstants.DEFAULT_HEADER_HEIGHT; | ||
|
||
describe('useCollapsibleHeader', () => { | ||
afterEach(() => { | ||
jest.resetAllMocks(); | ||
}); | ||
|
||
const commonHookResponse = { | ||
largeHeight: LARGE_HEADER_TITLE_HEIGHT, | ||
scrollRef: {current: null}, | ||
scrollValue: {value: 0}, | ||
onScroll: expect.any(Function), | ||
hideHeader: expect.any(Function), | ||
lockValue: 0, | ||
unlock: expect.any(Function), | ||
headerOffset: HEADER_OFFSET, | ||
scrollEnabled: {value: true}, | ||
setAutoScroll: expect.any(Function), | ||
}; | ||
|
||
it('should return the correct values with isLargeTitle is true', () => { | ||
const {result} = renderHook(() => useCollapsibleHeader(true)); | ||
|
||
expect(result.current).toEqual({ | ||
defaultHeight: ViewConstants.DEFAULT_HEADER_HEIGHT, | ||
scrollPaddingTop: LARGE_HEADER_TITLE_HEIGHT, | ||
headerHeight: {value: LARGE_HEADER_TITLE_HEIGHT}, | ||
...commonHookResponse, | ||
}); | ||
}); | ||
|
||
it('should return the correct values with isLargeTitle is false', () => { | ||
const {result} = renderHook(() => useCollapsibleHeader(false)); | ||
|
||
expect(result.current).toEqual({ | ||
defaultHeight: ViewConstants.DEFAULT_HEADER_HEIGHT, | ||
scrollPaddingTop: ViewConstants.DEFAULT_HEADER_HEIGHT, | ||
headerHeight: {value: ViewConstants.DEFAULT_HEADER_HEIGHT}, | ||
...commonHookResponse, | ||
}); | ||
}); | ||
|
||
it('should return the correct values with isLargeTitle is true, and on a tablet', () => { | ||
jest.spyOn(DeviceFunctions, 'useIsTablet').mockReturnValue(true); | ||
|
||
const {result} = renderHook(() => useCollapsibleHeader(true)); | ||
|
||
expect(result.current).toEqual({ | ||
defaultHeight: ViewConstants.TABLET_HEADER_HEIGHT, | ||
scrollPaddingTop: LARGE_HEADER_TITLE_HEIGHT, | ||
headerHeight: {value: LARGE_HEADER_TITLE_HEIGHT}, | ||
...commonHookResponse, | ||
}); | ||
}); | ||
|
||
it('should change the lock value when hideHeader is called', () => { | ||
const {result} = renderHook(() => useCollapsibleHeader(true)); | ||
|
||
expect(result.current.lockValue).toBe(0); | ||
|
||
act(() => result.current.hideHeader(true)); | ||
|
||
expect(result.current.lockValue).toBe(ViewConstants.DEFAULT_HEADER_HEIGHT); | ||
}); | ||
|
||
it('should reset the lockValue when unlock is called', () => { | ||
const {result} = renderHook(() => useCollapsibleHeader(true)); | ||
|
||
act(() => result.current.hideHeader(true)); | ||
|
||
expect(result.current.lockValue).toBe(ViewConstants.DEFAULT_HEADER_HEIGHT); | ||
|
||
act(() => result.current.unlock()); | ||
|
||
expect(result.current.lockValue).toBe(0); | ||
}); | ||
}); |
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