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

Commit

Permalink
Update for latest widget core
Browse files Browse the repository at this point in the history
  • Loading branch information
agubler committed Sep 22, 2017
1 parent 53de4b1 commit a77f412
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 30 deletions.
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()
};

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;
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

0 comments on commit a77f412

Please sign in to comment.