acdlite/recompose

View on GitHub
src/packages/recompose/__tests__/types/test_fromRenderProps.js

Summary

Maintainability
A
0 mins
Test Coverage
/* @flow */
import React from 'react'
import { compose, fromRenderProps } from '../..'

import type { HOC } from '../..'

const RenderPropsComponent1 = ({ children }) => children({ theme: 'dark' })
const RenderPropsComponent2 = ({ render }) => render({ i18n: 'zh-TW' })
const RenderPropsComponent3 = ({ children }) =>
  children({ theme: 'dark' }, { data: 'data' })

type EnhancedCompProps = {||}

const Comp = ({ i18n, theme, data }) =>
  <div>
    {i18n}
    {theme}
    {data}
    {
      // $ExpectError
      (i18n: number)
    }
    {
      // $ExpectError
      (theme: number)
    }
    {
      // $ExpectError
      (data: number)
    }
  </div>

const enhancer: HOC<*, EnhancedCompProps> = compose(
  fromRenderProps(RenderPropsComponent1, props => ({
    theme: props.theme,
    // $ExpectError property not found
    err: props.iMNotExists,
  })),
  fromRenderProps(
    RenderPropsComponent2,
    props => ({
      i18n: props.i18n,
      // $ExpectError property not found
      err: props.iMNotExists,
    }),
    'render'
  ),
  fromRenderProps(RenderPropsComponent3, (props, data) => ({
    theme: props.theme,
    data: data.data,
    // $ExpectError property not found
    err: data.iMNotExists,
  }))
)

const EnhancedComponent = enhancer(Comp)