@ray-core/runtime
Version:
Ray 是一个全新的基于 React 的小程序开发框架
109 lines (108 loc) • 4.35 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var React = __importStar(require("react"));
var src_1 = require("../../src");
var hooks_1 = require("../hooks");
var createPageConfig_1 = require("../createPageConfig");
var Page_1 = __importDefault(require("./helpers/Page"));
var ALL_EVENTS_PAGE = 'pages/test/index';
var NO_APP_SHARE_AND_PAGE_SCROLL_PAGE = 'pages/test/only/onshow';
describe('page query hook', function () {
beforeEach(function () {
// mock mini program getApp api
var app = (0, src_1.createAppConfig)(undefined);
app.onLaunch();
// @ts-ignore
global.getApp = function () { return app; };
});
afterEach(function () {
(0, createPageConfig_1.resetPageId)();
// @ts-ignore
global.getApp = undefined;
});
it('useQuery will get the query from onLoad', function () {
function Page(config) {
return Object.assign(config, {
// eslint-disable-next-line @typescript-eslint/no-empty-function
setData: function () { },
});
}
var pageQuery = { id: 1 };
var receivedQuery;
var TestPage = function () {
var query = (0, hooks_1.useQuery)();
receivedQuery = query;
return React.createElement("div", null, query.id);
};
var page = Page((0, src_1.createPageConfig)(TestPage, ALL_EVENTS_PAGE));
page.onLoad(pageQuery);
expect(receivedQuery).toBe(pageQuery);
expect(receivedQuery.id).toBe(1);
page.onUnload();
});
it('create page id for each page instance', function () {
var TestPage = function () {
return React.createElement("div", null, "hello");
};
var page1 = (0, Page_1.default)((0, src_1.createPageConfig)(TestPage, ALL_EVENTS_PAGE));
var page2 = (0, Page_1.default)((0, src_1.createPageConfig)(TestPage, ALL_EVENTS_PAGE));
page1.load();
page2.load();
expect(page1.config.pageId).toBe('page_0');
expect(page2.config.pageId).toBe('page_1');
});
it('onPullDownRefresh can handle promise returned by callback', function (done) {
var TestPage = function () {
(0, src_1.usePageEvent)('onPullDownRefresh', function () {
return new Promise(function (resolve) {
resolve();
done();
});
});
return React.createElement("div", null);
};
var page = (0, Page_1.default)((0, src_1.createPageConfig)(TestPage, ALL_EVENTS_PAGE));
page.load();
page.pullDownRefresh();
});
it('register event correctly', function () {
var TestPage = function () {
return React.createElement("div", null);
};
var page = (0, Page_1.default)((0, src_1.createPageConfig)(TestPage, NO_APP_SHARE_AND_PAGE_SCROLL_PAGE));
page.load();
page.show();
expect(function () {
page.shareAppMessage();
}).toThrow();
expect(function () {
page.pageScroll();
}).toThrow();
});
});