1212using Moq ;
1313using MX . Api . Abstractions ;
1414using MX . Observability . ApplicationInsights . Auditing ;
15- using Newtonsoft . Json ;
1615
1716using XtremeIdiots . Portal . Repository . Abstractions . Constants . V1 ;
1817using XtremeIdiots . Portal . Repository . Abstractions . Models . V1 . ConnectedPlayers ;
@@ -54,18 +53,6 @@ private ConnectedPlayersController CreateSut(ClaimsPrincipal? user = null)
5453 public async Task Index_WhenApiSucceeds_ReturnsViewModel ( )
5554 {
5655 // Arrange
57- var collection = new CollectionModel < ConnectedPlayerDto > ( [
58- CreateConnectedPlayerDto ( true )
59- ] ) ;
60- var apiResponse = new ApiResponse < CollectionModel < ConnectedPlayerDto > > ( collection )
61- {
62- Pagination = new ApiPagination ( totalCount : 1 , filteredCount : 1 , skip : 0 , top : 500 )
63- } ;
64-
65- mockRepositoryApiClient
66- . Setup ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 0 , 500 , It . IsAny < CancellationToken > ( ) ) )
67- . ReturnsAsync ( new ApiResult < CollectionModel < ConnectedPlayerDto > > ( HttpStatusCode . OK , apiResponse ) ) ;
68-
6956 var sut = CreateSut ( new ClaimsPrincipal ( new ClaimsIdentity ( [
7057 new Claim ( UserProfileClaimType . SeniorAdmin , "true" )
7158 ] , "TestAuth" ) ) ) ;
@@ -77,109 +64,29 @@ public async Task Index_WhenApiSucceeds_ReturnsViewModel()
7764 var viewResult = Assert . IsType < ViewResult > ( result ) ;
7865 var model = Assert . IsType < ConnectedPlayersAdminViewModel > ( viewResult . Model ) ;
7966
80- Assert . Single ( model . ConnectedPlayers ) ;
67+ Assert . Empty ( model . ConnectedPlayers ) ;
8168 Assert . True ( model . IsSeniorAdmin ) ;
82- Assert . Equal ( 1 , model . TotalCount ) ;
69+ Assert . Equal ( 0 , model . TotalCount ) ;
8370 }
8471
8572 [ Fact ]
86- public async Task Index_WhenApiFails_RedirectsToErrorPage ( )
73+ public async Task Index_WhenUserIsNotSeniorAdmin_ReturnsViewModelWithNoSeniorAdminFlag ( )
8774 {
8875 // Arrange
89- mockRepositoryApiClient
90- . Setup ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 0 , 500 , It . IsAny < CancellationToken > ( ) ) )
91- . ReturnsAsync ( new ApiResult < CollectionModel < ConnectedPlayerDto > > ( HttpStatusCode . InternalServerError ) ) ;
92-
9376 var sut = CreateSut ( new ClaimsPrincipal ( new ClaimsIdentity ( [
9477 new Claim ( UserProfileClaimType . Moderator , GameType . CallOfDuty4 . ToString ( ) )
9578 ] , "TestAuth" ) ) ) ;
9679
9780 // Act
9881 var result = await sut . Index ( ) ;
9982
100- // Assert
101- var redirect = Assert . IsType < RedirectToActionResult > ( result ) ;
102- Assert . Equal ( nameof ( ErrorsController . Display ) , redirect . ActionName ) ;
103- Assert . Equal ( "Errors" , redirect . ControllerName ) ;
104- }
105-
106- [ Fact ]
107- public async Task Index_WhenMultiplePages_AggregatesAllRows ( )
108- {
109- // Arrange
110- var firstPageCollection = new CollectionModel < ConnectedPlayerDto > ( [
111- CreateConnectedPlayerDto ( true )
112- ] ) ;
113- var firstPageResponse = new ApiResponse < CollectionModel < ConnectedPlayerDto > > ( firstPageCollection )
114- {
115- Pagination = new ApiPagination ( totalCount : 2 , filteredCount : 2 , skip : 0 , top : 500 )
116- } ;
117-
118- var secondPageCollection = new CollectionModel < ConnectedPlayerDto > ( [
119- CreateConnectedPlayerDto ( false )
120- ] ) ;
121- var secondPageResponse = new ApiResponse < CollectionModel < ConnectedPlayerDto > > ( secondPageCollection )
122- {
123- Pagination = new ApiPagination ( totalCount : 2 , filteredCount : 2 , skip : 1 , top : 500 )
124- } ;
125-
126- mockRepositoryApiClient
127- . Setup ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 0 , 500 , It . IsAny < CancellationToken > ( ) ) )
128- . ReturnsAsync ( new ApiResult < CollectionModel < ConnectedPlayerDto > > ( HttpStatusCode . OK , firstPageResponse ) ) ;
129-
130- mockRepositoryApiClient
131- . Setup ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 1 , 500 , It . IsAny < CancellationToken > ( ) ) )
132- . ReturnsAsync ( new ApiResult < CollectionModel < ConnectedPlayerDto > > ( HttpStatusCode . OK , secondPageResponse ) ) ;
133-
134- var sut = CreateSut ( new ClaimsPrincipal ( new ClaimsIdentity ( [
135- new Claim ( UserProfileClaimType . SeniorAdmin , "true" )
136- ] , "TestAuth" ) ) ) ;
137-
138- // Act
139- var result = await sut . Index ( ) ;
140-
14183 // Assert
14284 var viewResult = Assert . IsType < ViewResult > ( result ) ;
14385 var model = Assert . IsType < ConnectedPlayersAdminViewModel > ( viewResult . Model ) ;
14486
145- Assert . Equal ( 2 , model . ConnectedPlayers . Count ) ;
146- Assert . Equal ( 2 , model . TotalCount ) ;
147-
148- mockRepositoryApiClient . Verify ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 0 , 500 , It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
149- mockRepositoryApiClient . Verify ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 1 , 500 , It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
150- }
151-
152- [ Fact ]
153- public async Task Index_WhenSecondPageFails_RedirectsToErrorPage ( )
154- {
155- // Arrange
156- var firstPageCollection = new CollectionModel < ConnectedPlayerDto > ( [
157- CreateConnectedPlayerDto ( true )
158- ] ) ;
159- var firstPageResponse = new ApiResponse < CollectionModel < ConnectedPlayerDto > > ( firstPageCollection )
160- {
161- Pagination = new ApiPagination ( totalCount : 2 , filteredCount : 2 , skip : 0 , top : 500 )
162- } ;
163-
164- mockRepositoryApiClient
165- . Setup ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 0 , 500 , It . IsAny < CancellationToken > ( ) ) )
166- . ReturnsAsync ( new ApiResult < CollectionModel < ConnectedPlayerDto > > ( HttpStatusCode . OK , firstPageResponse ) ) ;
167-
168- mockRepositoryApiClient
169- . Setup ( x => x . ConnectedPlayers . V1 . GetConnectedPlayers ( null , null , null , null , 1 , 500 , It . IsAny < CancellationToken > ( ) ) )
170- . ReturnsAsync ( new ApiResult < CollectionModel < ConnectedPlayerDto > > ( HttpStatusCode . InternalServerError ) ) ;
171-
172- var sut = CreateSut ( new ClaimsPrincipal ( new ClaimsIdentity ( [
173- new Claim ( UserProfileClaimType . SeniorAdmin , "true" )
174- ] , "TestAuth" ) ) ) ;
175-
176- // Act
177- var result = await sut . Index ( ) ;
178-
179- // Assert
180- var redirect = Assert . IsType < RedirectToActionResult > ( result ) ;
181- Assert . Equal ( nameof ( ErrorsController . Display ) , redirect . ActionName ) ;
182- Assert . Equal ( "Errors" , redirect . ControllerName ) ;
87+ Assert . Empty ( model . ConnectedPlayers ) ;
88+ Assert . False ( model . IsSeniorAdmin ) ;
89+ Assert . Equal ( 0 , model . TotalCount ) ;
18390 }
18491
18592 [ Fact ]
@@ -327,25 +234,4 @@ public async Task ForceUnlink_WhenSeniorAdminMissingProfileId_ReturnsForbid()
327234 It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
328235 }
329236
330- private static ConnectedPlayerDto CreateConnectedPlayerDto ( bool isActive )
331- {
332- var now = DateTime . UtcNow ;
333-
334- var json = JsonConvert . SerializeObject ( new
335- {
336- ConnectedPlayerProfileId = Guid . NewGuid ( ) ,
337- PlayerId = Guid . NewGuid ( ) ,
338- UserProfileId = Guid . NewGuid ( ) ,
339- GameType = GameType . CallOfDuty4 ,
340- Username = "TestPlayer" ,
341- LinkMethod = ConnectedPlayerLinkMethod . ActivationCode ,
342- LinkedAtUtc = now ,
343- LinkedByUserProfileId = Guid . NewGuid ( ) ,
344- UnlinkedAtUtc = isActive ? ( DateTime ? ) null : now . AddMinutes ( 1 ) ,
345- UnlinkedByUserProfileId = isActive ? ( Guid ? ) null : Guid . NewGuid ( ) ,
346- IsActive = isActive
347- } ) ;
348-
349- return JsonConvert . DeserializeObject < ConnectedPlayerDto > ( json ) ! ;
350- }
351237}
0 commit comments