unexpected-react icon indicating copy to clipboard operation
unexpected-react copied to clipboard

Can't use string argument on 'with event'

Open salomvary opened this issue 5 years ago • 2 comments

I was trying to use the shallow renderer to invoke a custom event handler with a string argument, eg. aliensLanded('thousand'). Tried this:


        it('calls events with string event parameter', () => {
            renderer.render(<ClickableComponent />);

            expect(renderer, 'with event', 'aliensLanded', 'thousand', 'to have rendered',
                <div>
                    <span className="main-click">Main clicked 1000</span>
                </div>);
        });

which did not work:

     UnexpectedError: 
Unknown assertion 'thousand', did you mean: 'on'

I understand telling the argument from the next assertion can be tricky if it's a string and the documentation clearly states that the argument has to be an object but custom "events" with non-object arguments are a real thing in my experience.

salomvary avatar Sep 24 '20 08:09 salomvary

Seems like using more than one argument is not supported either. How about adding <ReactElement> with event <string> <array> <assertion?> where array would be the arguments array of whatever types and not the first argument? For example:

        it('calls events with string event parameter', () => {
            renderer.render(<ClickableComponent />);

            expect(renderer, 'with event', 'aliensLanded', ['thousand', 'the second argument'], 'to have rendered',
                <div>
                    <span className="main-click">Main clicked 1000</span>
                </div>);
        });

would call aliensLanded('thousand', 'the second argument')

salomvary avatar Sep 24 '20 08:09 salomvary

That sounds like a really good idea to cover those cases. Should be trivial-ish to add.

bruderstein avatar Sep 24 '20 10:09 bruderstein