From ca5a72332a7872291f2cdd088709d62c606ff1b2 Mon Sep 17 00:00:00 2001
From: Steve Reis <stevereis93@gmail.com>
Date: Wed, 7 Sep 2022 11:05:42 +0200
Subject: [PATCH] fix: Add summary table to linear regression

---
 .../linear-regression.handler.spec.ts         | 23 +++++++++++--------
 .../algorithms/linear-regression.handler.ts   |  6 +++--
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.spec.ts b/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.spec.ts
index ca1f91e..962b13a 100644
--- a/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.spec.ts
+++ b/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.spec.ts
@@ -87,22 +87,25 @@ describe('linear regression result handler', () => {
   });
 
   describe('Handle', () => {
-    it('should output a tableResult', () => {
+    it('should output two TableResult', () => {
       linearHandler.handle(experiment, data, vars);
 
-      expect(experiment.results).toHaveLength(1);
+      expect(experiment.results).toHaveLength(2);
 
-      const result = experiment.results[0] as TableResult;
+      const summary = experiment.results[0] as TableResult;
+      const coefs = experiment.results[1] as TableResult;
 
-      expect(result.headers).toHaveLength(7);
+      expect(coefs.headers).toHaveLength(7);
       data.coefficients.forEach((coef, index) => {
-        expect(result.data[index][1]).toBe(coef.Estimate);
-        expect(result.data[index][2]).toBe(coef['Std. Error']);
-        expect(result.data[index][3]).toBe(coef['z-value']);
-        expect(result.data[index][4]).toBe(coef['p-value']);
-        expect(result.data[index][5]).toBe(coef['low0.95CI']);
-        expect(result.data[index][6]).toBe(coef['high0.95CI']);
+        expect(coefs.data[index][1]).toBe(coef.Estimate);
+        expect(coefs.data[index][2]).toBe(coef['Std. Error']);
+        expect(coefs.data[index][3]).toBe(coef['z-value']);
+        expect(coefs.data[index][4]).toBe(coef['p-value']);
+        expect(coefs.data[index][5]).toBe(coef['low0.95CI']);
+        expect(coefs.data[index][6]).toBe(coef['high0.95CI']);
       });
+
+      expect(summary.data.some((row) => !row[0] || !row[1])).toBeFalsy();
     });
   });
 });
diff --git a/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.ts b/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.ts
index 96d2a3a..8af3a9c 100644
--- a/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.ts
+++ b/api/src/engine/connectors/datashield/handlers/algorithms/linear-regression.handler.ts
@@ -11,6 +11,10 @@ const lookupDict = {
   'low0.95CI': 'Low 95% CI',
   'high0.95CI': 'High 95% CI',
   _row: '',
+  iter: 'Iteration(s)',
+  Nvalid: 'Valid observations',
+  Ntotal: 'Total observations',
+  df: 'Degrees of freedom',
 };
 
 const properties = [
@@ -69,7 +73,5 @@ export default class LinearRegressionHandler extends BaseHandler {
 
     if (summaryResult) experiment.results.push(summaryResult);
     if (tableResult) experiment.results.push(tableResult);
-
-    this.next?.handle(experiment, data, vars);
   }
 }
-- 
GitLab