11import * as TKUnit from "../../TKUnit" ;
22import * as helper from "../helper" ;
3- import { Label } from "tns-core-modules/ui/label" ;
4- import { StackLayout } from "tns-core-modules/ui/layouts/stack-layout" ;
3+ import { Label } from "tns-core-modules/ui/label" ;
4+ import { StackLayout } from "tns-core-modules/ui/layouts/stack-layout" ;
55import * as frameModule from "tns-core-modules/ui/frame" ;
6- import { Page } from "tns-core-modules/ui/page" ;
7- import { ListView , ItemEventData } from "tns-core-modules/ui/list-view" ;
8- import { TabView , TabViewItem } from "tns-core-modules/ui/tab-view" ;
9- import { Button } from "tns-core-modules/ui/button" ;
6+ import { Page } from "tns-core-modules/ui/page" ;
7+ import { ListView , ItemEventData } from "tns-core-modules/ui/list-view" ;
8+ import { TabView , TabViewItem } from "tns-core-modules/ui/tab-view" ;
9+ import { Button } from "tns-core-modules/ui/button" ;
1010
1111var ASYNC = 2 ;
1212
@@ -96,7 +96,7 @@ export function testWhenNavigatingBackToANonCachedPageContainingATabViewWithALis
9696 tabViewitem . title = "About" ;
9797 tabViewitem . view = aboutLayout ;
9898 items . push ( tabViewitem ) ;
99-
99+
100100 tabView . items = items ;
101101
102102 tabViewPage = new Page ( ) ;
@@ -114,13 +114,12 @@ export function testWhenNavigatingBackToANonCachedPageContainingATabViewWithALis
114114
115115 // This will navigate to a details page. The wait is inside the method.
116116 _clickTheFirstButtonInTheListViewNatively ( tabView ) ;
117- TKUnit . waitUntilReady ( ( ) => topFrame . currentPage . id === "details-page" ) ;
118117
119118 frameModule . goBack ( ) ;
120- TKUnit . waitUntilReady ( ( ) => topFrame . currentPage === tabViewPage ) ;
121- TKUnit . waitUntilReady ( ( ) => tabViewIsFullyLoaded ( tabView ) ) ;
119+ TKUnit . waitUntilReady ( ( ) => topFrame . navigationQueueIsEmpty ( ) ) ; //() => topFrame.currentPage === tabViewPage);
122120
123121 frameModule . goBack ( ) ;
122+
124123 TKUnit . waitUntilReady ( ( ) => topFrame . currentPage === rootPage ) ;
125124
126125 if ( topFrame . android ) {
@@ -130,23 +129,14 @@ export function testWhenNavigatingBackToANonCachedPageContainingATabViewWithALis
130129 TKUnit . assert ( tabView . items [ 0 ] . view instanceof ListView , "ListView should be created when navigating back to the main page." ) ;
131130}
132131
133- export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack_NoPageCaching ( ) {
134- testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack ( false ) ;
135- }
136-
137- export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack_WithPageCaching ( ) {
138- testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack ( true ) ;
139- }
140-
141132function tabViewIsFullyLoaded ( tabView : TabView ) : boolean {
142133 if ( ! tabView . isLoaded ) {
143134 return false ;
144135 }
145136
146- for ( var i = 0 ; i < tabView . items . length ; i ++ ) {
147- if ( ! tabView . items [ i ] . view . isLoaded ) {
148- return false ;
149- }
137+ const i = tabView . selectedIndex ;
138+ if ( i >= 0 && ! tabView . items [ i ] . isLoaded ) {
139+ return false ;
150140 }
151141
152142 if ( tabView . android ) {
@@ -159,33 +149,17 @@ function tabViewIsFullyLoaded(tabView: TabView): boolean {
159149 return true ;
160150}
161151
162- function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack ( enablePageCache : boolean ) {
152+ export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack ( ) {
163153 let topFrame = frameModule . topmost ( ) ;
164154 let rootPage = helper . getCurrentPage ( ) ;
165155
166- let oldChache ;
167- if ( topFrame . android ) {
168- oldChache = topFrame . android . cachePagesOnNavigate ;
169- topFrame . android . cachePagesOnNavigate = enablePageCache ;
170- }
171-
172156 let itemCount = 2 ;
173157 let loadedEventsCount = [ 0 , 0 ] ;
174158 let unloadedEventsCount = [ 0 , 0 ] ;
175159
176- let tabView = _createTabView ( ) ;
160+ const tabView = _createTabView ( ) ;
177161 tabView . items = _createItems ( itemCount ) ;
178162
179- let tabViewPage : Page ;
180- helper . navigateWithHistory ( ( ) => {
181- tabViewPage = new Page ( ) ;
182- tabViewPage . content = tabView ;
183- return tabViewPage ;
184- } ) ;
185-
186- TKUnit . waitUntilReady ( ( ) => topFrame . currentPage === tabViewPage , ASYNC ) ;
187- TKUnit . waitUntilReady ( ( ) => tabViewIsFullyLoaded ( tabView ) , ASYNC ) ;
188-
189163 function createLoadedFor ( tabIndex : number ) {
190164 return function ( ) {
191165 loadedEventsCount [ tabIndex ] = loadedEventsCount [ tabIndex ] + 1 ;
@@ -198,43 +172,37 @@ function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack(enablePageCache
198172 }
199173 }
200174
201- for ( let i = 0 ; i < itemCount ; i ++ ) {
202- tabView . items [ i ] . view . on ( "loaded" , createLoadedFor ( i ) ) ;
203- tabView . items [ i ] . view . on ( "unloaded" , createUnloadedFor ( i ) ) ;
204- }
205-
206- let detailsPage = new Page ( ) ;
207-
208- let createFunc = ( ) => {
209- return detailsPage ;
210- } ;
175+ tabView . items . forEach ( ( item , i ) => {
176+ item . view . on ( "loaded" , createLoadedFor ( i ) ) ;
177+ item . view . on ( "unloaded" , createUnloadedFor ( i ) ) ;
178+ } ) ;
211179
212- let entry : frameModule . NavigationEntry = { create : createFunc , animated : false } ;
213- topFrame . navigate ( entry ) ;
180+ const tabViewPage = new Page ( ) ;
181+ helper . navigateWithHistory ( ( ) => {
182+ tabViewPage . content = tabView ;
183+ return tabViewPage ;
184+ } ) ;
185+ TKUnit . waitUntilReady ( ( ) => tabViewIsFullyLoaded ( tabView ) , ASYNC ) ;
214186
215- TKUnit . waitUntilReady ( ( ) => topFrame . currentPage === detailsPage ) ;
187+ const detailsPage = new Page ( ) ;
188+ helper . navigateWithHistory ( ( ) => detailsPage ) ;
189+ TKUnit . assertEqual ( topFrame . currentPage , detailsPage ) ;
216190
217- topFrame . goBack ( ) ;
218- TKUnit . waitUntilReady ( ( ) => topFrame . currentPage === tabViewPage ) ;
219- TKUnit . waitUntilReady ( ( ) => tabViewIsFullyLoaded ( tabView ) ) ;
191+ helper . goBack ( ) ;
192+ TKUnit . assertEqual ( topFrame . currentPage , tabViewPage ) ;
220193
221194 for ( let i = 0 ; i < itemCount ; i ++ ) {
222195 tabView . items [ i ] . view . off ( "loaded" ) ;
223196 tabView . items [ i ] . view . off ( "unloaded" ) ;
224197 }
225198
226- topFrame . goBack ( ) ;
227-
228- TKUnit . waitUntilReady ( ( ) => topFrame . currentPage === rootPage ) ;
229-
230- if ( topFrame . android ) {
231- topFrame . android . cachePagesOnNavigate = oldChache ;
232- }
199+ helper . goBack ( ) ;
200+ TKUnit . assertEqual ( topFrame . currentPage , rootPage ) ;
233201
234202 topFrame . currentPage . id = null ;
235203
236- TKUnit . arrayAssert ( loadedEventsCount , [ 1 , 1 ] ) ;
237- TKUnit . arrayAssert ( unloadedEventsCount , [ 1 , 1 ] ) ;
204+ TKUnit . arrayAssert ( loadedEventsCount , [ 2 , 0 ] ) ;
205+ TKUnit . arrayAssert ( unloadedEventsCount , [ 1 , 0 ] ) ;
238206}
239207
240208function _clickTheFirstButtonInTheListViewNatively ( tabView : TabView ) {
0 commit comments