Я работаю над компонентом, который помогает мне управлять ролями пользователей. В зависимости от роли я хочу контролировать то, что показывает приложение. Я передаю разрешения компоненту UserAccess
, и если значение из хранилища включает это разрешение, оно покажет другой компонент. Также я хочу проверить, получает ли компонент правильное значение от mapStateToProps
.
Компонент:
export function UserAccess({ userRoles, permission, ...props }: any) {
if (userRoles.includes(permission)) {
return props.children
}
return ''
}
function mapStateToProps(state: any) {
return {
userRoles: state.roles ? state.roles : []
}
}
export default connect(mapStateToProps)(UserAccess)
Использование:
<UserAccess permission={'admin'}>Some component</UserAccess>
Тест:
const mockStore = configureStore();
const store = mockStore({roles: "admin"})
it("should map state to props", () => {
const wrapper = mount(<Provider store={store} ><UserAccess ></UserAccess></Provider>)
expect(wrapper.find(UserAccess).prop('userRoles')).toBe('admin');
})