added nearly complete p2p implementation

This commit is contained in:
mrfry
2023-03-20 18:02:45 +01:00
parent 11dacdae64
commit 5c22f575dd
25 changed files with 14320 additions and 12563 deletions
+50 -83
View File
@@ -1,58 +1,23 @@
import { updateQuestionsInArray } from '../utils/actions'
import { createQuestion } from '../utils/classes'
import { cleanDb } from '../utils/classes'
import { QuestionDb, Subject, Question } from '../types/basicTypes'
const date = (x?: number) => new Date().getTime() + (x || 0)
import { questions } from './testData'
import { cleanDb } from '../utils/qdbUtils'
const q1 = createQuestion(
'A kötvény és a részvény közös tulajdonsága, hogy TOREMOVE',
'piaci áruk eltérhet a névértéktől.',
{
type: 'simple',
date: date(-1000),
}
)
const q2 = createQuestion(
'A kötvény és a részvény közös tulajdonsága, hogy TOREMOVE',
'afjléa gféda gfdjs légf',
{
type: 'simple',
date: date(-1000),
}
)
const q3 = createQuestion(
'A kötvény és a részvény közös tulajdonsága, hogy TOREMOVE',
'afjlsd gfds dgfs gf sdgf d',
{
type: 'simple',
date: date(-1000),
}
)
const q4 = createQuestion(
'A kötvény névértéke',
'A kötvényen feltüntetett meghatározott nagyságú összeg.',
{
type: 'simple',
date: date(-1000),
}
)
const q5 = createQuestion(
'Mi az osztalék? asd asd',
'A vállalati profit egy része..',
{
type: 'simple',
date: date(1000),
}
)
const q6 = createQuestion(
'valaim nagyon értelmes kérdés asd asd',
'A vállalati profit egy része..',
{
type: 'simple',
date: date(1000),
}
)
const [q1, q2, q3, q4] = questions.slice(0, 4).map((q) => ({
...q,
data: {
...q.data,
date: 100,
},
}))
const [q5, q6] = questions.slice(4, 6).map((q) => ({
...q,
data: {
...q.data,
date: 1000,
},
}))
function setupTest({
newQuestions,
@@ -68,12 +33,12 @@ function setupTest({
...x,
data: {
...x.data,
date: date(),
date: 500,
},
}
})
const subjName = subjToClean || 'subject'
const overwriteFromDate = date(-100)
const overwriteBeforeDate = 400
const qdbIndex = 0
const qdbs: QuestionDb[] = [
{
@@ -93,7 +58,7 @@ function setupTest({
{
questions: recievedQuestions,
subjToClean: subjName,
overwriteFromDate: overwriteFromDate,
overwriteBeforeDate: overwriteBeforeDate,
qdbIndex: qdbIndex,
},
qdbs
@@ -108,7 +73,7 @@ function setupTest({
return {
questionIndexesToRemove: questionIndexesToRemove,
updatedQuestions: updatedQuestions,
overwriteFromDate: overwriteFromDate,
overwriteBeforeDate: overwriteBeforeDate,
subjIndex: subjIndex,
}
}
@@ -116,21 +81,16 @@ function setupTest({
const s1: Subject = { Name: 'test subject', Questions: [q1, q2, q4, q5] }
test('Old and duplicate questions should be removed from the database', () => {
const { questionIndexesToRemove, updatedQuestions, overwriteFromDate } =
setupTest({ newQuestions: [q1, q4, q5], data: [s1] })
expect(questionIndexesToRemove.length).toBe(3)
expect(questionIndexesToRemove[0].length).toBe(2)
expect(updatedQuestions.length).toBe(3)
const toremoveCount = updatedQuestions.filter((question) => {
return question.Q.includes('TOREMOVE')
}).length
expect(toremoveCount).toBe(1)
const newQuestion = updatedQuestions.find((question) => {
return question.Q.includes('TOREMOVE')
const { questionIndexesToRemove, updatedQuestions } = setupTest({
newQuestions: [q1, q2, q3],
data: [s1],
})
expect(newQuestion.data.date > overwriteFromDate).toBeTruthy()
expect(questionIndexesToRemove[0].length).toBe(2)
expect(questionIndexesToRemove[1].length).toBe(2)
expect(questionIndexesToRemove[2].length).toBe(2)
expect(updatedQuestions.length).toBe(5)
})
const s2: Subject = {
@@ -139,30 +99,37 @@ const s2: Subject = {
}
test('Old and duplicate questions should be removed from the database round 2', () => {
const { questionIndexesToRemove, updatedQuestions, overwriteFromDate } =
setupTest({ newQuestions: [q1, q4, q5], data: [s2] })
const { questionIndexesToRemove, updatedQuestions } = setupTest({
newQuestions: [q1, q4, q5],
data: [s2],
})
expect(questionIndexesToRemove.length).toBe(3)
expect(questionIndexesToRemove[0].length).toBe(3)
expect(questionIndexesToRemove[1].length).toBe(1)
expect(questionIndexesToRemove[2].length).toBe(0)
expect(updatedQuestions.length).toBe(4)
const toremoveCount = updatedQuestions.filter((question) => {
return question.Q.includes('TOREMOVE')
}).length
expect(toremoveCount).toBe(1)
const newQuestion = updatedQuestions.find((question) => {
return question.Q.includes('TOREMOVE')
})
test('Old and duplicate questions should be removed from the database round 3', () => {
const { questionIndexesToRemove, updatedQuestions } = setupTest({
newQuestions: [q5, q6],
data: [s2],
})
expect(newQuestion.data.date > overwriteFromDate).toBeTruthy()
expect(questionIndexesToRemove[0].length).toBe(0)
expect(questionIndexesToRemove[1].length).toBe(0)
expect(updatedQuestions.length).toBe(6)
})
const s3: Subject = {
Name: 'test subject',
Questions: [q5, q6].map((x) => ({
...x,
Questions: [q5, q6].map((q) => ({
...q,
data: {
...x.data,
date: date(+50000),
...q.data,
date: 50000,
},
})),
}