Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 041f23ea rédigé par Erwan BOUSSE's avatar Erwan BOUSSE
Parcourir les fichiers

test: add tests for eval report system

parent dce8356d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline #72656 en échec
......@@ -11,6 +11,18 @@ exports[`Evaluation Service analyze with a mock evaluator 1`] = `
}
`;
exports[`Evaluation Service generateMarkdownWithStorage with mocks 1`] = `"evaluation/reports/dummyAnalysis.md"`;
exports[`Evaluation Service generateMarkdownWithStorage with mocks 2`] = `
"# Dummy title
2019-01-16T00:00:00.000Z
Alice(E2), Bob(E3)
"
`;
exports[`Evaluation Service generatePerMemberCSVFile with mocks 1`] = `"outputFile.csv"`;
exports[`Evaluation Service generatePerMemberCSVFile with mocks 2`] = `
......
......@@ -361,15 +361,15 @@ export class EvaluationService {
const evaluationReader = this.getEvaluationDataReader(folderFullPath)
const projectReader = this.projectService.getProjectDataReader(folderFullPath)
const memberReader = this.memberService.getProjectDataReader(folderFullPath)
const score: any = evaluationReader.readScore(evaluationName)
if (score === null) {
throw new Problem(`There are no scoring results to use in the project: ${folderFullPath}.`)
const reportData: Report = evaluationReader.readReportData(evaluationName)
if (reportData === null) {
throw new Problem(`There is no report data to use in the project: ${folderFullPath}.`)
}
const projectData: Project = projectReader.project()
const members: Member[] = memberReader
.members()
.filter((m1) => !membersToHide.map((m2) => m2.toLowerCase()).includes(m1.username.toLowerCase()))
const markdownData: MarkdownEntry[] = this.extractProjectMarkdownData(score, projectData, members)
const markdownData: MarkdownEntry[] = this.extractProjectMarkdownData(reportData, projectData, members)
const markdownContent: string = tsMarkdown(markdownData)
const writer = this.getEvaluationDataWriter(folderFullPath)
writer.writeReportMarkdown(evaluationName, markdownContent)
......
......@@ -6,7 +6,7 @@ import { HTTPClient } from '../../core/http-client'
import { DefaultStorageProvider, Storage } from '../../core/storage'
import { CommitData, Project, ProjectService } from '../project'
import { Member, MemberService } from '../member'
import { Evaluator } from './evaluation.interface'
import { Evaluator, Report, ReportParagraph } from './evaluation.interface'
let instance: EvaluationService
let mockSet: jest.Mock
......@@ -16,6 +16,7 @@ let mockWrite: jest.Mock
let mockGetCurrentDate: jest.Mock
const fakeData = { theKey: 'Some data' }
const fakeResults = { lettersIntheKey: fakeData.theKey.length }
const fakeReportData: Report = { title: "Dummy title", date: new Date("2019-01-16"), content: [new ReportParagraph("dummy content")] }
// Project
const dummyProject: Project = {
......@@ -90,9 +91,11 @@ describe('Evaluation Service', () => {
return fakeData
},
score(analysisResults: any): any {
const data: string = analysisResults.someKey
return fakeResults
},
report(analysisResults: any, score: any) {
return fakeReportData
}
}
})
......@@ -109,6 +112,7 @@ describe('Evaluation Service', () => {
expect(dummyEvaluator).toBeDefined()
expect(dummyEvaluator.analyze).toBeDefined()
expect(dummyEvaluator.score).toBeDefined()
expect(dummyEvaluator.report).toBeDefined()
})
it('analyze with a mock evaluator', async () => {
......@@ -151,7 +155,7 @@ describe('Evaluation Service', () => {
})
it('generatePerMemberCSVFile with mocks', async () => {
// Mocking the retrived data
// Mocking the retrieved data
mockGet.mockReturnValueOnce(fakeResults)
mockGet.mockReturnValueOnce(dummyProject)
mockGet.mockReturnValueOnce(members)
......@@ -163,4 +167,17 @@ describe('Evaluation Service', () => {
expect(mockWrite.mock.calls[0][0]).toMatchSnapshot()
expect(mockWrite.mock.calls[0][1]).toMatchSnapshot()
})
it('generateMarkdownWithStorage with mocks', async () => {
mockGet.mockReturnValueOnce(fakeReportData)
mockGet.mockReturnValueOnce(dummyProject)
mockGet.mockReturnValueOnce(members)
instance.generateMarkdownWithStorage(['test-data'], 'dummyAnalysis')
expect(mockSetRaw.mock.calls[0][0]).toMatchSnapshot()
expect(mockSetRaw.mock.calls[0][1]).toMatchSnapshot()
})
})
import { Evaluator } from '../..'
import { Evaluator, Report } from '../..'
export class DummyEvaluator implements Evaluator {
analyze(path: string) {
console.log(`Pretends to analyze ${path}…`)
return { someKey: 'Some data' }
}
score(analysisResults: any): any {
console.log(`Pretends to score…`)
const data: string = analysisResults.someKey
return { someItem: data.length }
}
report(analysisResults: any, score: any) : Report {
throw "Not supported"
}
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter