Skip to content

Adding mouseOut and mouseOver native events #42

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 3, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions lib/react_test_utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ JsObject _TestUtils = _getNestedJsObject(

JsObject _Simulate = _TestUtils['Simulate'];

JsObject _SimulateNative = _TestUtils['SimulateNative'];

_getNestedJsObject(
JsObject base, List<String> keys, [String errorIfNotFound='']) {
JsObject object = base;
Expand Down Expand Up @@ -150,6 +152,112 @@ class Simulate {

}

/// Native event simulation interface.
///
/// Current implementation does not support change and keyPress native events
///
/// Provides methods for each type of event that can be handled by a React
/// component. All methods are used in the same way:
///
/// SimulateNative.{eventName}([JsObject] element, [Map] eventData)

class SimulateNative {

static void blur(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('blur', [element, new JsObject.jsify(eventData)]);

static void click(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('click', [element, new JsObject.jsify(eventData)]);

static void contextMenu(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('contextMenu', [element, new JsObject.jsify(eventData)]);

static void copy(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('copy', [element, new JsObject.jsify(eventData)]);

static void cut(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('cut', [element, new JsObject.jsify(eventData)]);

static void doubleClick(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('doubleClick', [element, new JsObject.jsify(eventData)]);

static void drag(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('drag', [element, new JsObject.jsify(eventData)]);

static void dragEnd(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('dragEnd', [element, new JsObject.jsify(eventData)]);

static void dragEnter(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('dragEnter', [element, new JsObject.jsify(eventData)]);

static void dragExit(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('dragExit', [element, new JsObject.jsify(eventData)]);

static void dragLeave(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('dragLeave', [element, new JsObject.jsify(eventData)]);

static void dragOver(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('dragOver', [element, new JsObject.jsify(eventData)]);

static void dragStart(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('dragStart', [element, new JsObject.jsify(eventData)]);

static void drop(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('drop', [element, new JsObject.jsify(eventData)]);

static void focus(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('focus', [element, new JsObject.jsify(eventData)]);

static void input(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('input', [element, new JsObject.jsify(eventData)]);

static void keyDown(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('keyDown', [element, new JsObject.jsify(eventData)]);

static void keyUp(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('keyUp', [element, new JsObject.jsify(eventData)]);

static void mouseDown(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('mouseDown', [element, new JsObject.jsify(eventData)]);

static void mouseMove(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('mouseMove', [element, new JsObject.jsify(eventData)]);

static void mouseOut(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('mouseOut', [element, new JsObject.jsify(eventData)]);

static void mouseOver(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('mouseOver', [element, new JsObject.jsify(eventData)]);

static void mouseUp(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('mouseUp', [element, new JsObject.jsify(eventData)]);

static void paste(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('paste', [element, new JsObject.jsify(eventData)]);

static void scroll(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('scroll', [element, new JsObject.jsify(eventData)]);

static void submit(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('submit', [element, new JsObject.jsify(eventData)]);

static void touchCancel(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('touchCancel', [element, new JsObject.jsify(eventData)]);

static void touchEnd(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('touchEnd', [element, new JsObject.jsify(eventData)]);

static void touchMove(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('touchMove', [element, new JsObject.jsify(eventData)]);

static void touchStart(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('touchStart', [element, new JsObject.jsify(eventData)]);

static void wheel(JsObject element, [Map eventData = const{}]) =>
_SimulateNative.callMethod('wheel', [element, new JsObject.jsify(eventData)]);

}

/// Traverse all components in tree and accumulate all components where
/// test(component) is true. This is not that useful on its own, but it's
/// used as a primitive for other test utils
Expand Down
38 changes: 38 additions & 0 deletions test/react_test_utils_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,44 @@ void main() {
test('wheel', () => testEvent(Simulate.wheel, 'wheel'));
});

group('Simulate native event', () {
tearDown(() {
component = null;
domNode = null;
});

test('blur', () => testEvent(SimulateNative.blur, 'blur'));
test('click', () => testEvent(SimulateNative.click, 'click'));
test('copy', () => testEvent(SimulateNative.copy, 'copy'));
test('cut', () => testEvent(SimulateNative.cut, 'cut'));
test('doubleClick', () => testEvent(SimulateNative.doubleClick, 'doubleClick'));
test('drag', () => testEvent(SimulateNative.drag, 'drag'));
test('dragEnd', () => testEvent(SimulateNative.dragEnd, 'dragEnd'));
test('dragEnter', () => testEvent(SimulateNative.dragEnter, 'dragEnter'));
test('dragExit', () => testEvent(SimulateNative.dragExit, 'dragExit'));
test('dragLeave', () => testEvent(SimulateNative.dragLeave, 'dragLeave'));
test('dragOver', () => testEvent(SimulateNative.dragOver, 'dragOver'));
test('dragStart', () => testEvent(SimulateNative.dragStart, 'dragStart'));
test('drop', () => testEvent(SimulateNative.drop, 'drop'));
test('focus', () => testEvent(SimulateNative.focus, 'focus'));
test('input', () => testEvent(SimulateNative.input, 'input'));
test('keyDown', () => testEvent(SimulateNative.keyDown, 'keyDown'));
test('keyUp', () => testEvent(SimulateNative.keyUp, 'keyUp'));
test('mouseDown', () => testEvent(SimulateNative.mouseDown, 'mouseDown'));
test('mouseMove', () => testEvent(SimulateNative.mouseMove, 'mouseMove'));
test('mouseOut', () => testEvent(SimulateNative.mouseOut, 'mouseOut'));
test('mouseOver', () => testEvent(SimulateNative.mouseOver, 'mouseOver'));
test('mouseUp', () => testEvent(SimulateNative.mouseUp, 'mouseUp'));
test('paste', () => testEvent(SimulateNative.paste, 'paste'));
test('scroll', () => testEvent(SimulateNative.scroll, 'scroll'));
test('submit', () => testEvent(SimulateNative.submit, 'submit'));
test('touchCancel', () => testEvent(SimulateNative.touchCancel, 'touchCancel'));
test('touchEnd', () => testEvent(SimulateNative.touchEnd, 'touchEnd'));
test('touchMove', () => testEvent(SimulateNative.touchMove, 'touchMove'));
test('touchStart', () => testEvent(SimulateNative.touchStart, 'touchStart'));
test('wheel', () => testEvent(SimulateNative.wheel, 'wheel'));
});

test('findRenderedDOMComponentWithClass', () {
component = renderIntoDocument(sampleComponent({}));
var spanComponent = findRenderedDOMComponentWithClass(component, 'span1');
Expand Down