From 40da0dcf3d81da8f51a374727a5b11cee853fc4e Mon Sep 17 00:00:00 2001
From: jojohoch <joachim.hoch@iqb.hu-berlin.de>
Date: Mon, 9 May 2022 15:20:50 +0200
Subject: [PATCH] Sanitize `inputAssistancePreset` for text input elements

- Expand the list of elements zo sanitize to
['text-field', 'text-area', 'text-field-simple', 'spell-correct']
- Rename sanitize method
- Change expectations in tests
---
 projects/common/services/sanitization.service.spec.ts | 6 +++---
 projects/common/services/sanitization.service.ts      | 9 ++++++---
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/projects/common/services/sanitization.service.spec.ts b/projects/common/services/sanitization.service.spec.ts
index a70bde775..0d6bdd9de 100644
--- a/projects/common/services/sanitization.service.spec.ts
+++ b/projects/common/services/sanitization.service.spec.ts
@@ -254,7 +254,7 @@ describe('SanitizationService', () => {
       service.sanitizeUnitDefinition(JSON.parse(JSON.stringify(sampleUnit130TextFields)));
     expect(sanitizedUnit130TextFields.pages[0].sections[0].elements[0])
       .toEqual(jasmine.objectContaining({
-        'inputAssistancePreset': 'none',
+        'inputAssistancePreset': null,
         'inputAssistancePosition': 'floating',
         'restrictedToInputAssistanceChars': false
       }));
@@ -278,7 +278,7 @@ describe('SanitizationService', () => {
       service.sanitizeUnitDefinition(JSON.parse(JSON.stringify(sampleUnit112TextFields)));
     expect(sanitizedUnit112TextFields.pages[0].sections[0].elements[0])
       .toEqual(jasmine.objectContaining({
-        'inputAssistancePreset': 'none',
+        'inputAssistancePreset': null,
         'inputAssistancePosition': 'floating'
       }));
     expect(sanitizedUnit112TextFields.pages[0].sections[0].elements[0])
@@ -303,7 +303,7 @@ describe('SanitizationService', () => {
     // text areas
     expect(sanitizedUnit112TextFields.pages[0].sections[0].elements[3])
       .toEqual(jasmine.objectContaining({
-        'inputAssistancePreset': 'none',
+        'inputAssistancePreset': null,
         'inputAssistancePosition': 'floating'
       }));
     expect(sanitizedUnit112TextFields.pages[0].sections[0].elements[3])
diff --git a/projects/common/services/sanitization.service.ts b/projects/common/services/sanitization.service.ts
index c5055efc2..f87f87297 100644
--- a/projects/common/services/sanitization.service.ts
+++ b/projects/common/services/sanitization.service.ts
@@ -89,9 +89,9 @@ export class SanitizationService {
     if (newElement.type === 'text') {
       newElement = SanitizationService.handleTextElement(newElement);
     }
-    if (['text-field', 'text-area']
+    if (['text-field', 'text-area', 'text-field-simple', 'spell-correct']
       .includes(newElement.type as string)) {
-      newElement = SanitizationService.sanitizeTextFieldElement(newElement);
+      newElement = SanitizationService.sanitizeTextInputElement(newElement);
     }
     if (newElement.type === 'cloze') {
       newElement = this.handleClozeElement(newElement as Record<string, UIElementValue>);
@@ -211,11 +211,14 @@ export class SanitizationService {
     return newElement as TextElement;
   }
 
-  private static sanitizeTextFieldElement(element: Record<string, UIElementValue>): InputElement {
+  private static sanitizeTextInputElement(element: Record<string, UIElementValue>): InputElement {
     const newElement = { ...element };
     if (newElement.restrictedToInputAssistanceChars === undefined && newElement.inputAssistancePreset === 'french') {
       newElement.restrictedToInputAssistanceChars = false;
     }
+    if (newElement.inputAssistancePreset === 'none') {
+      newElement.inputAssistancePreset = null;
+    }
     return newElement as InputElement;
   }
 
-- 
GitLab