1- import { faker } from '@faker-js/faker' ;
21import { expect } from 'chai' ;
32import {
4- VariantAnalysis as VariantAnalysisApiResponse ,
5- VariantAnalysisRepoStatus as ApiVariantAnalysisRepoStatus ,
63 VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository ,
74 VariantAnalysisSkippedRepositories as ApiVariantAnalysisSkippedRepositories ,
85 VariantAnalysisSkippedRepositoryGroup as ApiVariantAnalysisSkippedRepositoryGroup ,
96 VariantAnalysisNotFoundRepositoryGroup as ApiVariantAnalysisNotFoundRepositoryGroup
107} from '../../../remote-queries/gh-api/variant-analysis' ;
118import {
12- VariantAnalysisSubmission ,
139 VariantAnalysisQueryLanguage ,
1410 VariantAnalysisSkippedRepositories ,
15- VariantAnalysisSkippedRepositoryGroup
11+ VariantAnalysisSkippedRepositoryGroup ,
12+ VariantAnalysisScannedRepository ,
13+ VariantAnalysisRepoStatus
1614} from '../../../remote-queries/shared/variant-analysis' ;
1715import { processVariantAnalysis } from '../../../remote-queries/variant-analysis-processor' ;
16+ import { createMockScannedRepos } from '../../factories/remote-queries/gh-api/scanned-repositories' ;
17+ import { createMockSkippedRepos } from '../../factories/remote-queries/gh-api/skipped-repositories' ;
18+ import { createMockApiResponse } from '../../factories/remote-queries/gh-api/variant-analysis-api-response' ;
19+ import { createMockSubmission } from '../../factories/remote-queries/shared/variant-analysis-submission' ;
1820
1921describe ( 'Variant Analysis processor' , function ( ) {
20- let mockApiResponse : VariantAnalysisApiResponse ;
21- let mockSubmission : VariantAnalysisSubmission ;
22- let scannedRepo1 : ApiVariantAnalysisScannedRepository ;
23- let scannedRepo2 : ApiVariantAnalysisScannedRepository ;
24- let scannedRepo3 : ApiVariantAnalysisScannedRepository ;
25- let skippedRepos : ApiVariantAnalysisSkippedRepositories ;
26-
27- beforeEach ( ( ) => {
28- scannedRepo1 = createMockScannedRepo ( 'mona1' , false , 'succeeded' ) ;
29- scannedRepo2 = createMockScannedRepo ( 'mona2' , false , 'pending' ) ;
30- scannedRepo3 = createMockScannedRepo ( 'mona3' , false , 'in_progress' ) ;
31- skippedRepos = createMockSkippedRepos ( ) ;
32-
33- mockApiResponse = createMockApiResponse ( ) ;
34- mockSubmission = createMockSubmission ( ) ;
35- } ) ;
22+ const scannedRepos = createMockScannedRepos ( ) ;
23+ const skippedRepos = createMockSkippedRepos ( ) ;
24+ const mockApiResponse = createMockApiResponse ( scannedRepos , skippedRepos ) ;
25+ const mockSubmission = createMockSubmission ( ) ;
3626
3727 it ( 'should process an API response and return a variant analysis' , ( ) => {
3828 const result = processVariantAnalysis ( mockSubmission , mockApiResponse ) ;
@@ -42,7 +32,7 @@ describe('Variant Analysis processor', function() {
4232 'controllerRepoId' : 456 ,
4333 'query' : {
4434 'filePath' : 'query-file-path' ,
45- 'language' : 'javascript' ,
35+ 'language' : VariantAnalysisQueryLanguage . Javascript ,
4636 'name' : 'query-name' ,
4737 } ,
4838 'databases' : {
@@ -52,142 +42,29 @@ describe('Variant Analysis processor', function() {
5242 } ,
5343 'status' : 'succeeded' ,
5444 'actionsWorkflowRunId' : 456 ,
55- 'failureReason' : 'internal_error' ,
5645 'scannedRepos' : [
57- {
58- 'analysisStatus' : 'succeeded' ,
59- 'artifactSizeInBytes' : scannedRepo1 . artifact_size_in_bytes ,
60- 'failureMessage' : '' ,
61- 'repository' : {
62- 'fullName' : scannedRepo1 . repository . full_name ,
63- 'id' : scannedRepo1 . repository . id ,
64- 'private' : scannedRepo1 . repository . private ,
65- } ,
66- 'resultCount' : scannedRepo1 . result_count
67- } ,
68- {
69- 'analysisStatus' : 'pending' ,
70- 'artifactSizeInBytes' : scannedRepo2 . artifact_size_in_bytes ,
71- 'failureMessage' : '' ,
72- 'repository' : {
73- 'fullName' : scannedRepo2 . repository . full_name ,
74- 'id' : scannedRepo2 . repository . id ,
75- 'private' : scannedRepo2 . repository . private ,
76- } ,
77- 'resultCount' : scannedRepo2 . result_count
78- } ,
79- {
80- 'analysisStatus' : 'inProgress' ,
81- 'artifactSizeInBytes' : scannedRepo3 . artifact_size_in_bytes ,
82- 'failureMessage' : '' ,
83- 'repository' : {
84- 'fullName' : scannedRepo3 . repository . full_name ,
85- 'id' : scannedRepo3 . repository . id ,
86- 'private' : scannedRepo3 . repository . private ,
87- } ,
88- 'resultCount' : scannedRepo3 . result_count
89- }
46+ transformScannedRepo ( VariantAnalysisRepoStatus . Succeeded , scannedRepos [ 0 ] ) ,
47+ transformScannedRepo ( VariantAnalysisRepoStatus . Pending , scannedRepos [ 1 ] ) ,
48+ transformScannedRepo ( VariantAnalysisRepoStatus . InProgress , scannedRepos [ 2 ] ) ,
9049 ] ,
9150 'skippedRepos' : transformSkippedRepos ( skippedRepos )
9251 } ) ;
9352 } ) ;
9453
95- function createMockApiResponse ( ) : VariantAnalysisApiResponse {
96- const variantAnalysis : VariantAnalysisApiResponse = {
97- id : 123 ,
98- controller_repo : {
99- id : 456 ,
100- name : 'pickles' ,
101- full_name : 'github/pickles' ,
102- private : false ,
103- } ,
104- actor_id : 123 ,
105- query_language : 'javascript' ,
106- query_pack_url : 'https://example.com/foo' ,
107- status : 'in_progress' ,
108- actions_workflow_run_id : 456 ,
109- failure_reason : 'internal_error' ,
110- scanned_repositories : [ scannedRepo1 , scannedRepo2 , scannedRepo3 ] ,
111- skipped_repositories : skippedRepos
112- } ;
113-
114- return variantAnalysis ;
115- }
116-
117- function createMockScannedRepo (
118- name : string ,
119- isPrivate : boolean ,
120- analysisStatus : ApiVariantAnalysisRepoStatus ,
121- ) : ApiVariantAnalysisScannedRepository {
122- return {
123- repository : {
124- id : faker . datatype . number ( ) ,
125- name : name ,
126- full_name : 'github/' + name ,
127- private : isPrivate ,
128- } ,
129- analysis_status : analysisStatus ,
130- result_count : faker . datatype . number ( ) ,
131- artifact_size_in_bytes : faker . datatype . number ( ) ,
132- failure_message : ''
133- } ;
134- }
135-
136- function createMockSubmission ( ) : VariantAnalysisSubmission {
54+ function transformScannedRepo (
55+ status : VariantAnalysisRepoStatus ,
56+ scannedRepo : ApiVariantAnalysisScannedRepository
57+ ) : VariantAnalysisScannedRepository {
13758 return {
138- startTime : 1234 ,
139- controllerRepoId : 5678 ,
140- actionRepoRef : 'repo-ref' ,
141- query : {
142- name : 'query-name' ,
143- filePath : 'query-file-path' ,
144- language : VariantAnalysisQueryLanguage . Javascript ,
145- pack : 'base64-encoded-string' ,
59+ 'analysisStatus' : status ,
60+ 'artifactSizeInBytes' : scannedRepo . artifact_size_in_bytes ,
61+ 'failureMessage' : scannedRepo . failure_message ,
62+ 'repository' : {
63+ 'fullName' : scannedRepo . repository . full_name ,
64+ 'id' : scannedRepo . repository . id ,
65+ 'private' : scannedRepo . repository . private ,
14666 } ,
147- databases : {
148- repositories : [ '1' , '2' , '3' ] ,
149- repositoryLists : [ 'top10' , 'top100' ] ,
150- repositoryOwners : [ 'mona' , 'lisa' ] ,
151- }
152- } ;
153- }
154-
155- function createMockSkippedRepos ( ) : ApiVariantAnalysisSkippedRepositories {
156- return {
157- access_mismatch_repos : createMockSkippedRepoGroup ( ) ,
158- no_codeql_db_repos : createMockSkippedRepoGroup ( ) ,
159- not_found_repo_nwos : createMockNotFoundSkippedRepoGroup ( ) ,
160- over_limit_repos : createMockSkippedRepoGroup ( )
161- } ;
162- }
163-
164- function createMockSkippedRepoGroup ( ) : ApiVariantAnalysisSkippedRepositoryGroup {
165- return {
166- repository_count : 2 ,
167- repositories : [
168- {
169- id : faker . datatype . number ( ) ,
170- name : faker . random . word ( ) ,
171- full_name : 'github/' + faker . random . word ( ) ,
172- private : true
173- } ,
174- {
175- id : faker . datatype . number ( ) ,
176- name : faker . random . word ( ) ,
177- full_name : 'github/' + faker . random . word ( ) ,
178- private : false
179- }
180- ]
181- } ;
182- }
183-
184- function createMockNotFoundSkippedRepoGroup ( ) : ApiVariantAnalysisNotFoundRepositoryGroup {
185- const repoName1 = 'github' + faker . random . word ( ) ;
186- const repoName2 = 'github' + faker . random . word ( ) ;
187-
188- return {
189- repository_count : 2 ,
190- repository_nwos : [ repoName1 , repoName2 ]
67+ 'resultCount' : scannedRepo . result_count
19168 } ;
19269 }
19370
0 commit comments