@@ -21,7 +21,25 @@ module('Acceptance | leaderboard-page | view', function (hooks) {
2121 }
2222 } ) ;
2323
24- test ( 'can view' , async function ( assert ) {
24+ test ( 'can view as anonymous user' , async function ( assert ) {
25+ const language = this . server . schema . languages . all ( ) . models . find ( ( language ) => language . slug === 'rust' ) ;
26+ const leaderboard = language . leaderboard ;
27+
28+ const sampleUserData = [
29+ { username : 'Gufran' , score : 6750 , leaderboard } ,
30+ { username : 'torvalds' , score : 5250 , leaderboard } ,
31+ ] ;
32+
33+ createLeaderboardEntriesFromSampleData ( this . server , sampleUserData ) ;
34+
35+ await leaderboardPage . visit ( { language_slug : 'rust' } ) ;
36+ assert . strictEqual ( currentURL ( ) , '/leaderboards/rust' ) ;
37+
38+ assert . strictEqual ( leaderboardPage . entriesTable . entries . length , 2 , '2 entries should be shown' ) ;
39+ await percySnapshot ( 'Leaderboard Page - Anonymous User' ) ;
40+ } ) ;
41+
42+ test ( 'can view as authenticated user' , async function ( assert ) {
2543 const currentUser = signInAsStaff ( this . owner , this . server ) ;
2644
2745 const language = this . server . schema . languages . all ( ) . models . find ( ( language ) => language . slug === 'rust' ) ;
@@ -51,22 +69,11 @@ module('Acceptance | leaderboard-page | view', function (hooks) {
5169 ] ;
5270
5371 for ( const sampleUserDatum of sampleUserData ) {
54- let user = this . server . schema . users . all ( ) . models . find ( ( user ) => user . username === sampleUserDatum . username ) ;
55-
56- user ||= this . server . create ( 'user' , {
57- username : sampleUserDatum . username ,
58- avatarUrl : `https://github.com/${ sampleUserDatum . username } .png` ,
59- } ) ;
60-
61- this . server . create ( 'leaderboard-entry' , {
62- leaderboard,
63- user : user ,
64- score : sampleUserDatum . score ,
65- scoreUpdatesCount : Math . floor ( sampleUserDatum . score / 10 ) ,
66- relatedCourseSlugs : [ 'redis' , 'shell' , 'sqlite' , 'grep' ] . slice ( 0 , Math . floor ( sampleUserDatum . score / 50 ) ) ,
67- } ) ;
72+ sampleUserDatum . leaderboard = leaderboard ;
6873 }
6974
75+ createLeaderboardEntriesFromSampleData ( this . server , sampleUserData ) ;
76+
7077 await leaderboardPage . visit ( { language_slug : 'rust' } ) ;
7178 assert . strictEqual ( currentURL ( ) , '/leaderboards/rust' ) ;
7279
@@ -89,23 +96,7 @@ module('Acceptance | leaderboard-page | view', function (hooks) {
8996 { username : 'python-user-2' , score : 700 , leaderboard : pythonLanguage . leaderboard } ,
9097 ] ;
9198
92- for ( const sampleUserDatum of sampleUserData ) {
93- let user = this . server . schema . users . all ( ) . models . find ( ( user ) => user . username === sampleUserDatum . username ) ;
94-
95- user ||= this . server . create ( 'user' , {
96- username : sampleUserDatum . username ,
97- avatarUrl : `https://github.com/${ sampleUserDatum . username } .png` ,
98- } ) ;
99-
100- // Create entries for both languages
101- this . server . create ( 'leaderboard-entry' , {
102- leaderboard : sampleUserDatum . leaderboard ,
103- user : user ,
104- score : sampleUserDatum . score ,
105- scoreUpdatesCount : Math . floor ( sampleUserDatum . score / 10 ) ,
106- relatedCourseSlugs : [ 'redis' , 'shell' ] ,
107- } ) ;
108- }
99+ createLeaderboardEntriesFromSampleData ( this . server , sampleUserData ) ;
109100
110101 // Start on Rust leaderboard
111102 await leaderboardPage . visit ( { language_slug : 'rust' } ) ;
@@ -126,3 +117,22 @@ module('Acceptance | leaderboard-page | view', function (hooks) {
126117 // Test that surrounding entries are shown if user is not within top 10
127118 // Test that surrounding entries are not shown if user is within top 10
128119} ) ;
120+
121+ function createLeaderboardEntriesFromSampleData ( server , sampleUserData ) {
122+ for ( const sampleUserDatum of sampleUserData ) {
123+ let user = server . schema . users . all ( ) . models . find ( ( user ) => user . username === sampleUserDatum . username ) ;
124+
125+ user ||= server . create ( 'user' , {
126+ username : sampleUserDatum . username ,
127+ avatarUrl : `https://github.com/${ sampleUserDatum . username } .png` ,
128+ } ) ;
129+
130+ server . create ( 'leaderboard-entry' , {
131+ leaderboard : sampleUserDatum . leaderboard ,
132+ user : user ,
133+ score : sampleUserDatum . score ,
134+ scoreUpdatesCount : Math . floor ( sampleUserDatum . score / 10 ) ,
135+ relatedCourseSlugs : [ 'redis' , 'shell' , 'sqlite' , 'grep' ] . slice ( 0 , Math . floor ( sampleUserDatum . score / 50 ) ) ,
136+ } ) ;
137+ }
138+ }
0 commit comments