Как я могу проверить метод, который удаляет элементы из списка? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть этот компонент, который получает добавленные элементы из кэша Apollo. У меня есть метод, который удаляет элемент из массива добавленных элементов, я изо всех сил пытаюсь написать тест для него .. Итак, ниже компонент, который я написал:

const GET_ADDED_ITEMS = gql`
  query GetAddedItems{
    addedItems @client {
      id
      name
    }
  }
`;

type Props = {
  offer?: Offer,
  render: RenderProps => any,
  client: ApolloClient<any>
};

class AddedItems extends React.Component<Props> {
  render() {
    const { offer, render } = this.props;

    const removeItem = (selectedItem) => {
      this.props.client.query({ query: GET_ADDED_ITEMS }).then(({ data = {} }) => {
        const { addedItems } = data;
        const newItems = [ ...addedItems ];
        newItems.splice(addedItems.findIndex(item => item === selectedItem, 1));

        this.props.client.writeData({
          data: {
            addedItems: newItems.map(item => ({
              ...item
            }))
          }
        });
      });
    }

    return (
      <Query query={GET_ADDED_ITEMS}>
        {({ data, loading }) => {
          if (loading) return null;
          const { addedItems } = data;

          return render({
            addedItems,
            removeItem
          });
        }}
      </Query>
    );
  }
}

export default withApollo(AddedItems);

Я хочу протестировать метод removeItem,У меня есть этот контекст ниже:

  it('removes an item', async () => {
    const { getByText, fireEvent } = render(
      <MockedProvider
        mocks={mocks}
        addTypename={false}
      >
        <AddedItems
          offer={offer}
          render={({ addedItems, removeItem }) => (
            <ItemSummaryContainer addedItems={addedItems} removeItem={removeItem}/>
          )}
        />
      </MockedProvider>
    );

    const addedItem = await waitForElement(() => getByText('Point of sale'));
    expect(addedItem).toBeVisible();

  });

Как я могу проверить метод removeItem? И я предполагаю, что добавленный элемент будет проверен как таковой expect(addedItem).toBeNull();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...