Luccas Mateus 14974edcbf
[examples/openspending] - openspending v0.2 (#907)
* [examples/openspending] - openspending v0.2

* [examples/openspending][m] - fix build

* [examples/openspending][xs] - fix build

* [examples/openspending][xs] - add prebuild step

* [examples/openspending][m] - fix requested by demenech

* [examples/openspending][sm] - remove links + fix bug
2023-05-30 20:22:58 -03:00

117 lines
3.3 KiB
TypeScript

import { expect, test } from 'vitest';
import { getAllProjectsFromOrg, getProjectDataPackage } from '../lib/project';
import { loadDataPackage } from '../lib/loader';
import { getProjectMetadata } from '../lib/project';
import { validate } from 'datapackage';
test(
'Test OS-Data',
async () => {
const repos = await getAllProjectsFromOrg(
'os-data',
'main',
process.env.VITE_GITHUB_PAT
);
if (repos.failed.length > 0)
console.log('Failed to get datapackage on', repos.failed);
let failedDatapackages = await Promise.all(
repos.results.map(async (item) => {
try {
const { valid, errors } = await validate(item.datapackage);
return errors.length > 0 ? item.repo.name : null;
} catch {
return item.repo.name;
}
})
);
failedDatapackages = failedDatapackages.filter((item) => item !== null);
if (failedDatapackages.length > 0) {
console.log('Failed to validate datapackage on ', failedDatapackages);
} else {
console.log('No invalid packages');
}
},
{ timeout: 100000 }
);
test(
'Test Gift-Data',
async () => {
const repos = await getAllProjectsFromOrg(
'gift-data',
'main',
process.env.VITE_GITHUB_PAT
);
if (repos.failed.length > 0) console.log(repos.failed);
let failedDatapackages = await Promise.all(
repos.results.map(async (item) => {
try {
const { valid, errors } = await validate(item.datapackage);
return errors.length > 0 ? item.repo.name : null;
} catch {
return item.repo.name;
}
})
);
failedDatapackages = failedDatapackages.filter((item) => item !== null);
if (failedDatapackages.length > 0) {
console.log('Failed to validate datapackage on ', failedDatapackages);
} else {
console.log('No invalid packages');
}
},
{ timeout: 100000 }
);
test(
'Test getting one dataset from github',
async () => {
const datapackage = await getProjectDataPackage(
'os-data',
'berlin-berlin',
'main',
process.env.VITE_GITHUB_PAT
);
const repo = await getProjectMetadata(
'os-data',
'berlin-berlin',
process.env.VITE_GITHUB_PAT
);
const project = loadDataPackage(datapackage, repo);
delete project['datapackage'];
delete project.files[0]['dialect'];
delete project.files[0]['schema'];
expect(project).toStrictEqual({
name: 'berlin-berlin',
title: 'Berlin-Berlin',
description: null,
owner: {
name: 'os-data',
logo: 'https://avatars.githubusercontent.com/u/13695166?v=4',
title: 'os-data',
},
repo: {
name: 'berlin-berlin',
full_name: 'os-data/berlin-berlin',
url: 'https://github.com/os-data/berlin-berlin',
},
files: [
{
name: 'berlin-gesamt',
format: 'csv',
path: 'https://storage.openspending.org/berlin-berlin/berlin-gesamt.csv',
mediatype: 'text/csv',
bytes: 81128743,
encoding: 'utf-8',
},
],
author: 'Michael Peters <michael.peters@okfn.de>',
cityCode: 'Berlin',
countryCode: 'DE',
fiscalPeriod: { start: '2014-01-01', end: '2019-12-31' },
readme: '',
});
},
{ timeout: 100000 }
);