From 57617ee5c4bf9d04df25e04d71743775ab36de94 Mon Sep 17 00:00:00 2001
From: stevereis <stevereis93@gmail.com>
Date: Wed, 24 Nov 2021 17:09:08 +0100
Subject: [PATCH] Add naive bayes test

---
 .../exareme/tests/e2e/naive-bayes.e2e-spec.ts | 78 +++++++++++++++++++
 1 file changed, 78 insertions(+)
 create mode 100644 api/src/engine/connectors/exareme/tests/e2e/naive-bayes.e2e-spec.ts

diff --git a/api/src/engine/connectors/exareme/tests/e2e/naive-bayes.e2e-spec.ts b/api/src/engine/connectors/exareme/tests/e2e/naive-bayes.e2e-spec.ts
new file mode 100644
index 0000000..7c664d7
--- /dev/null
+++ b/api/src/engine/connectors/exareme/tests/e2e/naive-bayes.e2e-spec.ts
@@ -0,0 +1,78 @@
+import { Test, TestingModule } from '@nestjs/testing';
+import { RawResult } from 'src/engine/models/result/raw-result.model';
+import { AppModule } from '../../../../../main/app.module';
+import { ENGINE_SERVICE } from '../../../../engine.constants';
+import { IEngineService } from '../../../../engine.interfaces';
+import { ExperimentCreateInput } from '../../../../models/experiment/input/experiment-create.input';
+import {
+  createExperiment,
+  generateNumber,
+  TEST_PATHOLOGIES,
+  TIMEOUT_DURATION_SECONDS,
+  waitForResult,
+} from '../../interfaces/test-utilities';
+
+jest.setTimeout(1000 * TIMEOUT_DURATION_SECONDS);
+
+describe('ExaremeService', () => {
+  let exaremeService: IEngineService;
+
+  beforeEach(async () => {
+    const moduleRef: TestingModule = await Test.createTestingModule({
+      imports: [AppModule],
+    }).compile();
+
+    exaremeService = await moduleRef.resolve<IEngineService>(ENGINE_SERVICE);
+  });
+  const modelSlug = `naivebayes-${generateNumber()}`;
+  const algorithmId = 'NAIVE_BAYES';
+
+  const input: ExperimentCreateInput = {
+    name: modelSlug,
+    variables: ['alzheimerbroadcategory'],
+    coVariables: ['righthippocampus', 'lefthippocampus'],
+    datasets: TEST_PATHOLOGIES.dementia.datasets
+      .filter((d) => d.code !== 'fake_longitudinal')
+      .map((d) => d.code),
+    domain: TEST_PATHOLOGIES.dementia.code,
+    algorithm: {
+      id: algorithmId,
+      type: 'string',
+      parameters: [
+        {
+          id: 'alpha',
+          value: ['0.1'],
+        },
+        {
+          id: 'k',
+          value: ['10'],
+        },
+      ],
+    },
+    filter: '',
+  };
+
+  describe('Integration Test for experiment API', () => {
+    it(`create ${algorithmId}`, async () => {
+      const experiment = await createExperiment(input, exaremeService);
+
+      expect(experiment).toBeTruthy();
+      expect(experiment?.status).toStrictEqual('pending');
+
+      expect(experiment?.id).toBeTruthy();
+
+      const experimentResult = await waitForResult(
+        experiment?.id ?? '',
+        exaremeService,
+      );
+
+      expect(experimentResult).toBeTruthy();
+      expect(experimentResult.status).toStrictEqual('success');
+
+      expect(experimentResult.results.length).toBeGreaterThanOrEqual(5);
+      const data = experimentResult.results[0] as RawResult;
+
+      expect(data.rawdata['data']['precision'][0]).toBeCloseTo(0.517, 3);
+    });
+  });
+});
-- 
GitLab