chore: improve tests

Signed-off-by: ElaineDeMattosSilvaB <elaine.de-mattos-silva-bezerra@deutschebahn.com>
This commit is contained in:
ElaineDeMattosSilvaB
2024-05-21 11:53:20 +02:00
parent 03afcf1db5
commit d0048635f7
3 changed files with 45 additions and 19 deletions
@@ -165,7 +165,11 @@ const httpProjectCatalogDynamic = all_projects_response.map(project => {
`${apiBaseUrl}/projects/${path}/repository/files/catalog-info.yaml`,
(req, res, ctx) => {
const branch = req.url.searchParams.get('ref');
if (branch === (project.default_branch || 'main' || 'develop')) {
if (
branch === project.default_branch ||
branch === 'main' ||
branch === 'develop'
) {
return res(ctx.status(200));
}
return res(ctx.status(404, 'Not Found'));
@@ -162,7 +162,7 @@ export const config_github_host: MockObject = {
},
};
export const config_single_integration_branch: MockObject = {
export const config_single_integration: MockObject = {
integrations: {
gitlab: [
{
@@ -178,7 +178,6 @@ export const config_single_integration_branch: MockObject = {
'test-id': {
host: 'example.com',
group: 'group1',
branch: 'main',
skipForkedRepos: false,
schedule: {
frequency: 'PT30M',
@@ -724,7 +723,7 @@ export const all_users_response: GitLabUser[] = [
avatar_url: 'https://secure.gravatar.com/',
web_url: 'https://gitlab.example/luigi_mario',
},
// malfomed email address
// malformed email address
{
id: 5,
username: 'MarioMario',
@@ -1338,7 +1337,7 @@ export const push_modif_event: EventParams = {
* Expected Backstage entities
*/
// includes only projects that have a default branch (for when the branch and default branch were not set in the config)
// includes only projects that have a default branch (for when the branch and fallback branch were not set in the config)
export const expected_location_entities_default_branch: MockObject[] =
all_projects_response
.filter(project => project.default_branch)
@@ -61,7 +61,7 @@ describe('GitlabDiscoveryEntityProvider - configuration', () => {
});
it('should fail without schedule nor scheduler', () => {
const config = new ConfigReader(mock.config_single_integration_branch);
const config = new ConfigReader(mock.config_single_integration);
expect(() =>
GitlabDiscoveryEntityProvider.fromConfig(config, {
@@ -99,7 +99,7 @@ describe('GitlabDiscoveryEntityProvider - configuration', () => {
it('should instantiate provider with single simple discovery config', () => {
const schedule = new PersistingTaskRunner();
const config = new ConfigReader(mock.config_single_integration_branch);
const config = new ConfigReader(mock.config_single_integration);
const providers = GitlabDiscoveryEntityProvider.fromConfig(config, {
logger,
schedule,
@@ -229,7 +229,36 @@ describe('GitlabDiscoveryEntityProvider - refresh', () => {
});
});
it('should only ingest projects from specific branch', async () => {
// branch and fallback branch are undefined in the config
it('should ingest catalog from project default branch only', async () => {
const config = new ConfigReader(mock.config_single_integration);
const schedule = new PersistingTaskRunner();
const entityProviderConnection: EntityProviderConnection = {
applyMutation: jest.fn(),
refresh: jest.fn(),
};
const provider = GitlabDiscoveryEntityProvider.fromConfig(config, {
logger,
schedule,
})[0];
await provider.connect(entityProviderConnection);
await provider.refresh(logger);
expect(entityProviderConnection.applyMutation).toHaveBeenCalledWith({
type: 'full',
entities: mock.expected_location_entities_default_branch.filter(
entity =>
!entity.entity.metadata.annotations[
'backstage.io/managed-by-location'
].includes('awesome'),
),
});
});
// branch was set in the config
it('should ingest catalog from specific branch only', async () => {
const config = new ConfigReader(
mock.config_single_integration_specific_branch,
);
@@ -243,10 +272,6 @@ describe('GitlabDiscoveryEntityProvider - refresh', () => {
schedule,
})[0];
const configured_branch =
mock.config_single_integration_branch.catalog.providers.gitlab['test-id']
.branch;
await provider.connect(entityProviderConnection);
await provider.refresh(logger);
@@ -255,9 +280,6 @@ describe('GitlabDiscoveryEntityProvider - refresh', () => {
type: 'full',
entities: mock.expected_location_entities_specific_branch.filter(
entity =>
entity.entity.metadata.annotations[
'backstage.io/managed-by-location'
].includes(configured_branch) &&
!entity.entity.metadata.annotations[
'backstage.io/managed-by-location'
].includes('awesome'),
@@ -265,7 +287,8 @@ describe('GitlabDiscoveryEntityProvider - refresh', () => {
});
});
it('should include projects from fallback branch', async () => {
// fallback branch was set in the config
it('should ingest catalog from default or fallback branch', async () => {
const config = new ConfigReader(mock.config_fallbackBranch_branch);
const schedule = new PersistingTaskRunner();
const entityProviderConnection: EntityProviderConnection = {
@@ -389,7 +412,7 @@ describe('GitlabDiscoveryEntityProvider - events', () => {
expect(entityProviderConnection.applyMutation).toHaveBeenCalledTimes(0);
});
it('should apply delta mutations on added files from push event', async () => {
const config = new ConfigReader(mock.config_single_integration_branch);
const config = new ConfigReader(mock.config_single_integration);
const schedule = new PersistingTaskRunner();
const events = DefaultEventsService.create({ logger });
@@ -416,7 +439,7 @@ describe('GitlabDiscoveryEntityProvider - events', () => {
});
it('should apply delta mutations on removed files from push event', async () => {
const config = new ConfigReader(mock.config_single_integration_branch);
const config = new ConfigReader(mock.config_single_integration);
const schedule = new PersistingTaskRunner();
const events = DefaultEventsService.create({ logger });
const entityProviderConnection: EntityProviderConnection = {
@@ -442,7 +465,7 @@ describe('GitlabDiscoveryEntityProvider - events', () => {
});
it('should call refresh on added files from push event', async () => {
const config = new ConfigReader(mock.config_single_integration_branch);
const config = new ConfigReader(mock.config_single_integration);
const schedule = new PersistingTaskRunner();
const events = DefaultEventsService.create({ logger });
const entityProviderConnection: EntityProviderConnection = {