Skip to content
This repository has been archived by the owner on Jul 30, 2018. It is now read-only.

Update for latest widget core #64

Merged
merged 1 commit into from
Sep 25, 2017
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
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,20 +27,20 @@
"test": "grunt test"
},
"peerDependencies": {
"@dojo/core": "beta2",
"@dojo/has": "beta2",
"@dojo/i18n": "beta2",
"@dojo/shim": "beta2",
"@dojo/widget-core": "beta2",
"@dojo/core": "next",
"@dojo/has": "next",
"@dojo/i18n": "next",
"@dojo/shim": "next",
"@dojo/widget-core": "next",
"intern": "^3.4.3"
},
"dependencies": {
"jsdom": "^10.0.0",
"pepjs": "^0.4.2"
},
"devDependencies": {
"@dojo/interfaces": "beta2",
"@dojo/loader": "beta2",
"@dojo/interfaces": "next",
"@dojo/loader": "next",
"@types/chai": "3.4.*",
"@types/glob": "5.0.*",
"@types/grunt": "0.4.*",
Expand Down
26 changes: 20 additions & 6 deletions src/harness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,20 @@ import Evented from '@dojo/core/Evented';
import { createHandle } from '@dojo/core/lang';
import { VNode } from '@dojo/interfaces/vdom';
import { includes } from '@dojo/shim/array';
import { ClassesFunction, Constructor, DNode, WidgetBaseInterface, WidgetProperties, WNode } from '@dojo/widget-core/interfaces';
import {
ClassesFunction,
Constructor,
DNode,
ProjectionOptions,
WidgetBaseInterface,
WidgetProperties,
WNode
} from '@dojo/widget-core/interfaces';
import { decorate, isWNode, v, w } from '@dojo/widget-core/d';
import WidgetBase, { afterRender } from '@dojo/widget-core/WidgetBase';
import WidgetBase from '@dojo/widget-core/WidgetBase';
import { afterRender } from '@dojo/widget-core/decorators/afterRender';
import cssTransitions from '@dojo/widget-core/animations/cssTransitions';
import { dom, Projection, ProjectionOptions, VNodeProperties } from 'maquette';
import { dom, Projection, VNodeProperties } from 'maquette';
import assertRender from './support/assertRender';
import callListener, { CallListenerOptions } from './support/callListener';
import sendEvent, { SendEventOptions } from './support/sendEvent';
Expand Down Expand Up @@ -181,14 +190,18 @@ class WidgetHarness<P extends WidgetProperties, W extends Constructor<WidgetBase
}
}

protected onElementCreated(element: HTMLElement, key: string) {
this._afterCreate(element);
}

/**
* Wrap the widget in a custom element
*/
render(): DNode {
const { _afterCreate: afterCreate, _id: id, _widgetConstructor, children, properties } = this;
const { _id: id, _widgetConstructor, children, properties } = this;
return v(
ROOT_CUSTOM_ELEMENT_NAME,
{ afterCreate, id },
{ id },
[ w(_widgetConstructor, properties, children) ]
);
}
Expand Down Expand Up @@ -269,7 +282,8 @@ export class Harness<P extends WidgetProperties, W extends Constructor<WidgetBas
this._projectionRoot = projectionRoot;
this._projectionOptions = {
transitions: cssTransitions,
eventHandlerInterceptor: this._eventHandlerInterceptor.bind(this._widgetHarness)
eventHandlerInterceptor: this._eventHandlerInterceptor.bind(this._widgetHarness),
nodeEvent: new Evented()
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A new projector options added for meta

};

this.own(this._widgetHarness);
Expand Down
2 changes: 1 addition & 1 deletion src/support/assertRender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ function throwAssertionError(actual: any, expected: any, message?: string): neve
*/
const defaultDiffOptions: DiffOptions = {
allowFunctionValues: true,
ignoreProperties: [ 'bind', 'defaultRegistry' ]
ignoreProperties: [ 'bind' ]
};

/**
Expand Down
5 changes: 3 additions & 2 deletions src/support/callListener.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export interface CallListenerOptions {
*/
export default function callListener(node: HNode | WNode, method: string, options: CallListenerOptions = {}): void {
const { args, index, key, target, thisArg } = options;
let resolvedTarget: { properties: { [prop: string]: any; } } | undefined;
let resolvedTarget: any;
if (target) {
resolvedTarget = target;
}
Expand All @@ -63,5 +63,6 @@ export default function callListener(node: HNode | WNode, method: string, option
if (!listener) {
throw new TypeError(`Cannot resolve listener: "${method}"`);
}
listener.apply(thisArg || resolvedTarget.properties.bind, args);
const bind = resolvedTarget.coreProperties ? resolvedTarget.coreProperties.bind : resolvedTarget.properties.bind;
Copy link
Member Author

@agubler agubler Sep 20, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bind is now on coreProperties for a WNode and properties for a HNode

listener.apply(thisArg || bind, args);
}
2 changes: 1 addition & 1 deletion tests/unit/harness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,7 @@ registerSuite({

'.getRender()'() {
const widget = harness(MockWidget);
assertRender(widget.getRender(), v('div.foo'));
assertRender(widget.getRender(), v('div.foo', { afterCreate: widget.listener, afterUpdate: widget.listener }));
widget.destroy();
},

Expand Down
17 changes: 4 additions & 13 deletions tests/unit/support/assertRender.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import AssertionError from '../../../src/support/AssertionError';
import assertRender from '../../../src/support/assertRender';
import { v, w } from '@dojo/widget-core/d';
import WidgetBase from '@dojo/widget-core/WidgetBase';
import { WidgetRegistry } from '@dojo/widget-core/WidgetRegistry';
import { HNode, WidgetProperties, WNode } from '@dojo/widget-core/interfaces';

interface MockWidgetProperties extends WidgetProperties {
Expand Down Expand Up @@ -85,15 +84,15 @@ registerSuite({

'function properties equal'() {
assertRender(
v('div', { afterCreate() { } }),
v('div', { afterCreate() { } })
v('div', { func() { } }),
v('div', { func() { } })
);
},

'unexpected function property'() {
assert.throws(() => {
assertRender(
v('div', { afterCreate() { } }),
v('div', { func() { } }),
v('div', { })
);
}, AssertionError, 'Render unexpected');
Expand All @@ -103,7 +102,7 @@ registerSuite({
assert.throws(() => {
assertRender(
v('div', { }),
v('div', { afterCreate() { } })
v('div', { func() { } })
);
}, AssertionError, 'Render unexpected');
},
Expand Down Expand Up @@ -353,14 +352,6 @@ registerSuite({
w(MockWidget, <any> { bind }),
w(MockWidget, { })
);
},

'defaultRegistry property ignored'() {
const defaultRegistry = new WidgetRegistry();
assertRender(
w(MockWidget, <any> { defaultRegistry }),
w(MockWidget, { })
);
}
},

Expand Down