Fix typings on Storybook stories

It seems like the Storybook stories were not being type-checked by CI
and got out-of-sync with the required types. This fixes the types and
also uses the factories to reduce the chance of this happening with
future changes.
This commit is contained in:
Koen Vlaswinkel
2022-11-01 14:09:12 +01:00
parent 5a2a9fc4bf
commit fcb1ef4fd7
20 changed files with 350 additions and 377 deletions

View File

@@ -8,6 +8,7 @@ import {
VariantAnalysisScannedRepositoryDownloadStatus,
} from '../../remote-queries/shared/variant-analysis';
import { AnalysisAlert, AnalysisRawResults } from '../../remote-queries/shared/analysis-result';
import { createMockRepositoryWithMetadata } from '../../vscode-tests/factories/remote-queries/shared/repository';
import analysesResults from '../remote-queries/data/analysesResultsMessage.json';
import rawResults from '../remote-queries/data/rawResults.json';
@@ -32,6 +33,7 @@ const Template: ComponentStory<typeof RepoRow> = (args) => (
export const Pending = Template.bind({});
Pending.args = {
repository: {
...createMockRepositoryWithMetadata(),
id: 63537249,
fullName: 'facebook/create-react-app',
private: false,
@@ -99,6 +101,7 @@ SkippedOnlyFullName.args = {
export const SkippedPublic = Template.bind({});
SkippedPublic.args = {
repository: {
...createMockRepositoryWithMetadata(),
fullName: 'octodemo/hello-globe',
private: false,
}
@@ -107,6 +110,7 @@ SkippedPublic.args = {
export const SkippedPrivate = Template.bind({});
SkippedPrivate.args = {
repository: {
...createMockRepositoryWithMetadata(),
fullName: 'octodemo/hello-globe',
private: true,
}

View File

@@ -5,13 +5,14 @@ import { ComponentMeta, ComponentStory } from '@storybook/react';
import { VariantAnalysis as VariantAnalysisComponent } from '../../view/variant-analysis/VariantAnalysis';
import {
VariantAnalysis as VariantAnalysisDomainModel,
VariantAnalysisQueryLanguage,
VariantAnalysisRepoStatus,
VariantAnalysisScannedRepositoryDownloadStatus,
VariantAnalysisScannedRepositoryResult,
VariantAnalysisScannedRepositoryState,
VariantAnalysisStatus
} from '../../remote-queries/shared/variant-analysis';
import { createMockVariantAnalysis } from '../../vscode-tests/factories/remote-queries/shared/variant-analysis';
import { createMockRepositoryWithMetadata } from '../../vscode-tests/factories/remote-queries/shared/repository';
export default {
title: 'Variant Analysis/Variant Analysis',
@@ -23,23 +24,19 @@ const Template: ComponentStory<typeof VariantAnalysisComponent> = (args) => (
);
const variantAnalysis: VariantAnalysisDomainModel = {
id: 1,
...createMockVariantAnalysis(VariantAnalysisStatus.InProgress),
controllerRepo: {
id: 1,
fullName: 'octodemo/variant-analysis-controller',
private: false,
},
actionsWorkflowRunId: 789263,
query: {
name: 'Example query',
filePath: 'example.ql',
language: VariantAnalysisQueryLanguage.Javascript,
},
databases: {},
status: VariantAnalysisStatus.InProgress,
scannedRepos: [
{
repository: {
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,
@@ -48,6 +45,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 2,
fullName: 'octodemo/hello-world-2',
private: false,
@@ -56,6 +54,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 3,
fullName: 'octodemo/hello-world-3',
private: false,
@@ -64,6 +63,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 4,
fullName: 'octodemo/hello-world-4',
private: false,
@@ -72,6 +72,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 5,
fullName: 'octodemo/hello-world-5',
private: false,
@@ -80,6 +81,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 6,
fullName: 'octodemo/hello-world-6',
private: false,
@@ -88,6 +90,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 7,
fullName: 'octodemo/hello-world-7',
private: false,
@@ -96,6 +99,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 8,
fullName: 'octodemo/hello-world-8',
private: false,
@@ -104,6 +108,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 9,
fullName: 'octodemo/hello-world-9',
private: false,
@@ -112,6 +117,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 10,
fullName: 'octodemo/hello-world-10',
private: false,
@@ -135,18 +141,22 @@ const variantAnalysis: VariantAnalysisDomainModel = {
repositoryCount: 4,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 100,
fullName: 'octodemo/no-db-1'
},
{
...createMockRepositoryWithMetadata(),
id: 101,
fullName: 'octodemo/no-db-2'
},
{
...createMockRepositoryWithMetadata(),
id: 102,
fullName: 'octodemo/no-db-3'
},
{
...createMockRepositoryWithMetadata(),
id: 103,
fullName: 'octodemo/no-db-4'
}
@@ -156,6 +166,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
repositoryCount: 1,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 201,
fullName: 'octodemo/over-limit-1'
}
@@ -165,6 +176,7 @@ const variantAnalysis: VariantAnalysisDomainModel = {
repositoryCount: 1,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 205,
fullName: 'octodemo/private'
}

View File

@@ -5,11 +5,12 @@ import { ComponentMeta, ComponentStory } from '@storybook/react';
import { VariantAnalysisContainer } from '../../view/variant-analysis/VariantAnalysisContainer';
import { VariantAnalysisAnalyzedRepos } from '../../view/variant-analysis/VariantAnalysisAnalyzedRepos';
import {
VariantAnalysisQueryLanguage,
VariantAnalysisRepoStatus,
VariantAnalysisStatus
} from '../../remote-queries/shared/variant-analysis';
import { AnalysisAlert } from '../../remote-queries/shared/analysis-result';
import { createMockVariantAnalysis } from '../../vscode-tests/factories/remote-queries/shared/variant-analysis';
import { createMockRepositoryWithMetadata } from '../../vscode-tests/factories/remote-queries/shared/repository';
import analysesResults from '../remote-queries/data/analysesResultsMessage.json';
@@ -35,73 +36,64 @@ const interpretedResultsForRepo = (nwo: string): AnalysisAlert[] | undefined =>
export const Example = Template.bind({});
Example.args = {
variantAnalysis: {
id: 1,
controllerRepo: {
id: 1,
fullName: 'octodemo/variant-analysis-controller',
private: false,
variantAnalysis: createMockVariantAnalysis(VariantAnalysisStatus.InProgress, [
{
repository: {
...createMockRepositoryWithMetadata(),
id: 63537249,
fullName: 'facebook/create-react-app',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Succeeded, resultCount: 198,
},
query: {
name: 'Query name',
filePath: 'example.ql',
language: VariantAnalysisQueryLanguage.Javascript,
{
repository: {
...createMockRepositoryWithMetadata(),
id: 167174,
fullName: 'jquery/jquery',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 67,
},
databases: {},
status: VariantAnalysisStatus.InProgress,
scannedRepos: [
{
repository: {
id: 63537249,
fullName: 'facebook/create-react-app',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Succeeded, resultCount: 198,
{
repository: {
...createMockRepositoryWithMetadata(),
id: 237159,
fullName: 'expressjs/express',
private: false,
},
{
repository: {
id: 167174,
fullName: 'jquery/jquery',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 67,
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 26,
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 15062869,
fullName: 'facebook/jest',
private: false,
},
{
repository: {
id: 237159,
fullName: 'expressjs/express',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 26,
analysisStatus: VariantAnalysisRepoStatus.Failed,
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 24195339,
fullName: 'angular/angular',
private: false,
},
{
repository: {
id: 15062869,
fullName: 'facebook/jest',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Failed,
analysisStatus: VariantAnalysisRepoStatus.InProgress,
},
{
repository: {
...createMockRepositoryWithMetadata(),
id: 24560307,
fullName: 'babel/babel',
private: false,
},
{
repository: {
id: 24195339,
fullName: 'angular/angular',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.InProgress,
},
{
repository: {
id: 24560307,
fullName: 'babel/babel',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
]
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
]),
repositoryResults: [
{
variantAnalysisId: 1,

View File

@@ -4,13 +4,9 @@ import { ComponentMeta, ComponentStory } from '@storybook/react';
import { VariantAnalysisContainer } from '../../view/variant-analysis/VariantAnalysisContainer';
import { VariantAnalysisHeader } from '../../view/variant-analysis/VariantAnalysisHeader';
import {
VariantAnalysis,
VariantAnalysisQueryLanguage,
VariantAnalysisRepoStatus,
VariantAnalysisScannedRepository,
VariantAnalysisStatus
} from '../../remote-queries/shared/variant-analysis';
import { VariantAnalysisRepoStatus, VariantAnalysisStatus } from '../../remote-queries/shared/variant-analysis';
import { createMockVariantAnalysis } from '../../vscode-tests/factories/remote-queries/shared/variant-analysis';
import { createMockScannedRepo } from '../../vscode-tests/factories/remote-queries/shared/scanned-repositories';
export default {
title: 'Variant Analysis/Variant Analysis Header',
@@ -66,79 +62,53 @@ const Template: ComponentStory<typeof VariantAnalysisHeader> = (args) => (
<VariantAnalysisHeader {...args} />
);
const buildVariantAnalysis = (data: Partial<VariantAnalysis>) => ({
id: 1,
controllerRepo: {
id: 1,
fullName: 'octodemo/variant-analysis-controller',
private: false,
},
query: {
name: 'Query name',
filePath: 'example.ql',
language: VariantAnalysisQueryLanguage.Javascript,
},
databases: {},
status: VariantAnalysisStatus.InProgress,
...data,
});
const buildScannedRepo = (id: number, data?: Partial<VariantAnalysisScannedRepository>): VariantAnalysisScannedRepository => ({
repository: {
id: id,
fullName: `octodemo/hello-world-${id}`,
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
...data,
});
export const InProgress = Template.bind({});
InProgress.args = {
variantAnalysis: buildVariantAnalysis({
scannedRepos: [
buildScannedRepo(1, {
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 99_999,
}),
buildScannedRepo(2, {
analysisStatus: VariantAnalysisRepoStatus.Failed,
}),
buildScannedRepo(3, {
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 0,
}),
buildScannedRepo(4),
buildScannedRepo(5),
buildScannedRepo(6),
buildScannedRepo(7),
buildScannedRepo(8),
buildScannedRepo(9),
buildScannedRepo(10),
]
}),
variantAnalysis: createMockVariantAnalysis(VariantAnalysisStatus.InProgress, [
{
...createMockScannedRepo(),
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 99_999,
},
{
...createMockScannedRepo(),
analysisStatus: VariantAnalysisRepoStatus.Failed,
},
{
...createMockScannedRepo(),
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 0,
},
createMockScannedRepo(),
createMockScannedRepo(),
createMockScannedRepo(),
createMockScannedRepo(),
createMockScannedRepo(),
createMockScannedRepo(),
createMockScannedRepo(),
]),
};
export const Succeeded = Template.bind({});
Succeeded.args = {
...InProgress.args,
variantAnalysis: buildVariantAnalysis({
status: VariantAnalysisStatus.Succeeded,
scannedRepos: Array.from({ length: 1000 }, (_, i) => buildScannedRepo(i + 1, {
variantAnalysis: {
...createMockVariantAnalysis(VariantAnalysisStatus.Succeeded, Array.from({ length: 1000 }, (_) => ({
...createMockScannedRepo(),
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 100,
}))
}),
duration: 720_000,
completedAt: new Date(1661263446000),
}))),
createdAt: new Date(1661262726000).toISOString(),
completedAt: new Date(1661263446000).toISOString(),
},
};
export const Failed = Template.bind({});
Failed.args = {
...InProgress.args,
variantAnalysis: buildVariantAnalysis({
status: VariantAnalysisStatus.Failed,
}),
duration: 10_000,
completedAt: new Date(1661263446000),
variantAnalysis: {
...createMockVariantAnalysis(VariantAnalysisStatus.Failed, [], {}),
createdAt: new Date(1661263436000).toISOString(),
completedAt: new Date(1661263446000).toISOString(),
},
};

View File

@@ -4,13 +4,10 @@ import { ComponentMeta, ComponentStory } from '@storybook/react';
import { VariantAnalysisContainer } from '../../view/variant-analysis/VariantAnalysisContainer';
import { VariantAnalysisOutcomePanels } from '../../view/variant-analysis/VariantAnalysisOutcomePanels';
import {
VariantAnalysis,
VariantAnalysisQueryLanguage,
VariantAnalysisRepoStatus,
VariantAnalysisScannedRepository,
VariantAnalysisStatus
} from '../../remote-queries/shared/variant-analysis';
import { VariantAnalysisRepoStatus, VariantAnalysisStatus } from '../../remote-queries/shared/variant-analysis';
import { createMockScannedRepo } from '../../vscode-tests/factories/remote-queries/shared/scanned-repositories';
import { createMockVariantAnalysis } from '../../vscode-tests/factories/remote-queries/shared/variant-analysis';
import { createMockRepositoryWithMetadata } from '../../vscode-tests/factories/remote-queries/shared/repository';
export default {
title: 'Variant Analysis/Variant Analysis Outcome Panels',
@@ -28,128 +25,123 @@ const Template: ComponentStory<typeof VariantAnalysisOutcomePanels> = (args) =>
<VariantAnalysisOutcomePanels {...args} />
);
const buildVariantAnalysis = (data: Partial<VariantAnalysis>) => ({
id: 1,
controllerRepo: {
id: 1,
fullName: 'octodemo/variant-analysis-controller',
private: false,
},
query: {
name: 'Query name',
filePath: 'example.ql',
language: VariantAnalysisQueryLanguage.Javascript,
},
databases: {},
status: VariantAnalysisStatus.InProgress,
...data,
});
const buildScannedRepo = (id: number, data?: Partial<VariantAnalysisScannedRepository>): VariantAnalysisScannedRepository => ({
repository: {
id: id,
fullName: `octodemo/hello-world-${id}`,
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
...data,
});
export const WithoutSkippedRepos = Template.bind({});
WithoutSkippedRepos.args = {
variantAnalysis: buildVariantAnalysis({
scannedRepos: [
buildScannedRepo(1, {
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 99_999,
}),
buildScannedRepo(2, {
analysisStatus: VariantAnalysisRepoStatus.Failed,
}),
buildScannedRepo(3, {
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 0,
}),
buildScannedRepo(4),
buildScannedRepo(5),
buildScannedRepo(6),
buildScannedRepo(7),
buildScannedRepo(8),
buildScannedRepo(9),
buildScannedRepo(10),
]
}),
variantAnalysis: createMockVariantAnalysis(VariantAnalysisStatus.InProgress, [
{
...createMockScannedRepo('hello-world-1'),
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 99_999,
},
{
...createMockScannedRepo('hello-world-2'),
analysisStatus: VariantAnalysisRepoStatus.Failed,
},
{
...createMockScannedRepo('hello-world-3'),
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
resultCount: 0,
},
{
...createMockScannedRepo('hello-world-4'),
resultCount: undefined,
},
{
...createMockScannedRepo('hello-world-5'),
resultCount: undefined,
},
{
...createMockScannedRepo('hello-world-6'),
resultCount: undefined,
},
{
...createMockScannedRepo('hello-world-7'),
resultCount: undefined,
},
{
...createMockScannedRepo('hello-world-8'),
resultCount: undefined,
},
{
...createMockScannedRepo('hello-world-9'),
resultCount: undefined,
},
{
...createMockScannedRepo('hello-world-10'),
resultCount: undefined,
},
]),
};
export const WithSkippedRepos = Template.bind({});
WithSkippedRepos.args = {
...WithoutSkippedRepos.args,
variantAnalysis: buildVariantAnalysis({
...WithoutSkippedRepos.args.variantAnalysis,
skippedRepos: {
notFoundRepos: {
repositoryCount: 2,
repositories: [
{
fullName: 'octodemo/hello-globe'
},
{
fullName: 'octodemo/hello-planet'
}
]
},
noCodeqlDbRepos: {
repositoryCount: 4,
repositories: [
{
id: 100,
fullName: 'octodemo/no-db-1'
},
{
id: 101,
fullName: 'octodemo/no-db-2'
},
{
id: 102,
fullName: 'octodemo/no-db-3'
},
{
id: 103,
fullName: 'octodemo/no-db-4'
}
]
},
overLimitRepos: {
repositoryCount: 1,
repositories: [
{
id: 201,
fullName: 'octodemo/over-limit-1'
}
]
},
accessMismatchRepos: {
repositoryCount: 1,
repositories: [
{
id: 205,
fullName: 'octodemo/private'
}
]
}
variantAnalysis: createMockVariantAnalysis(VariantAnalysisStatus.InProgress, WithoutSkippedRepos.args.variantAnalysis?.scannedRepos, {
notFoundRepos: {
repositoryCount: 2,
repositories: [
{
fullName: 'octodemo/hello-globe'
},
{
fullName: 'octodemo/hello-planet'
}
]
},
noCodeqlDbRepos: {
repositoryCount: 4,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 100,
fullName: 'octodemo/no-db-1'
},
{
...createMockRepositoryWithMetadata(),
id: 101,
fullName: 'octodemo/no-db-2'
},
{
...createMockRepositoryWithMetadata(),
id: 102,
fullName: 'octodemo/no-db-3'
},
{
...createMockRepositoryWithMetadata(),
id: 103,
fullName: 'octodemo/no-db-4'
}
]
},
overLimitRepos: {
repositoryCount: 1,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 201,
fullName: 'octodemo/over-limit-1'
}
]
},
accessMismatchRepos: {
repositoryCount: 1,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 205,
fullName: 'octodemo/private'
}
]
}
}),
};
export const WithOnlyWarningsSkippedRepos = Template.bind({});
WithOnlyWarningsSkippedRepos.args = {
...WithoutSkippedRepos.args,
variantAnalysis: buildVariantAnalysis({
...WithSkippedRepos.args.variantAnalysis,
skippedRepos: {
...WithSkippedRepos.args.variantAnalysis?.skippedRepos,
notFoundRepos: undefined,
noCodeqlDbRepos: undefined,
}
variantAnalysis: createMockVariantAnalysis(VariantAnalysisStatus.InProgress, WithoutSkippedRepos.args.variantAnalysis?.scannedRepos, {
...WithSkippedRepos.args.variantAnalysis?.skippedRepos,
notFoundRepos: undefined,
noCodeqlDbRepos: undefined,
}),
};

View File

@@ -4,6 +4,7 @@ import { ComponentMeta, ComponentStory } from '@storybook/react';
import { VariantAnalysisContainer } from '../../view/variant-analysis/VariantAnalysisContainer';
import { VariantAnalysisSkippedRepositoriesTab } from '../../view/variant-analysis/VariantAnalysisSkippedRepositoriesTab';
import { createMockRepositoryWithMetadata } from '../../vscode-tests/factories/remote-queries/shared/repository';
export default {
title: 'Variant Analysis/Variant Analysis Skipped Repositories Tab',
@@ -65,11 +66,13 @@ NoDatabaseNoOmissions.args = {
repositoryCount: 2,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-globe',
private: false,
},
{
...createMockRepositoryWithMetadata(),
id: 2,
fullName: 'octodemo/hello-planet',
private: true,
@@ -85,16 +88,19 @@ NoDatabaseWithOmissions.args = {
repositoryCount: 12345,
repositories: [
{
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-globe',
private: false,
},
{
...createMockRepositoryWithMetadata(),
id: 2,
fullName: 'octodemo/hello-planet',
private: true,
},
{
...createMockRepositoryWithMetadata(),
id: 3,
fullName: 'octodemo/hello-universe',
private: false,

View File

@@ -55,7 +55,7 @@ Succeeded.args = {
totalRepositoryCount: 1000,
completedRepositoryCount: 1000,
variantAnalysisStatus: VariantAnalysisStatus.Succeeded,
duration: 720_000,
createdAt: new Date(1661262726000),
completedAt: new Date(1661263446000),
};
@@ -71,7 +71,7 @@ export const Failed = Template.bind({});
Failed.args = {
...Starting.args,
variantAnalysisStatus: VariantAnalysisStatus.Failed,
duration: 10_000,
createdAt: new Date(1661263436000),
completedAt: new Date(1661263446000),
};

View File

@@ -3,12 +3,14 @@ import { render as reactRender, screen } from '@testing-library/react';
import { VariantAnalysisRepoStatus } from '../../../remote-queries/shared/variant-analysis';
import userEvent from '@testing-library/user-event';
import { RepoRow, RepoRowProps } from '../RepoRow';
import { createMockRepositoryWithMetadata } from '../../../vscode-tests/factories/remote-queries/shared/repository';
describe(RepoRow.name, () => {
const render = (props: Partial<RepoRowProps> = {}) => {
return reactRender(
<RepoRow
repository={{
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,
@@ -115,6 +117,7 @@ describe(RepoRow.name, () => {
it('shows visibility when public', () => {
render({
repository: {
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,
@@ -127,6 +130,7 @@ describe(RepoRow.name, () => {
it('shows visibility when private', () => {
render({
repository: {
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-world-1',
private: true,
@@ -200,6 +204,7 @@ describe(RepoRow.name, () => {
rerender(
<RepoRow
repository={{
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,

View File

@@ -2,67 +2,57 @@ import * as React from 'react';
import { render as reactRender, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import {
VariantAnalysisQueryLanguage,
VariantAnalysisRepoStatus,
VariantAnalysisStatus
} from '../../../remote-queries/shared/variant-analysis';
import { VariantAnalysisAnalyzedRepos, VariantAnalysisAnalyzedReposProps } from '../VariantAnalysisAnalyzedRepos';
import { createMockVariantAnalysis } from '../../../vscode-tests/factories/remote-queries/shared/variant-analysis';
import { createMockRepositoryWithMetadata } from '../../../vscode-tests/factories/remote-queries/shared/repository';
import { createMockScannedRepo } from '../../../vscode-tests/factories/remote-queries/shared/scanned-repositories';
describe(VariantAnalysisAnalyzedRepos.name, () => {
const defaultVariantAnalysis = {
id: 1,
controllerRepo: {
id: 1,
fullName: 'octodemo/variant-analysis-controller',
private: false,
const defaultVariantAnalysis = createMockVariantAnalysis(VariantAnalysisStatus.InProgress, [
{
...createMockScannedRepo(),
repository: {
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
},
actionsWorkflowRunId: 789263,
query: {
name: 'Example query',
filePath: 'example.ql',
language: VariantAnalysisQueryLanguage.Javascript,
text: 'import javascript\nselect 1',
{
...createMockScannedRepo(),
repository: {
...createMockRepositoryWithMetadata(),
id: 2,
fullName: 'octodemo/hello-world-2',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
},
databases: {},
executionStartTime: 1611234567890,
createdAt: '2021-01-21T13:09:27.890Z',
updatedAt: '2021-01-21T13:09:27.890Z',
status: VariantAnalysisStatus.InProgress,
scannedRepos: [
{
repository: {
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Pending,
{
...createMockScannedRepo(),
repository: {
...createMockRepositoryWithMetadata(),
id: 3,
fullName: 'octodemo/hello-world-3',
private: true,
},
{
repository: {
id: 2,
fullName: 'octodemo/hello-world-2',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.Succeeded,
analysisStatus: VariantAnalysisRepoStatus.Failed,
},
{
...createMockScannedRepo(),
repository: {
...createMockRepositoryWithMetadata(),
id: 4,
fullName: 'octodemo/hello-world-4',
private: false,
},
{
repository: {
id: 3,
fullName: 'octodemo/hello-world-3',
private: true,
},
analysisStatus: VariantAnalysisRepoStatus.Failed,
},
{
repository: {
id: 4,
fullName: 'octodemo/hello-world-4',
private: false,
},
analysisStatus: VariantAnalysisRepoStatus.InProgress,
},
],
};
analysisStatus: VariantAnalysisRepoStatus.InProgress,
},
]);
const render = (props: Partial<VariantAnalysisAnalyzedReposProps> = {}) => {
return reactRender(

View File

@@ -2,34 +2,32 @@ import * as React from 'react';
import { render as reactRender, screen } from '@testing-library/react';
import {
VariantAnalysis,
VariantAnalysisQueryLanguage, VariantAnalysisRepoStatus,
VariantAnalysisRepoStatus,
VariantAnalysisStatus
} from '../../../remote-queries/shared/variant-analysis';
import { VariantAnalysisOutcomePanelProps, VariantAnalysisOutcomePanels } from '../VariantAnalysisOutcomePanels';
import { createMockVariantAnalysis } from '../../../vscode-tests/factories/remote-queries/shared/variant-analysis';
import { createMockRepositoryWithMetadata } from '../../../vscode-tests/factories/remote-queries/shared/repository';
import { createMockScannedRepo } from '../../../vscode-tests/factories/remote-queries/shared/scanned-repositories';
describe(VariantAnalysisOutcomePanels.name, () => {
const defaultVariantAnalysis = {
id: 1,
...createMockVariantAnalysis(VariantAnalysisStatus.InProgress),
controllerRepo: {
id: 1,
fullName: 'octodemo/variant-analysis-controller',
private: false,
},
actionsWorkflowRunId: 789263,
query: {
name: 'Example query',
filePath: 'example.ql',
language: VariantAnalysisQueryLanguage.Javascript,
text: 'import javascript\nselect 1',
},
databases: {},
executionStartTime: 1611234567890,
createdAt: '2021-01-21T13:09:27.890Z',
updatedAt: '2021-01-21T13:09:27.890Z',
status: VariantAnalysisStatus.InProgress,
scannedRepos: [
{
...createMockScannedRepo(),
repository: {
...createMockRepositoryWithMetadata(),
id: 1,
fullName: 'octodemo/hello-world-1',
private: false,
@@ -52,40 +50,22 @@ describe(VariantAnalysisOutcomePanels.name, () => {
noCodeqlDbRepos: {
repositoryCount: 4,
repositories: [
{
id: 100,
fullName: 'octodemo/no-db-1'
},
{
id: 101,
fullName: 'octodemo/no-db-2'
},
{
id: 102,
fullName: 'octodemo/no-db-3'
},
{
id: 103,
fullName: 'octodemo/no-db-4'
}
createMockRepositoryWithMetadata(),
createMockRepositoryWithMetadata(),
createMockRepositoryWithMetadata(),
createMockRepositoryWithMetadata()
]
},
overLimitRepos: {
repositoryCount: 1,
repositories: [
{
id: 201,
fullName: 'octodemo/over-limit-1'
}
createMockRepositoryWithMetadata()
]
},
accessMismatchRepos: {
repositoryCount: 1,
repositories: [
{
id: 205,
fullName: 'octodemo/private'
}
createMockRepositoryWithMetadata()
]
}
},

View File

@@ -1,11 +1,14 @@
module.exports = {
parserOptions: {
project: ["../../tsconfig.json"],
},
env: {
mocha: true
},
rules: {
"@typescript-eslint/ban-types": [
"error",
{
{
// For a full list of the default banned types, see:
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/ban-types.md
extendDefaults: true,

View File

@@ -0,0 +1,19 @@
import { faker } from '@faker-js/faker';
import { Repository, RepositoryWithMetadata } from '../../../../remote-queries/gh-api/repository';
export function createMockRepository(name = faker.random.word()): Repository {
return {
id: faker.datatype.number(),
name,
full_name: 'github/' + name,
private: faker.datatype.boolean(),
};
}
export function createMockRepositoryWithMetadata(): RepositoryWithMetadata {
return {
...createMockRepository(),
stargazers_count: faker.datatype.number(),
updated_at: faker.date.past().toISOString()
};
}

View File

@@ -3,6 +3,7 @@ import {
VariantAnalysisRepoStatus,
VariantAnalysisScannedRepository
} from '../../../../remote-queries/gh-api/variant-analysis';
import { createMockRepositoryWithMetadata } from './repository';
export function createMockScannedRepo(
name: string,
@@ -11,12 +12,10 @@ export function createMockScannedRepo(
): VariantAnalysisScannedRepository {
return {
repository: {
id: faker.datatype.number(),
...createMockRepositoryWithMetadata(),
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(),

View File

@@ -4,6 +4,7 @@ import {
VariantAnalysisSkippedRepositories,
VariantAnalysisSkippedRepositoryGroup
} from '../../../../remote-queries/gh-api/variant-analysis';
import { createMockRepositoryWithMetadata } from './repository';
export function createMockSkippedRepos(): VariantAnalysisSkippedRepositories {
return {
@@ -18,22 +19,8 @@ export function createMockSkippedRepoGroup(): VariantAnalysisSkippedRepositoryGr
return {
repository_count: 2,
repositories: [
{
id: faker.datatype.number(),
name: faker.random.word(),
full_name: 'github/' + faker.random.word(),
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,
stargazers_count: faker.datatype.number(),
updated_at: faker.date.past().toISOString()
}
createMockRepositoryWithMetadata(),
createMockRepositoryWithMetadata(),
]
};
}

View File

@@ -10,6 +10,7 @@ import {
} from '../../../../remote-queries/shared/variant-analysis';
import { createMockScannedRepos } from './scanned-repositories';
import { createMockSkippedRepos } from './skipped-repositories';
import { createMockRepository } from './repository';
export function createMockApiResponse(
status: VariantAnalysisStatus = 'in_progress',
@@ -20,7 +21,7 @@ export function createMockApiResponse(
const variantAnalysis: VariantAnalysisApiResponse = {
id: faker.datatype.number(),
controller_repo: {
id: faker.datatype.number(),
...createMockRepository(),
name: 'pickles',
full_name: 'github/pickles',
private: false,

View File

@@ -1,13 +1,12 @@
import { faker } from '@faker-js/faker';
import { VariantAnalysisRepoTask } from '../../../../remote-queries/gh-api/variant-analysis';
import { VariantAnalysisRepoStatus } from '../../../../remote-queries/shared/variant-analysis';
import { createMockRepository } from './repository';
export function createMockVariantAnalysisRepoTask(): VariantAnalysisRepoTask {
return {
repository: {
id: faker.datatype.number(),
name: faker.random.word(),
full_name: 'github/' + faker.random.word(),
...createMockRepository(),
private: false,
},
analysis_status: VariantAnalysisRepoStatus.Succeeded,

View File

@@ -0,0 +1,18 @@
import { faker } from '@faker-js/faker';
import { Repository, RepositoryWithMetadata } from '../../../../remote-queries/shared/repository';
export function createMockRepository(): Repository {
return {
id: faker.datatype.number(),
fullName: 'github/' + faker.random.word(),
private: faker.datatype.boolean(),
};
}
export function createMockRepositoryWithMetadata(): RepositoryWithMetadata {
return {
...createMockRepository(),
stargazersCount: faker.datatype.number(),
updatedAt: faker.date.past().toISOString()
};
}

View File

@@ -3,15 +3,16 @@ import {
VariantAnalysisRepoStatus,
VariantAnalysisScannedRepository
} from '../../../../remote-queries/shared/variant-analysis';
import { createMockRepositoryWithMetadata } from './repository';
export function createMockScannedRepo(
name: string,
isPrivate: boolean,
analysisStatus: VariantAnalysisRepoStatus,
name: string = faker.random.word(),
isPrivate: boolean = faker.datatype.boolean(),
analysisStatus: VariantAnalysisRepoStatus = VariantAnalysisRepoStatus.Pending,
): VariantAnalysisScannedRepository {
return {
repository: {
id: faker.datatype.number(),
...createMockRepositoryWithMetadata(),
fullName: 'github/' + name,
private: isPrivate,
},

View File

@@ -3,6 +3,7 @@ import {
VariantAnalysisSkippedRepositories,
VariantAnalysisSkippedRepositoryGroup
} from '../../../../remote-queries/shared/variant-analysis';
import { createMockRepositoryWithMetadata } from './repository';
export function createMockSkippedRepos(): VariantAnalysisSkippedRepositories {
return {
@@ -17,14 +18,8 @@ export function createMockSkippedRepoGroup(): VariantAnalysisSkippedRepositoryGr
return {
repositoryCount: 2,
repositories: [
{
id: faker.datatype.number(),
fullName: 'github/' + faker.random.word(),
},
{
id: faker.datatype.number(),
fullName: 'github/' + faker.random.word(),
}
createMockRepositoryWithMetadata(),
createMockRepositoryWithMetadata(),
]
};
}

View File

@@ -8,6 +8,7 @@ import {
} from '../../../../remote-queries/shared/variant-analysis';
import { createMockScannedRepos } from './scanned-repositories';
import { createMockSkippedRepos } from './skipped-repositories';
import { createMockRepository } from './repository';
export function createMockVariantAnalysis(
status: VariantAnalysisStatus = VariantAnalysisStatus.InProgress,
@@ -17,11 +18,10 @@ export function createMockVariantAnalysis(
const variantAnalysis: VariantAnalysis = {
id: faker.datatype.number(),
controllerRepo: {
id: faker.datatype.number(),
...createMockRepository(),
fullName: 'github/' + faker.datatype.hexadecimal({
prefix: '',
}),
private: faker.datatype.boolean(),
},
query: {
name: 'a-query-name',