import pytest from thefuck.rules.react_native_command_unrecognized import match, \ get_new_command from tests.utils import Command stderr = 'Command `{}` unrecognized'.format stdout = ''' Usage: react-native Commands: - start: starts the webserver - bundle: builds the javascript bundle for offline use - unbundle: builds javascript as "unbundle" for offline use - new-library: generates a native library bridge - android: generates an Android project for your app - run-android: builds your app and starts it on a connected Android emulator or device - log-android: print Android logs - run-ios: builds your app and starts it on iOS simulator - log-ios: print iOS logs - upgrade: upgrade your app's template files to the latest version; run this after updating the react-native version in your package.json and running npm install - link: link a library ''' @pytest.mark.parametrize('command', [ Command('react-native star', stderr=stderr('star')), Command('react-native android-logs', stderr=stderr('android-logs'))]) def test_match(command): assert match(command) @pytest.mark.parametrize('command', [ Command('gradle star', stderr=stderr('star')), Command('react-native start')]) def test_not_match(command): assert not match(command) @pytest.mark.parametrize('command, result', [ (Command('react-native star', stdout, stderr('star')), 'react-native start'), (Command('react-native logsandroid -f', stdout, stderr('logsandroid')), 'react-native log-android -f')]) def test_get_new_command(command, result): assert get_new_command(command)[0] == result