starting SymptomVsSymptomChartDataProviderTest

This commit is contained in:
frankknoll
2023-11-08 22:04:29 +01:00
parent 9ea037334e
commit f8fa9371f9
9 changed files with 2662 additions and 3 deletions

View File

@@ -28,6 +28,7 @@
<script src="../Utils.js"></script>
<script src="../UIUtils.js"></script>
<script src="../NumberWithBarElementFactory.js"></script>
<script src="./js/Sets.js"></script>
<script src="./js/PrrByKey2CsvConverter.js"></script>
<script src="./js/PageInitializer.js"></script>
<script src="./js/PrrByVaccineProvider.js"></script>
@@ -36,6 +37,7 @@
<script src="./js/PrrByVaccineTableView.js"></script>
<script src="./js/PrrBySymptomTableView.js"></script>
<script src="./js/SymptomVsSymptomChartView.js"></script>
<script src="./js/SymptomVsSymptomChartDataProvider.js"></script>
<script>
document.addEventListener(
"DOMContentLoaded",

View File

@@ -0,0 +1,20 @@
class Sets {
static filterSet(set, predicate) {
return new Set([...set].filter(predicate));
}
static union(sets) {
return sets.reduce(
(union, set) => new Set([...union, ...set]),
new Set());
}
static intersection(set1, set2) {
return new Set([...set1].filter(x => set2.has(x)));
}
static isEmpty(set) {
return set.size == 0;
}
}

View File

@@ -0,0 +1,28 @@
class SymptomVsSymptomChartDataProvider {
static retainCommonLots({ prrByLotX, prrByLotY }) {
const commonLots = SymptomVsSymptomChartDataProvider.#getCommonKeys(prrByLotX, prrByLotY);
return {
prrByLotX: SymptomVsSymptomChartDataProvider.#retainKeysOfDict(prrByLotX, commonLots),
prrByLotY: SymptomVsSymptomChartDataProvider.#retainKeysOfDict(prrByLotY, commonLots)
};
}
static #getCommonKeys(dict1, dict2) {
return Sets.intersection(
SymptomVsSymptomChartDataProvider.#getKeySet(dict1),
SymptomVsSymptomChartDataProvider.#getKeySet(dict2));
}
static #getKeySet(dict) {
return new Set(Object.keys(dict));
}
static #retainKeysOfDict(dict, keys2Retain) {
const entries2Retain =
Object
.entries(dict)
.filter(([key, _]) => keys2Retain.has(key));
return Object.fromEntries(entries2Retain);
}
}

View File

@@ -14,13 +14,13 @@ class SymptomVsSymptomChartView {
// FK-TODO: fetch multiple files: https://stackoverflow.com/a/31711496 or https://stackoverflow.com/a/53892713
PrrByVaccineProvider.getPrrByVaccine(symptom1)
.then(
prrByKey1 => {
prrByLot1 => {
PrrByVaccineProvider.getPrrByVaccine(symptom2)
.then(
prrByKey2 => {
prrByLot2 => {
const myData =
Object
.values(prrByKey2)
.values(prrByLot2)
.map(
val =>
({

View File

@@ -0,0 +1,52 @@
QUnit.module('SymptomVsSymptomChartDataProviderTest', function () {
QUnit.test.each(
'shouldRetainCommonLots',
[
[
{
prrByLotX: {
"lotX": 1.0
},
prrByLotY: {
"lotY": 2.0
}
},
{
prrByLotX: {
},
prrByLotY: {
}
}
],
[
{
prrByLotX: {
"lotX": 1.0,
"lotCommon": 2.0
},
prrByLotY: {
"lotCommon": 3.0,
"lotY": 4.0
}
},
{
prrByLotX: {
"lotCommon": 2.0
},
prrByLotY: {
"lotCommon": 3.0
}
}
]
],
(assert, [dataSets, mergedDataSets]) => {
// Given
// When
const mergedDataSetsActual = SymptomVsSymptomChartDataProvider.retainCommonLots(dataSets);
// Then
assert.deepEqual(mergedDataSetsActual, mergedDataSets);
});
});

View File

@@ -0,0 +1,37 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Safety Signals for COVID Batches</title>
<script src="../../Utils.js"></script>
<script src="../../UIUtils.js"></script>
<script src="../../NumberWithBarElementFactory.js"></script>
<script src="../js/Sets.js"></script>
<script src="../js/PrrByKey2CsvConverter.js"></script>
<script src="../js/PageInitializer.js"></script>
<script src="../js/PrrByVaccineProvider.js"></script>
<script src="../js/PrrByKeyTable.js"></script>
<script src="../js/PrrByKeyTableView.js"></script>
<script src="../js/PrrByVaccineTableView.js"></script>
<script src="../js/PrrBySymptomTableView.js"></script>
<script src="../js/SymptomVsSymptomChartView.js"></script>
<script src="../js/SymptomVsSymptomChartDataProvider.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.17.2.css">
<script src="https://code.jquery.com/qunit/qunit-2.17.2.js"></script>
<script type="text/javascript" src="./jshamcrest.js"></script>
<script type="text/javascript" src="./jsmockito-1.0.4.js"></script>
<script>
JsHamcrest.Integration.QUnit();
JsMockito.Integration.QUnit();
</script>
<script src="./SymptomVsSymptomChartDataProviderTest.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,7 @@ FK-TODO:
- Symptomhistogramm
- http://www.howbadismybatch.info/SymptomsCausedByVaccines/index.html
- http://www.howbadismybatch.info/SymptomsCausedByCOVIDLots/index.html
http://www.howbadismybatch.info/SymptomsCausedByCOVIDLots/test/index.test.html
anacron job:
sudo cp src/intensivstationen_howbadismybatch.sh /etc/cron.daily/intensivstationen_howbadismybatch