Add repository metadata to types
This adds the new `stargazers_count` and `updated_at` fields in the repositories to the appropriate `gh-api` and `shared` types. To make testing easier this also moves the `variant-analysis-processor.test.ts` to the pure tests since it doesn't and shouldn't depend on any `vscode` APIs.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* Defines basic information about a repository.
|
||||
*
|
||||
*
|
||||
* Different parts of the API may return different subsets of information
|
||||
* about a repository, but this model represents the very basic information
|
||||
* that will always be available.
|
||||
@@ -11,3 +11,8 @@ export interface Repository {
|
||||
full_name: string,
|
||||
private: boolean,
|
||||
}
|
||||
|
||||
export interface RepositoryWithMetadata extends Repository {
|
||||
stargazers_count: number;
|
||||
updated_at: string | null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Repository } from './repository';
|
||||
import { Repository, RepositoryWithMetadata } from './repository';
|
||||
|
||||
export interface VariantAnalysisSubmissionRequest {
|
||||
action_repo_ref: string,
|
||||
@@ -50,7 +50,7 @@ export type VariantAnalysisRepoStatus =
|
||||
| 'timed_out';
|
||||
|
||||
export interface VariantAnalysisScannedRepository {
|
||||
repository: Repository,
|
||||
repository: RepositoryWithMetadata,
|
||||
analysis_status: VariantAnalysisRepoStatus,
|
||||
result_count?: number,
|
||||
artifact_size_in_bytes?: number,
|
||||
@@ -59,7 +59,7 @@ export interface VariantAnalysisScannedRepository {
|
||||
|
||||
export interface VariantAnalysisSkippedRepositoryGroup {
|
||||
repository_count: number,
|
||||
repositories: Repository[]
|
||||
repositories: RepositoryWithMetadata[]
|
||||
}
|
||||
|
||||
export interface VariantAnalysisNotFoundRepositoryGroup {
|
||||
|
||||
@@ -3,3 +3,8 @@ export interface Repository {
|
||||
fullName: string,
|
||||
private: boolean,
|
||||
}
|
||||
|
||||
export interface RepositoryWithMetadata extends Repository {
|
||||
stargazersCount: number;
|
||||
updatedAt: string | null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Repository } from './repository';
|
||||
import { Repository, RepositoryWithMetadata } from './repository';
|
||||
import { AnalysisAlert, AnalysisRawResults } from './analysis-result';
|
||||
|
||||
export interface VariantAnalysis {
|
||||
@@ -62,7 +62,7 @@ export enum VariantAnalysisRepoStatus {
|
||||
}
|
||||
|
||||
export interface VariantAnalysisScannedRepository {
|
||||
repository: Repository,
|
||||
repository: RepositoryWithMetadata,
|
||||
analysisStatus: VariantAnalysisRepoStatus,
|
||||
resultCount?: number,
|
||||
artifactSizeInBytes?: number,
|
||||
@@ -85,6 +85,8 @@ export interface VariantAnalysisSkippedRepository {
|
||||
id?: number,
|
||||
fullName: string,
|
||||
private?: boolean,
|
||||
stargazersCount?: number,
|
||||
updatedAt?: string | null,
|
||||
}
|
||||
|
||||
export enum VariantAnalysisScannedRepositoryDownloadStatus {
|
||||
|
||||
@@ -85,6 +85,8 @@ function processScannedRepositories(
|
||||
id: scannedRepo.repository.id,
|
||||
fullName: scannedRepo.repository.full_name,
|
||||
private: scannedRepo.repository.private,
|
||||
stargazersCount: scannedRepo.repository.stargazers_count,
|
||||
updatedAt: scannedRepo.repository.updated_at,
|
||||
},
|
||||
analysisStatus: processApiRepoStatus(scannedRepo.analysis_status),
|
||||
resultCount: scannedRepo.result_count,
|
||||
@@ -114,7 +116,10 @@ function processRepoGroup(repoGroup: ApiVariantAnalysisSkippedRepositoryGroup |
|
||||
const repos = repoGroup.repositories.map(repo => {
|
||||
return {
|
||||
id: repo.id,
|
||||
fullName: repo.full_name
|
||||
fullName: repo.full_name,
|
||||
private: repo.private,
|
||||
stargazersCount: repo.stargazers_count,
|
||||
updatedAt: repo.updated_at
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -15,6 +15,8 @@ export function createMockScannedRepo(
|
||||
name: name,
|
||||
full_name: 'github/' + name,
|
||||
private: isPrivate,
|
||||
stargazers_count: faker.datatype.number(),
|
||||
updated_at: faker.date.past().toISOString(),
|
||||
},
|
||||
analysis_status: analysisStatus,
|
||||
result_count: faker.datatype.number(),
|
||||
|
||||
@@ -22,13 +22,17 @@ export function createMockSkippedRepoGroup(): VariantAnalysisSkippedRepositoryGr
|
||||
id: faker.datatype.number(),
|
||||
name: faker.random.word(),
|
||||
full_name: 'github/' + faker.random.word(),
|
||||
private: true
|
||||
private: true,
|
||||
stargazers_count: faker.datatype.number(),
|
||||
updated_at: faker.date.past().toISOString()
|
||||
},
|
||||
{
|
||||
id: faker.datatype.number(),
|
||||
name: faker.random.word(),
|
||||
full_name: 'github/' + faker.random.word(),
|
||||
private: false
|
||||
private: false,
|
||||
stargazers_count: faker.datatype.number(),
|
||||
updated_at: faker.date.past().toISOString()
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
import { expect } from 'chai';
|
||||
import {
|
||||
VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository,
|
||||
} from '../../../remote-queries/gh-api/variant-analysis';
|
||||
VariantAnalysisScannedRepository as ApiVariantAnalysisScannedRepository
|
||||
} from '../../../src/remote-queries/gh-api/variant-analysis';
|
||||
import {
|
||||
VariantAnalysisQueryLanguage,
|
||||
VariantAnalysisScannedRepository,
|
||||
VariantAnalysisRepoStatus
|
||||
} from '../../../remote-queries/shared/variant-analysis';
|
||||
import { processVariantAnalysis } from '../../../remote-queries/variant-analysis-processor';
|
||||
import { createMockScannedRepos } from '../../factories/remote-queries/gh-api/scanned-repositories';
|
||||
import { createMockSkippedRepos } from '../../factories/remote-queries/gh-api/skipped-repositories';
|
||||
import { createMockApiResponse } from '../../factories/remote-queries/gh-api/variant-analysis-api-response';
|
||||
import { createMockSubmission } from '../../factories/remote-queries/shared/variant-analysis-submission';
|
||||
} from '../../../src/remote-queries/shared/variant-analysis';
|
||||
import { processVariantAnalysis } from '../../../src/remote-queries/variant-analysis-processor';
|
||||
import { createMockScannedRepos } from '../../../src/vscode-tests/factories/remote-queries/gh-api/scanned-repositories';
|
||||
import { createMockSkippedRepos } from '../../../src/vscode-tests/factories/remote-queries/gh-api/skipped-repositories';
|
||||
import {
|
||||
createMockApiResponse
|
||||
} from '../../../src/vscode-tests/factories/remote-queries/gh-api/variant-analysis-api-response';
|
||||
import {
|
||||
createMockSubmission
|
||||
} from '../../../src/vscode-tests/factories/remote-queries/shared/variant-analysis-submission';
|
||||
|
||||
describe('Variant Analysis processor', function() {
|
||||
const scannedRepos = createMockScannedRepos();
|
||||
@@ -56,11 +60,17 @@ describe('Variant Analysis processor', function() {
|
||||
'repositories': [
|
||||
{
|
||||
'fullName': access_mismatch_repos?.repositories[0].full_name,
|
||||
'id': access_mismatch_repos?.repositories[0].id
|
||||
'id': access_mismatch_repos?.repositories[0].id,
|
||||
'private': access_mismatch_repos?.repositories[0].private,
|
||||
'stargazersCount': access_mismatch_repos?.repositories[0].stargazers_count,
|
||||
'updatedAt': access_mismatch_repos?.repositories[0].updated_at,
|
||||
},
|
||||
{
|
||||
'fullName': access_mismatch_repos?.repositories[1].full_name,
|
||||
'id': access_mismatch_repos?.repositories[1].id
|
||||
'id': access_mismatch_repos?.repositories[1].id,
|
||||
'private': access_mismatch_repos?.repositories[1].private,
|
||||
'stargazersCount': access_mismatch_repos?.repositories[1].stargazers_count,
|
||||
'updatedAt': access_mismatch_repos?.repositories[1].updated_at,
|
||||
}
|
||||
],
|
||||
'repositoryCount': access_mismatch_repos?.repository_count
|
||||
@@ -69,11 +79,17 @@ describe('Variant Analysis processor', function() {
|
||||
'repositories': [
|
||||
{
|
||||
'fullName': no_codeql_db_repos?.repositories[0].full_name,
|
||||
'id': no_codeql_db_repos?.repositories[0].id
|
||||
'id': no_codeql_db_repos?.repositories[0].id,
|
||||
'private': no_codeql_db_repos?.repositories[0].private,
|
||||
'stargazersCount': no_codeql_db_repos?.repositories[0].stargazers_count,
|
||||
'updatedAt': no_codeql_db_repos?.repositories[0].updated_at,
|
||||
},
|
||||
{
|
||||
'fullName': no_codeql_db_repos?.repositories[1].full_name,
|
||||
'id': no_codeql_db_repos?.repositories[1].id,
|
||||
'private': no_codeql_db_repos?.repositories[1].private,
|
||||
'stargazersCount': no_codeql_db_repos?.repositories[1].stargazers_count,
|
||||
'updatedAt': no_codeql_db_repos?.repositories[1].updated_at,
|
||||
}
|
||||
],
|
||||
'repositoryCount': 2
|
||||
@@ -93,11 +109,17 @@ describe('Variant Analysis processor', function() {
|
||||
'repositories': [
|
||||
{
|
||||
'fullName': over_limit_repos?.repositories[0].full_name,
|
||||
'id': over_limit_repos?.repositories[0].id
|
||||
'id': over_limit_repos?.repositories[0].id,
|
||||
'private': over_limit_repos?.repositories[0].private,
|
||||
'stargazersCount': over_limit_repos?.repositories[0].stargazers_count,
|
||||
'updatedAt': over_limit_repos?.repositories[0].updated_at,
|
||||
},
|
||||
{
|
||||
'fullName': over_limit_repos?.repositories[1].full_name,
|
||||
'id': over_limit_repos?.repositories[1].id
|
||||
'id': over_limit_repos?.repositories[1].id,
|
||||
'private': over_limit_repos?.repositories[1].private,
|
||||
'stargazersCount': over_limit_repos?.repositories[1].stargazers_count,
|
||||
'updatedAt': over_limit_repos?.repositories[1].updated_at,
|
||||
}
|
||||
],
|
||||
'repositoryCount': over_limit_repos?.repository_count
|
||||
@@ -118,6 +140,8 @@ describe('Variant Analysis processor', function() {
|
||||
'fullName': scannedRepo.repository.full_name,
|
||||
'id': scannedRepo.repository.id,
|
||||
'private': scannedRepo.repository.private,
|
||||
'stargazersCount': scannedRepo.repository.stargazers_count,
|
||||
'updatedAt': scannedRepo.repository.updated_at
|
||||
},
|
||||
'resultCount': scannedRepo.result_count
|
||||
};
|
||||
Reference in New Issue
Block a user