mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 11:42:04 +08:00
Test + additional fixes
This commit is contained in:
@ -28,6 +28,9 @@ import stackLayoutModule = require("ui/layouts/stack-layout");
|
|||||||
import helper = require("../helper");
|
import helper = require("../helper");
|
||||||
import view = require("ui/core/view");
|
import view = require("ui/core/view");
|
||||||
import observable = require("data/observable");
|
import observable = require("data/observable");
|
||||||
|
import {Page, ShownModallyData} from "ui/page";
|
||||||
|
import {Label} from "ui/label";
|
||||||
|
import {EventData} from "data/observable";
|
||||||
|
|
||||||
export function addLabelToPage(page: PageModule.Page, text?: string) {
|
export function addLabelToPage(page: PageModule.Page, text?: string) {
|
||||||
var label = new LabelModule.Label();
|
var label = new LabelModule.Label();
|
||||||
@ -440,6 +443,76 @@ export function test_WhenNavigatingForwardAndBack_IsBackNavigationIsCorrect() {
|
|||||||
helper.goBack();
|
helper.goBack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function test_WhenPageIsNavigatedToItCanShowAnotherPageAsModal() {
|
||||||
|
var masterPage;
|
||||||
|
var ctx = {
|
||||||
|
shownModally: false
|
||||||
|
};
|
||||||
|
|
||||||
|
var modalClosed = false;
|
||||||
|
var modalCloseCallback = function (returnValue: any) {
|
||||||
|
TKUnit.assertTrue(ctx.shownModally, "Modal-page must be shown!");
|
||||||
|
TKUnit.assertEqual(returnValue, "return value", "Modal-page must return value!");
|
||||||
|
modalClosed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
let modalPage: Page;
|
||||||
|
|
||||||
|
let shownModally = 0;
|
||||||
|
var onShownModal = function (args: ShownModallyData) {
|
||||||
|
shownModally++;
|
||||||
|
modalPage.off(Page.shownModallyEvent, onShownModal);
|
||||||
|
}
|
||||||
|
|
||||||
|
let modalLoaded = 0;
|
||||||
|
var onModalLoaded = function (args: EventData) {
|
||||||
|
modalLoaded++;
|
||||||
|
modalPage.off(Page.loadedEvent, onModalLoaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
let modalUnloaded = 0;
|
||||||
|
var onModalUnloaded = function (args: EventData) {
|
||||||
|
modalUnloaded++;
|
||||||
|
modalPage.off(Page.unloadedEvent, onModalUnloaded);
|
||||||
|
TKUnit.assertNull(masterPage.modal, "currentPage.modal should be undefined when no modal page is shown!");
|
||||||
|
}
|
||||||
|
|
||||||
|
var navigatedToEventHandler = function (args) {
|
||||||
|
let page = <Page>args.object;
|
||||||
|
TKUnit.assertNull(page.modal, "currentPage.modal should be undefined when no modal page is shown!");
|
||||||
|
let basePath = "ui/page/";
|
||||||
|
modalPage = page.showModal(basePath + "modal-page", ctx, modalCloseCallback, false);
|
||||||
|
TKUnit.assertTrue((<any>modalPage).showingModally, "showingModally");
|
||||||
|
modalPage.on(Page.shownModallyEvent, onShownModal);
|
||||||
|
modalPage.on(Page.loadedEvent, onModalLoaded);
|
||||||
|
modalPage.on(Page.unloadedEvent, onModalUnloaded);
|
||||||
|
};
|
||||||
|
|
||||||
|
var masterPageFactory = function (): Page {
|
||||||
|
masterPage = new Page();
|
||||||
|
masterPage.id = "newPage";
|
||||||
|
masterPage.on(Page.navigatedToEvent, navigatedToEventHandler);
|
||||||
|
var label = new Label();
|
||||||
|
label.text = "Text";
|
||||||
|
masterPage.content = label;
|
||||||
|
return masterPage;
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
helper.navigate(masterPageFactory);
|
||||||
|
|
||||||
|
TKUnit.waitUntilReady(() => { return modalUnloaded > 0; });
|
||||||
|
TKUnit.assertEqual(shownModally, 1, "shownModally");
|
||||||
|
TKUnit.assertEqual(modalLoaded, 1, "modalLoaded");
|
||||||
|
TKUnit.assertEqual(modalUnloaded, 1, "modalUnloaded");
|
||||||
|
|
||||||
|
masterPage.off(Page.navigatedToEvent, navigatedToEventHandler);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
helper.goBack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//export function test_ModalPage_Layout_is_Correct() {
|
//export function test_ModalPage_Layout_is_Correct() {
|
||||||
// var testPage: PageModule.Page;
|
// var testPage: PageModule.Page;
|
||||||
// var label: LabelModule.Label;
|
// var label: LabelModule.Label;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import PageTestCommon = require("./page-tests-common");
|
import PageTestCommon = require("./page-tests-common");
|
||||||
import {Page, ShownModallyData} from "ui/page";
|
import {Page} from "ui/page";
|
||||||
import TKUnit = require("../../TKUnit");
|
import TKUnit = require("../../TKUnit");
|
||||||
import {Label} from "ui/label";
|
import {Label} from "ui/label";
|
||||||
import helper = require("../helper");
|
import helper = require("../helper");
|
||||||
@ -27,76 +27,6 @@ export function test_NavigateToNewPage_InnerControl() {
|
|||||||
TKUnit.assertFalse(label.isLoaded, "label.isLoaded should become false after navigating back");
|
TKUnit.assertFalse(label.isLoaded, "label.isLoaded should become false after navigating back");
|
||||||
}
|
}
|
||||||
|
|
||||||
export function test_WhenPageIsNavigatedToItCanShowAnotherPageAsModal() {
|
|
||||||
var masterPage;
|
|
||||||
var ctx = {
|
|
||||||
shownModally: false
|
|
||||||
};
|
|
||||||
|
|
||||||
var modalClosed = false;
|
|
||||||
var modalCloseCallback = function (returnValue: any) {
|
|
||||||
TKUnit.assertTrue(ctx.shownModally, "Modal-page must be shown!");
|
|
||||||
TKUnit.assertEqual(returnValue, "return value", "Modal-page must return value!");
|
|
||||||
modalClosed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
let modalPage: Page;
|
|
||||||
|
|
||||||
let shownModally = 0;
|
|
||||||
var onShownModal = function (args: ShownModallyData) {
|
|
||||||
shownModally++;
|
|
||||||
modalPage.off(Page.shownModallyEvent, onShownModal);
|
|
||||||
}
|
|
||||||
|
|
||||||
let modalLoaded = 0;
|
|
||||||
var onModalLoaded = function (args: EventData) {
|
|
||||||
modalLoaded++;
|
|
||||||
modalPage.off(Page.loadedEvent, onModalLoaded);
|
|
||||||
}
|
|
||||||
|
|
||||||
let modalUnloaded = 0;
|
|
||||||
var onModalUnloaded = function (args: EventData) {
|
|
||||||
modalUnloaded++;
|
|
||||||
modalPage.off(Page.unloadedEvent, onModalUnloaded);
|
|
||||||
TKUnit.assertNull(masterPage.modal, "currentPage.modal should be undefined when no modal page is shown!");
|
|
||||||
}
|
|
||||||
|
|
||||||
var navigatedToEventHandler = function (args) {
|
|
||||||
let page = <Page>args.object;
|
|
||||||
TKUnit.assertNull(page.modal, "currentPage.modal should be undefined when no modal page is shown!");
|
|
||||||
let basePath = "ui/page/";
|
|
||||||
modalPage = page.showModal(basePath + "modal-page", ctx, modalCloseCallback, false);
|
|
||||||
TKUnit.assertTrue((<any>modalPage).showingModally, "showingModally");
|
|
||||||
modalPage.on(Page.shownModallyEvent, onShownModal);
|
|
||||||
modalPage.on(Page.loadedEvent, onModalLoaded);
|
|
||||||
modalPage.on(Page.unloadedEvent, onModalUnloaded);
|
|
||||||
};
|
|
||||||
|
|
||||||
var masterPageFactory = function (): Page {
|
|
||||||
masterPage = new Page();
|
|
||||||
masterPage.id = "newPage";
|
|
||||||
masterPage.on(Page.navigatedToEvent, navigatedToEventHandler);
|
|
||||||
var label = new Label();
|
|
||||||
label.text = "Text";
|
|
||||||
masterPage.content = label;
|
|
||||||
return masterPage;
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
|
||||||
helper.navigate(masterPageFactory);
|
|
||||||
|
|
||||||
TKUnit.waitUntilReady(() => { return modalUnloaded > 0; });
|
|
||||||
TKUnit.assertEqual(shownModally, 1, "shownModally");
|
|
||||||
TKUnit.assertEqual(modalLoaded, 1,"modalLoaded");
|
|
||||||
TKUnit.assertEqual(modalUnloaded,1 , "modalUnloaded");
|
|
||||||
|
|
||||||
masterPage.off(Page.navigatedToEvent, navigatedToEventHandler);
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
helper.goBack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function test_WhenShowingModalPageUnloadedIsNotFiredForTheMasterPage() {
|
export function test_WhenShowingModalPageUnloadedIsNotFiredForTheMasterPage() {
|
||||||
let masterPage: Page;
|
let masterPage: Page;
|
||||||
let masterPageUnloaded = false;
|
let masterPageUnloaded = false;
|
||||||
|
@ -68,8 +68,23 @@ function ensureDialogFragmentClass() {
|
|||||||
|
|
||||||
public onStart() {
|
public onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
|
if (!this._owner.isLoaded) {
|
||||||
|
this._owner.onLoaded();
|
||||||
|
}
|
||||||
this._shownCallback();
|
this._shownCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public onDestroyView() {
|
||||||
|
super.onDestroyView();
|
||||||
|
|
||||||
|
if (this._owner.isLoaded) {
|
||||||
|
this._owner.onUnloaded();
|
||||||
|
}
|
||||||
|
|
||||||
|
this._owner._isAddedToNativeVisualTree = false;
|
||||||
|
this._owner._onDetached(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public onDismiss(dialog: android.content.IDialogInterface) {
|
public onDismiss(dialog: android.content.IDialogInterface) {
|
||||||
super.onDismiss(dialog);
|
super.onDismiss(dialog);
|
||||||
@ -150,11 +165,10 @@ export class Page extends pageCommon.Page {
|
|||||||
|
|
||||||
this._onAttached(parent._context);
|
this._onAttached(parent._context);
|
||||||
this._isAddedToNativeVisualTree = true;
|
this._isAddedToNativeVisualTree = true;
|
||||||
this.onLoaded();
|
|
||||||
|
|
||||||
ensureDialogFragmentClass();
|
ensureDialogFragmentClass();
|
||||||
|
|
||||||
this._dialogFragment = new DialogFragmentClass(this, !!fullscreen, () => this._raiseShownModallyEvent, () => this.closeModal());
|
this._dialogFragment = new DialogFragmentClass(this, !!fullscreen, () => this._raiseShownModallyEvent(), () => this.closeModal());
|
||||||
|
|
||||||
super._raiseShowingModallyEvent();
|
super._raiseShowingModallyEvent();
|
||||||
|
|
||||||
@ -165,9 +179,6 @@ export class Page extends pageCommon.Page {
|
|||||||
this._dialogFragment.dismissAllowingStateLoss();
|
this._dialogFragment.dismissAllowingStateLoss();
|
||||||
this._dialogFragment = null;
|
this._dialogFragment = null;
|
||||||
|
|
||||||
this.onUnloaded();
|
|
||||||
this._isAddedToNativeVisualTree = false;
|
|
||||||
this._onDetached(true);
|
|
||||||
parent._modal = undefined;
|
parent._modal = undefined;
|
||||||
|
|
||||||
super._hideNativeModalView(parent);
|
super._hideNativeModalView(parent);
|
||||||
|
Reference in New Issue
Block a user