- env: TEST_SUITE=api-4
- env: TEST_SUITE=cli
- env: TEST_SUITE=lint
- - env: TEST_SUITE=jest
script:
- NODE_PENDING_JOB_WAIT=1000 travis_retry npm run travis -- "$TEST_SUITE"
"postinstall": "npm rebuild node-sass",
"webpack-bundle-analyzer": "webpack-bundle-analyzer",
"webdriver-manager": "webdriver-manager",
- "ngx-extractor": "ngx-extractor",
- "test": "jest --no-cache"
+ "ngx-extractor": "ngx-extractor"
},
"license": "GPLv3",
"typings": "*.d.ts",
"simple-get": "^2.8.1",
"punycode": "^1.4.1"
},
- "jest": {
- "globals": {
- "ts-jest": {
- "tsConfigFile": "<rootDir>/src/tsconfig.spec.json"
- },
- "__TRANSFORM_HTML__": true
- },
- "transform": {
- "^.+\\.(ts|js|html)$": "<rootDir>/node_modules/jest-preset-angular/preprocessor.js"
- },
- "moduleNameMapper": {
- "^@app/(.*)": "<rootDir>/src/app/$1",
- "environments/(.*)": "<rootDir>/src/environments/$1"
- },
- "testMatch": [
- "**/__tests__/**/*.+(ts|js)?(x)",
- "**/+(*.)+(spec|test).+(ts|js)?(x)"
- ],
- "moduleFileExtensions": [
- "ts",
- "tsx",
- "js",
- "jsx",
- "json",
- "node"
- ],
- "transformIgnorePatterns": [
- "<rootDir>/node_modules/(?!lodash-es/)"
- ],
- "preset": "jest-preset-angular",
- "setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts"
- },
"devDependencies": {
"@angular-devkit/build-angular": "~0.13.1",
"@angular/animations": "~7.2.4",
"@types/hls.js": "^0.12.0",
"@types/jasmine": "^2.8.7",
"@types/jasminewd2": "^2.0.3",
- "@types/jest": "^23.3.1",
"@types/jschannel": "^1.0.0",
"@types/linkifyjs": "^2.1.1",
"@types/lodash-es": "^4.17.0",
"https-browserify": "^1.0.0",
"jasmine-core": "^3.1.0",
"jasmine-spec-reporter": "^4.2.1",
- "jest": "^23.5.0",
- "jest-preset-angular": "^6.0.0",
"jschannel": "^1.0.2",
"karma": "^3.0.0",
"karma-chrome-launcher": "^2.2.0",
"stream-browserify": "^2.0.1",
"stream-http": "^3.0.0",
"terser-webpack-plugin": "^1.1.0",
- "ts-jest": "^23.1.4",
"tslint": "^5.7.0",
"tslint-config-standard": "^8.0.1",
"typescript": "3.2",
+++ /dev/null
-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()
- })
- })
-})
+++ /dev/null
-import { RecommendedVideosStore } from '@app/videos/recommendations/recommended-videos.store'
-import { RecommendationService } from '@app/videos/recommendations/recommendations.service'
-
-describe('RecommendedVideosStore', () => {
- describe('requestNewRecommendations', () => {
- let store: RecommendedVideosStore
- let service: RecommendationService
- beforeEach(() => {
- service = {
- getRecommendations: jest.fn(() => new Promise((r) => r()))
- }
- store = new RecommendedVideosStore(service)
- })
- it('should pull new videos from the service one time when given the same UUID twice', () => {
- store.requestNewRecommendations('some-uuid')
- store.requestNewRecommendations('some-uuid')
- // Requests aren't fulfilled until someone asks for them (ie: subscribes)
- store.recommendations$.subscribe()
- expect(service.getRecommendations).toHaveBeenCalledTimes(1)
- })
- })
-})
+++ /dev/null
-import 'jest-preset-angular';
+++ /dev/null
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "outDir": "../out-tsc/spec",
- "module": "commonjs",
- "target": "es5",
- "baseUrl": "",
- "allowJs": true
- },
- "files": [
- "test.ts"
- ],
- "include": [
- "**/*.spec.ts",
- "**/*.d.ts"
- ]
-}
( cd client
npm run lint
)
-elif [ "$1" = "jest" ]; then
- ( cd client
- npm run test
- )
fi