Passed
Push — main ( 3f259d...71e4ad )
by Patrick
02:34
created

tests/fakes/FakeHistoryManager.ts   A

Complexity

Total Complexity 7
Complexity/F 1.4

Size

Lines of Code 48
Function Count 5

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 39
dl 0
loc 48
rs 10
c 0
b 0
f 0
wmc 7
mnd 2
bc 2
fnc 5
bpm 0.4
cpm 1.4
noi 0
1
import { generateRunId } from '@/lib/helpers';
2
import { HistoryManager } from '@/lib/HistoryManager';
3
import { BoostHistoryItem, BoostHistoryItemState } from '@/types/BoostHistory';
4
import dayjs from 'dayjs';
5
6
export class FakeHistoryManager extends HistoryManager {
7
    constructor() {
8
        super('');
9
    }
10
11
    public addItem(boostName, boostVersion, repositoryName, state: BoostHistoryItemState, ageInMinutes = 1, runId: string | null = null) {
12
        // random integer between 1 and 10
13
        const randomInt = Math.floor(Math.random() * 10) + 1;
14
        const startedAt = dayjs().subtract(ageInMinutes, 'minute');
15
        const finishedAt = startedAt.add(randomInt, 'second');
16
        runId = runId ?? generateRunId();
17
18
        const data: BoostHistoryItem = {
19
            run_id: runId,
20
            boost: boostName,
21
            version: boostVersion,
22
            repository: repositoryName,
23
            pull_request: null,
24
            state,
25
            started_at: startedAt.toISOString(),
26
            finished_at: finishedAt.toISOString(),
27
        };
28
29
        this.data.push(data);
30
    }
31
32
    public addSucceededItem(boostName, boostVersion, repositoryName, ageInMinutes = 1, runId: string | null = null) {
33
        this.addItem(boostName, boostVersion, repositoryName, BoostHistoryItemState.SUCCEEDED, ageInMinutes, runId);
34
    }
35
36
    public addFailedItem(boostName, boostVersion, repositoryName, ageInMinutes = 1, runId: string | null = null) {
37
        this.addItem(boostName, boostVersion, repositoryName, BoostHistoryItemState.FAILED, ageInMinutes, runId);
38
    }
39
40
    public addRunningItem(boostName, boostVersion, repositoryName, ageInMinutes = 1, runId: string | null = null) {
41
        this.addItem(boostName, boostVersion, repositoryName, BoostHistoryItemState.RUNNING, ageInMinutes, runId);
42
    }
43
44
    public addSkippedItem(boostName, boostVersion, repositoryName, ageInMinutes = 1, runId: string | null = null) {
45
        this.addItem(boostName, boostVersion, repositoryName, BoostHistoryItemState.SKIPPED, ageInMinutes, runId);
46
    }
47
}
48