Skip to content

Commit a83082e

Browse files
committed
✅ test loading JSON
resolveDone -> resolve
1 parent 2112998 commit a83082e

File tree

4 files changed

+137
-14
lines changed

4 files changed

+137
-14
lines changed

test/html/page/2.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[
2+
{
3+
"id": 2,
4+
"content": "venus"
5+
},
6+
{
7+
"id": 3,
8+
"content": "mother earth"
9+
},
10+
{
11+
"id": 4,
12+
"content": "mars"
13+
}
14+
]

test/html/page/3.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[
2+
{
3+
"id": 5,
4+
"content": "jupiter"
5+
},
6+
{
7+
"id": 6,
8+
"content": "saturn"
9+
},
10+
{
11+
"id": 7,
12+
"content": "uranus"
13+
}
14+
]

test/page-load-json.js

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
const test = require('ava');
2+
const puppeteer = require('puppeteer');
3+
const getServer = require('./_get-server.js');
4+
const page2Json = require('./html/page/2.json');
5+
const page3Json = require('./html/page/3.json');
6+
7+
const port = 9009;
8+
9+
let server, browser, page;
10+
11+
test.before( async function() {
12+
server = getServer();
13+
server.listen( port );
14+
browser = await puppeteer.launch();
15+
page = await browser.newPage();
16+
await page.goto( `http://localhost:${port}/test/html/page-load.html` );
17+
} );
18+
19+
test.after( async function() {
20+
page.close();
21+
await browser.close();
22+
server.close();
23+
} );
24+
25+
// ------ tests ------ //
26+
27+
test.serial( 'page-load: page/2.json', async( t ) => {
28+
29+
let assertions = await page.evaluate( function( page2Data ) {
30+
let infScroll = window.infScroll = new InfiniteScroll( '.container', {
31+
path: 'page/{{#}}.json',
32+
responseBody: 'json',
33+
history: false,
34+
} );
35+
36+
let eventPromises = Promise.all([
37+
// request event
38+
new Promise( function( resolve ) {
39+
infScroll.once( 'request', function( path ) {
40+
serialT.truthy( path.match('page/2.json') );
41+
resolve();
42+
} );
43+
} ),
44+
// load event
45+
new Promise( function( resolve ) {
46+
infScroll.once( 'load', function( response, path ) {
47+
serialT.truthy( path.match('page/2.json') );
48+
serialT.deepEqual( response, page2Data );
49+
serialT.is( infScroll.loadCount, 1 );
50+
serialT.is( infScroll.pageIndex, 2 );
51+
resolve();
52+
} );
53+
} ),
54+
]);
55+
56+
// load page 2
57+
infScroll.loadNextPage();
58+
return eventPromises.then( () => serialT.assertions );
59+
}, page2Json );
60+
61+
assertions.forEach( ({ method, args }) => t[ method ]( ...args ) );
62+
} );
63+
64+
test.serial( 'page-load: page/3.json', async( t ) => {
65+
66+
let assertions = await page.evaluate( function( page3Data ) {
67+
let infScroll = window.infScroll;
68+
69+
let eventPromises = Promise.all([
70+
// request event
71+
new Promise( function( resolve ) {
72+
infScroll.once( 'request', function( path ) {
73+
serialT.truthy( path.match('page/3.json') );
74+
resolve();
75+
} );
76+
} ),
77+
// load event
78+
new Promise( function( resolve ) {
79+
infScroll.once( 'load', function( response, path ) {
80+
serialT.truthy( path.match('page/3.json') );
81+
serialT.deepEqual( response, page3Data );
82+
serialT.is( infScroll.loadCount, 2 );
83+
serialT.is( infScroll.pageIndex, 3 );
84+
resolve();
85+
} );
86+
} ),
87+
]);
88+
89+
// load page 2
90+
infScroll.loadNextPage();
91+
return eventPromises.then( () => serialT.assertions );
92+
}, page3Json );
93+
94+
assertions.forEach( ({ method, args }) => t[ method ]( ...args ) );
95+
} );

test/page-load.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -32,24 +32,24 @@ test.serial( 'page-load: page 2', async( t ) => {
3232

3333
let eventPromises = Promise.all([
3434
// request event
35-
new Promise( function( resolveDone ) {
35+
new Promise( function( resolve ) {
3636
infScroll.once( 'request', function( path ) {
3737
serialT.truthy( path.match('page/2.html') );
38-
resolveDone();
38+
resolve();
3939
} );
4040
} ),
4141
// load event
42-
new Promise( function( resolveDone ) {
42+
new Promise( function( resolve ) {
4343
infScroll.once( 'load', function( response, path ) {
4444
serialT.is( response.nodeName, '#document' );
4545
serialT.truthy( path.match('page/2.html') );
4646
serialT.is( infScroll.loadCount, 1 );
4747
serialT.is( infScroll.pageIndex, 2 );
48-
resolveDone();
48+
resolve();
4949
} );
5050
} ),
5151
// append event
52-
new Promise( function( resolveDone ) {
52+
new Promise( function( resolve ) {
5353
infScroll.once( 'append', function( response, path, items ) {
5454
serialT.is( response.nodeName, '#document' );
5555
serialT.truthy( path.match('page/2.html') );
@@ -58,7 +58,7 @@ test.serial( 'page-load: page 2', async( t ) => {
5858
serialT.truthy( $container.children[2] === items[1] ); // item1 appended
5959
// inline script executed
6060
serialT.truthy( window.page2InlineScriptLoaded );
61-
resolveDone();
61+
resolve();
6262
} );
6363
} ),
6464
]);
@@ -80,40 +80,40 @@ test.serial( 'page-load: page 3', async( t ) => {
8080

8181
let eventPromises = Promise.all([
8282
// request event
83-
new Promise( function( resolveDone ) {
83+
new Promise( function( resolve ) {
8484
infScroll.once( 'request', function( path ) {
8585
serialT.truthy( path.match('page/3.html') );
86-
resolveDone();
86+
resolve();
8787
} );
8888
} ),
8989
// load event
90-
new Promise( function( resolveDone ) {
90+
new Promise( function( resolve ) {
9191
infScroll.once( 'load', function( response, path ) {
9292
serialT.is( response.nodeName, '#document' );
9393
serialT.truthy( path.match('page/3.html') );
9494
serialT.is( infScroll.loadCount, 2 );
9595
serialT.is( infScroll.pageIndex, 3 );
96-
resolveDone();
96+
resolve();
9797
} );
9898
} ),
9999
// append event
100-
new Promise( function( resolveDone ) {
100+
new Promise( function( resolve ) {
101101
infScroll.once( 'append', function( response, path, items ) {
102102
serialT.is( response.nodeName, '#document' );
103103
serialT.truthy( path.match('page/3.html') );
104104
serialT.is( items.length, 3 );
105105
serialT.truthy( $container.children[3] === items[0] );
106106
serialT.truthy( $container.children[4] === items[1] );
107107
serialT.truthy( $container.children[5] === items[2] );
108-
resolveDone();
108+
resolve();
109109
} );
110110
} ),
111111
// last event
112-
new Promise( function( resolveDone ) {
112+
new Promise( function( resolve ) {
113113
infScroll.once( 'last', function( response, path ) {
114114
serialT.is( response.nodeName, '#document' );
115115
serialT.truthy( path.match('page/3.html') );
116-
resolveDone();
116+
resolve();
117117
} );
118118
} ),
119119
]);

0 commit comments

Comments
 (0)