@@ -3,6 +3,7 @@ const { allUsersData } = require('../../mock-data/users');
3
3
const { discordGroups, GroupRoleData } = require ( '../../mock-data/groups' ) ;
4
4
5
5
const BASE_URL = 'https://api.realdevsquad.com' ;
6
+ const PAGE_URL = 'http://localhost:8000' ;
6
7
7
8
describe ( 'Discord Groups Page' , ( ) => {
8
9
let browser ;
@@ -135,7 +136,7 @@ describe('Discord Groups Page', () => {
135
136
interceptedRequest . continue ( ) ;
136
137
}
137
138
} ) ;
138
- await page . goto ( 'http://localhost:8000/ groups' ) ;
139
+ await page . goto ( ` ${ PAGE_URL } / groups` ) ;
139
140
await page . waitForNetworkIdle ( ) ;
140
141
} ) ;
141
142
@@ -319,7 +320,7 @@ describe('Discord Groups Page', () => {
319
320
} ) ;
320
321
321
322
test ( 'should update input field and filter group list with search value in URL' , async ( ) => {
322
- await page . goto ( 'http://localhost:8000/ groups/?dev=true&DSA' ) ;
323
+ await page . goto ( ` ${ PAGE_URL } / groups/?dev=true&DSA` ) ;
323
324
manageGroup = await page . $ ( '.manage-groups-tab' ) ;
324
325
await manageGroup . click ( ) ;
325
326
const searchInput = await page . $ ( '#search-groups' ) ;
@@ -341,12 +342,92 @@ describe('Discord Groups Page', () => {
341
342
} ) ;
342
343
343
344
test ( 'should select the group from URL and have active-group class' , async ( ) => {
344
- await page . goto ( 'http://localhost:8000/ groups?DSA' ) ;
345
+ await page . goto ( ` ${ PAGE_URL } / groups?DSA` ) ;
345
346
const activeGroup = await page . $ ( '.active-group' ) ;
346
347
const groupName = await page . evaluate (
347
348
( element ) => element . innerText ,
348
349
activeGroup ,
349
350
) ;
350
351
expect ( groupName ) . toMatch ( 'DSA' ) ;
351
352
} ) ;
353
+ test ( 'On click on "Popular within dev" will result group with most member at the top' , async ( ) => {
354
+ await page . goto ( `${ PAGE_URL } /groups?dev=true` ) ;
355
+ await page . waitForNetworkIdle ( ) ;
356
+
357
+ const groupsBeforeSort = await page . $$eval ( '.group-name' , ( elements ) => {
358
+ return elements . map ( ( element ) =>
359
+ element . getAttribute ( 'data-member-count' ) ,
360
+ ) ;
361
+ } ) ;
362
+ await page . $$eval ( '#dropdown_main' , ( el ) => {
363
+ el [ 0 ] . click ( ) ;
364
+ } ) ;
365
+
366
+ await page . $$eval ( '[data-list="1"]' , ( el ) => {
367
+ el [ 0 ] . click ( ) ;
368
+ } ) ;
369
+ const groupsAfterSort = await page . $$eval ( '.group-name' , ( elements ) => {
370
+ return elements . map ( ( element ) =>
371
+ element . getAttribute ( 'data-member-count' ) ,
372
+ ) ;
373
+ } ) ;
374
+ const manualSortedGroup = groupsBeforeSort . sort ( ( a , b ) => b - a ) ;
375
+ expect ( groupsAfterSort ) . toEqual ( manualSortedGroup ) ;
376
+ } ) ;
377
+ test ( 'On click on "Recently created" will result in latest created group at the top' , async ( ) => {
378
+ await page . goto ( `${ PAGE_URL } /groups?dev=true` ) ;
379
+ await page . waitForNetworkIdle ( ) ;
380
+
381
+ const groupNameCreateDateLookup = { } ;
382
+ discordGroups . groups . forEach ( ( group ) => {
383
+ const grpName = group . rolename . split ( '-' ) . slice ( 1 ) . join ( '-' ) ;
384
+ groupNameCreateDateLookup [ grpName ] = group . date . _seconds ;
385
+ } ) ;
386
+ const groupsBeforeSort = await page . $$eval ( '.group-name' , ( elements ) => {
387
+ return elements . map ( ( element ) => element . innerText ) ;
388
+ } ) ;
389
+
390
+ await page . $$eval ( '#dropdown_main' , ( el ) => {
391
+ el [ 0 ] . click ( ) ;
392
+ } ) ;
393
+ await page . $$eval ( '[data-list="2"]' , ( el ) => {
394
+ el [ 0 ] . click ( ) ;
395
+ } ) ;
396
+ const groupAfterSort = await page . $$eval ( '.group-name' , ( elements ) => {
397
+ return elements . map ( ( element ) => element . innerText ) ;
398
+ } ) ;
399
+ const manualSortedGroup = groupsBeforeSort . sort (
400
+ ( a , b ) => groupNameCreateDateLookup [ b ] - groupNameCreateDateLookup [ a ] ,
401
+ ) ;
402
+ expect ( groupAfterSort ) . toEqual ( manualSortedGroup ) ;
403
+ } ) ;
404
+ test ( 'On click on "Recently used" will result in recently used group at the top' , async ( ) => {
405
+ await page . goto ( `${ PAGE_URL } /groups?dev=true` ) ;
406
+ await page . waitForNetworkIdle ( ) ;
407
+
408
+ const groupNameCreateDateLookup = { } ;
409
+ discordGroups . groups . forEach ( ( group ) => {
410
+ const grpName = group . rolename . split ( '-' ) . slice ( 1 ) . join ( '-' ) ;
411
+ groupNameCreateDateLookup [ grpName ] = group . lastUsedOn
412
+ ? group . lastUsedOn . _seconds
413
+ : 0 ;
414
+ } ) ;
415
+ const groupsBeforeSort = await page . $$eval ( '.group-name' , ( elements ) => {
416
+ return elements . map ( ( element ) => element . innerText ) ;
417
+ } ) ;
418
+
419
+ await page . $$eval ( '#dropdown_main' , ( el ) => {
420
+ el [ 0 ] . click ( ) ;
421
+ } ) ;
422
+ await page . $$eval ( '[data-list="3"]' , ( el ) => {
423
+ el [ 0 ] . click ( ) ;
424
+ } ) ;
425
+ const groupAfterSort = await page . $$eval ( '.group-name' , ( elements ) => {
426
+ return elements . map ( ( element ) => element . innerText ) ;
427
+ } ) ;
428
+ const manualSortedGroup = groupsBeforeSort . sort (
429
+ ( a , b ) => groupNameCreateDateLookup [ b ] - groupNameCreateDateLookup [ a ] ,
430
+ ) ;
431
+ expect ( groupAfterSort ) . toEqual ( manualSortedGroup ) ;
432
+ } ) ;
352
433
} ) ;
0 commit comments