feat: byA11yValue matcher (#262)

This commit is contained in:
Kacper Wiszczuk
2020-03-18 10:42:20 +01:00
committed by GitHub
parent 960080d210
commit 9edcd16c72
5 changed files with 77 additions and 1 deletions
+34
View File
@@ -33,6 +33,7 @@ class Button extends React.Component<any> {
accessibilityRole={TEXT_ROLE}
accessibilityStates={['selected']}
accessibilityState={{ expanded: false, selected: true }}
accessibilityValue={{ min: 40, max: 60 }}
>
{this.props.children}
</Typography>
@@ -50,6 +51,7 @@ function Section() {
accessibilityRole={TEXT_ROLE}
accessibilityStates={['selected', 'disabled']}
accessibilityState={{ expanded: false }}
accessibilityValue={{ max: 60 }}
>
Title
</Typography>
@@ -202,3 +204,35 @@ test('getAllByA11yState, queryAllByA11yState', () => {
expect(getAllByA11yState({ expanded: false }).length).toEqual(2);
expect(queryAllByA11yState({ expanded: false }).length).toEqual(2);
});
test('getByA11yValue, queryByA11yValue', () => {
const { getByA11yValue, queryByA11yValue } = render(<Section />);
expect(getByA11yValue({ min: 40 }).props.accessibilityValue).toEqual({
min: 40,
max: 60,
});
expect(queryByA11yValue({ min: 40 })?.props.accessibilityValue).toEqual({
min: 40,
max: 60,
});
expect(() => getByA11yValue({ min: 50 })).toThrow(NO_INSTANCES_FOUND);
expect(queryByA11yValue({ min: 50 })).toEqual(null);
expect(() => getByA11yValue({ max: 60 })).toThrow(FOUND_TWO_INSTANCES);
expect(() => queryByA11yValue({ max: 60 })).toThrow(FOUND_TWO_INSTANCES);
});
test('getAllByA11yValue, queryAllByA11yValue', () => {
const { getAllByA11yValue, queryAllByA11yValue } = render(<Section />);
expect(getAllByA11yValue({ min: 40 }).length).toEqual(1);
expect(queryAllByA11yValue({ min: 40 }).length).toEqual(1);
expect(() => getAllByA11yValue({ min: 50 })).toThrow(NO_INSTANCES_FOUND);
expect(queryAllByA11yValue({ min: 50 })).toEqual([]);
expect(getAllByA11yValue({ max: 60 }).length).toEqual(2);
expect(queryAllByA11yValue({ max: 60 }).length).toEqual(2);
});
+17 -1
View File
@@ -1,6 +1,6 @@
// @flow
import makeQuery from './makeQuery';
import type { A11yRole, A11yStates, A11yState } from '../types.flow';
import type { A11yRole, A11yStates, A11yState, A11yValue } from '../types.flow';
type GetReturn = ReactTestInstance;
type GetAllReturn = Array<ReactTestInstance>;
@@ -37,6 +37,12 @@ type A11yAPI = {|
getAllByA11yState: A11yState => GetAllReturn,
queryByA11yState: A11yState => QueryReturn,
queryAllByA11yState: A11yState => QueryAllReturn,
// Value
getByA11yValue: A11yValue => GetReturn,
getAllByA11yValue: A11yValue => GetAllReturn,
queryByA11yValue: A11yValue => QueryReturn,
queryAllByA11yValue: A11yValue => QueryAllReturn,
|};
export function matchStringValue(
@@ -129,6 +135,16 @@ const a11yAPI = (instance: ReactTestInstance): A11yAPI =>
},
matchObject
)(instance),
...makeQuery(
'accessibilityValue',
{
getBy: ['getByA11yValue', 'getByAccessibilityValue'],
getAllBy: ['getAllByA11yValue', 'getAllByAccessibilityValue'],
queryBy: ['queryByA11yValue', 'queryByAccessibilityValue'],
queryAllBy: ['queryAllByA11yValue', 'queryAllByAccessibilityValue'],
},
matchObject
)(instance),
}: any);
export default a11yAPI;
+7
View File
@@ -46,3 +46,10 @@ export type A11yStates =
| 'expanded'
| 'collapsed'
| 'hasPopup';
export type A11yValue = {
min?: number,
max?: number,
now?: number,
text?: string,
};