-import { RecentVideosRecommendationService } from '@app/videos/recommendations/recent-videos-recommendation.service'
-import { VideosProvider } from '@app/shared/video/video.service'
-import { EMPTY, of } from 'rxjs'
-import Mock = jest.Mock
-
-describe('"Recent Videos" Recommender', () => {
- describe('getRecommendations', () => {
- let videosService: VideosProvider
- let service: RecentVideosRecommendationService
- let getVideosMock: Mock<any>
- beforeEach(() => {
- getVideosMock = jest.fn(() => EMPTY)
- videosService = {
- getVideos: getVideosMock
- }
- service = new RecentVideosRecommendationService(videosService)
- })
- it('should filter out the given UUID from the results', async (done) => {
- const vids = [
- { uuid: 'uuid1' },
- { uuid: 'uuid2' }
- ]
- getVideosMock.mockReturnValueOnce(of({ videos: vids }))
- const result = await service.getRecommendations({ uuid: 'uuid1' }).toPromise()
- const uuids = result.map(v => v.uuid)
- expect(uuids).toEqual(['uuid2'])
- done()
- })
- it('should return 5 results when the given UUID is NOT in the first 5 results', async (done) => {
- const vids = [
- { uuid: 'uuid2' },
- { uuid: 'uuid3' },
- { uuid: 'uuid4' },
- { uuid: 'uuid5' },
- { uuid: 'uuid6' },
- { uuid: 'uuid7' }
- ]
- getVideosMock.mockReturnValueOnce(of({ videos: vids }))
- const result = await service.getRecommendations({ uuid: 'uuid1' }).toPromise()
- expect(result.length).toEqual(5)
- done()
- })
- it('should return 5 results when the given UUID IS PRESENT in the first 5 results', async (done) => {
- const vids = [
- { uuid: 'uuid1' },
- { uuid: 'uuid2' },
- { uuid: 'uuid3' },
- { uuid: 'uuid4' },
- { uuid: 'uuid5' },
- { uuid: 'uuid6' }
- ]
- getVideosMock
- .mockReturnValueOnce(of({ videos: vids }))
- const result = await service.getRecommendations({ uuid: 'uuid1' }).toPromise()
- expect(result.length).toEqual(5)
- done()
- })
- it('should fetch an extra result in case the given UUID is in the list', async (done) => {
- await service.getRecommendations({ uuid: 'uuid1' }).toPromise()
- let expectedSize = service.pageSize + 1
- let params = { currentPage: jasmine.anything(), itemsPerPage: expectedSize }
- expect(getVideosMock).toHaveBeenCalledWith(params, jasmine.anything())
- done()
- })
- })
-})