@@ -76,6 +76,60 @@ test.describe("Unauthenticated Articles Page", () => {
7676      page . getByText ( "Sign in or sign up to leave a comment" ) , 
7777    ) . toBeVisible ( ) ; 
7878  } ) ; 
79+ 
80+   test ( "Should sort articles by Newest" ,  async  ( {  page } )  =>  { 
81+     await  page . goto ( "http://localhost:3000/articles" ) ; 
82+     await  page . waitForSelector ( "article" ) ; 
83+ 
84+     const  articles  =  await  page . $$eval ( "article" ,  ( articles )  =>  { 
85+       return  articles . map ( ( article )  =>  ( { 
86+         date : article . querySelector ( "time" ) ?. dateTime , 
87+       } ) ) ; 
88+     } ) ; 
89+     const  isSortedNewest  =  articles . every ( ( article ,  index ,  arr )  =>  { 
90+       if  ( index  ===  arr . length  -  1 )  return  true ; 
91+       if  ( ! article . date  ||  ! arr [ index  +  1 ] . date )  return  false ; 
92+       return  new  Date ( article . date )  >=  new  Date ( arr [ index  +  1 ] . date ! ) ; 
93+     } ) ; 
94+     expect ( isSortedNewest ) . toBeTruthy ( ) ; 
95+   } ) ; 
96+ 
97+   test ( "Should sort articles by Oldest" ,  async  ( {  page } )  =>  { 
98+     await  page . goto ( "http://localhost:3000/articles?filter=oldest" ) ; 
99+     await  page . waitForSelector ( "article" ) ; 
100+     const  articles  =  await  page . $$eval ( "article" ,  ( articles )  =>  { 
101+       return  articles . map ( ( article )  =>  ( { 
102+         date : article . querySelector ( "time" ) ?. dateTime , 
103+       } ) ) ; 
104+     } ) ; 
105+     const  isSortedOldest  =  articles . every ( ( article ,  index ,  arr )  =>  { 
106+       if  ( index  ===  arr . length  -  1 )  return  true ; 
107+       if  ( ! article . date  ||  ! arr [ index  +  1 ] . date )  return  false ; 
108+       return  new  Date ( article . date )  <=  new  Date ( arr [ index  +  1 ] . date ! ) ; 
109+     } ) ; 
110+     expect ( isSortedOldest ) . toBeTruthy ( ) ; 
111+   } ) ; 
112+ 
113+   test ( "Should sort articles by Top - likes" ,  async  ( {  page } )  =>  { 
114+     await  page . goto ( "http://localhost:3000/articles?filter=top" ) ; 
115+     await  page . waitForSelector ( "article" ) ; 
116+ 
117+     const  articles  =  await  page . $$eval ( "article" ,  ( articles )  =>  { 
118+       return  articles . map ( ( article )  =>  ( { 
119+         likes : parseInt ( 
120+           article . querySelector ( "[data-likes]" ) ?. getAttribute ( "data-likes" )  || 
121+             "0" , 
122+           10 , 
123+         ) , 
124+       } ) ) ; 
125+     } ) ; 
126+ 
127+     const  isSortedTop  =  articles . every ( ( article ,  index ,  arr )  =>  { 
128+       if  ( index  ===  arr . length  -  1 )  return  true ; 
129+       return  article . likes  >=  arr [ index  +  1 ] . likes ; 
130+     } ) ; 
131+     expect ( isSortedTop ) . toBeTruthy ( ) ; 
132+   } ) ; 
79133} ) ; 
80134
81135test . describe ( "Authenticated Articles Page" ,  ( )  =>  { 
0 commit comments