@@ -2,10 +2,12 @@ namespace LearningHub.Nhs.OpenApi.Tests.Services.Services
22{
33 using System ;
44 using System . Collections . Generic ;
5+ using System . Linq ;
56 using System . Net ;
67 using System . Threading . Tasks ;
78 using FizzWare . NBuilder ;
89 using FluentAssertions ;
10+ using LearningHub . Nhs . Models . Entities . Activity ;
911 using LearningHub . Nhs . Models . Entities . Resource ;
1012 using LearningHub . Nhs . Models . Enums ;
1113 using LearningHub . Nhs . OpenApi . Models . Exceptions ;
@@ -33,7 +35,14 @@ public ResourceServiceTests()
3335 this . resourceRepository = new Mock < IResourceRepository > ( ) ;
3436 this . resourceService = new ResourceService ( this . learningHubService . Object , this . resourceRepository . Object , new NullLogger < ResourceService > ( ) ) ;
3537 }
36-
38+ private List < ResourceActivityDTO > ResourceActivityDTOList => new List < ResourceActivityDTO > ( )
39+ {
40+ new ResourceActivityDTO { ResourceId = 1 , ActivityStatusId = 5 , MajorVersion = 5 } ,
41+ new ResourceActivityDTO { ResourceId = 1 , ActivityStatusId = 7 , MajorVersion = 4 } ,
42+ new ResourceActivityDTO { ResourceId = 1 , ActivityStatusId = 3 , MajorVersion = 3 } ,
43+ new ResourceActivityDTO { ResourceId = 1 , ActivityStatusId = 7 , MajorVersion = 2 } ,
44+ new ResourceActivityDTO { ResourceId = 1 , ActivityStatusId = 3 , MajorVersion = 1 } ,
45+ } ;
3746 private List < Resource > ResourceList => new List < Resource > ( )
3847 {
3948 ResourceTestHelper . CreateResourceWithDetails ( id : 1 , title : "title1" , description : "description1" , rating : 3m , resourceType : ResourceTypeEnum . Article ) ,
@@ -332,5 +341,53 @@ public async Task ResourceServiceReturnsThatAnUnrestrictedCatalogueIsUnrestricte
332341 // Then
333342 x . Catalogue . IsRestricted . Should ( ) . BeFalse ( ) ;
334343 }
344+
345+ [ Fact ]
346+ public async Task SingleResourceEndpointReturnsActivitySummaryWhenCurrentUserIdProvided ( )
347+ {
348+ // Given
349+ this . resourceRepository . Setup ( rr => rr . GetResourceReferencesByOriginalResourceReferenceIds ( new List < int > ( ) { 1 } ) )
350+ . ReturnsAsync ( this . ResourceReferenceList . GetRange ( 0 , 1 ) ) ;
351+
352+ this . resourceRepository . Setup ( rr => rr . GetResourceActivityPerResourceMajorVersion ( new List < int > ( ) { 1 } , new List < int > ( ) { currentUserId } ) )
353+ . ReturnsAsync ( this . ResourceActivityDTOList . ToList ( ) ) ;
354+
355+ // When
356+ var x = await this . resourceService . GetResourceReferenceByOriginalId ( 1 , currentUserId ) ;
357+
358+ // Then
359+ x . UserSummaryActivityStatuses . Should ( ) . NotBeNull ( ) ;
360+ x . UserSummaryActivityStatuses [ 0 ] . MajorVersionId . Should ( ) . Be ( 5 ) ;
361+ x . UserSummaryActivityStatuses [ 1 ] . MajorVersionId . Should ( ) . Be ( 4 ) ;
362+ x . UserSummaryActivityStatuses [ 2 ] . MajorVersionId . Should ( ) . Be ( 3 ) ;
363+ x . UserSummaryActivityStatuses [ 3 ] . MajorVersionId . Should ( ) . Be ( 2 ) ;
364+ x . UserSummaryActivityStatuses [ 4 ] . MajorVersionId . Should ( ) . Be ( 1 ) ;
365+
366+ x . UserSummaryActivityStatuses [ 0 ] . ActivityStatusDescription . Should ( ) . Be ( "Passed" ) ;
367+ x . UserSummaryActivityStatuses [ 1 ] . ActivityStatusDescription . Should ( ) . Be ( "In progress" ) ;
368+ x . UserSummaryActivityStatuses [ 2 ] . ActivityStatusDescription . Should ( ) . Be ( "Viewed" ) ;
369+ x . UserSummaryActivityStatuses [ 3 ] . ActivityStatusDescription . Should ( ) . Be ( "In progress" ) ;
370+ x . UserSummaryActivityStatuses [ 4 ] . ActivityStatusDescription . Should ( ) . Be ( "Viewed" ) ;
371+
372+ }
373+
374+ [ Fact ]
375+ public async Task SingleResourceEndpointReturnsEmptyActivitySummaryWhenNoCurrentUserIdProvided ( )
376+ {
377+ // Given
378+ this . resourceRepository . Setup ( rr => rr . GetResourceReferencesByOriginalResourceReferenceIds ( new List < int > ( ) { 1 } ) )
379+ . ReturnsAsync ( this . ResourceReferenceList . GetRange ( 0 , 1 ) ) ;
380+
381+ // This should not be hit
382+ this . resourceRepository . Setup ( rr => rr . GetResourceActivityPerResourceMajorVersion ( new List < int > ( ) { 1 } , new List < int > ( ) { currentUserId } ) )
383+ . ReturnsAsync ( this . ResourceActivityDTOList . ToList ( ) ) ;
384+
385+ // When
386+ var x = await this . resourceService . GetResourceReferenceByOriginalId ( 1 , null ) ;
387+
388+ // Then
389+ x . UserSummaryActivityStatuses . Should ( ) . BeEmpty ( ) ;
390+
391+ }
335392 }
336393}
0 commit comments