Skip to content

Add tests #23

Open
Open
@pke

Description

@pke

This project lacks some tests to verify the functionality.
Do you have any plans to add tests or would accept a PR?

Case in point:

export const setCustomText = customProps => {
  const TextRender = Text.render
  const initialDefaultProps = Text.defaultProps
  Text.defaultProps = {
    ...initialDefaultProps,
    ...customProps
  }
  Text.render = function render(props) {
    let oldProps = props
    props = { ...props, style: [customProps.style, props.style] }
    try {
      return TextRender.apply(this, arguments)
    } finally {
      props = oldProps
    }
  }
}

This code can not work. It calls TextRender.apply with the original arguments, it assigns new props ignoring the Text.defaultProps.style and then assigns the props back in the finally block to no effect.

Tests would discover this faulty behaviour.

A working version of the above code seems to be:

const setCustomText = (customProps) => {
  Text.defaultProps = {
    ...Text.defaultProps,
    ...customProps,
  }
  const orgRender = Text.render
  Text.render = function render(props:TextProps, ref:Ref<Text>) {
    const style = Array.isArray(props.style) ? props.style : [props.style]
    props = {
      ...props,
      style: [Text.defaultProps.style, ...style],
    }
    return orgRender.call(this, props, ref)
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions