Skip to content
Snippets Groups Projects
element-model-element-code-mapping.service.spec.ts 21.7 KiB
Newer Older
import { TestBed } from '@angular/core/testing';
import * as dropList_130 from 'test-data/element-models/drop-list_130.json';
import * as textField_130 from 'test-data/element-models/text-field_130.json';
import * as textFieldSimple_131 from 'test-data/element-models/text-field-simple_131.json';
import * as image_130 from 'test-data/element-models/image_130.json';
import * as audio_130 from 'test-data/element-models/audio_130.json';
import * as text_130 from 'test-data/element-models/text_130.json';
import * as likertRow_130 from 'test-data/element-models/likert-row_130.json';
import * as radio_130 from 'test-data/element-models/radio_130.json';
import * as radioGroupImages_130 from 'test-data/element-models/radio-group-images_130.json';
import * as toggleButton_130 from 'test-data/element-models/toggle-button_130.json';
import * as textArea_130 from 'test-data/element-models/text-area_130.json';
import * as spellCorrect_130 from 'test-data/element-models/spell-correct_130.json';
jojohoch's avatar
jojohoch committed
import * as hotspotImage_135 from 'test-data/element-models/hotspot-image_135.json';
import * as dragNDropValues_01_130 from 'test-data/values/dragNDropValues_01_130.json';
import * as dragNDropValues_02_130 from 'test-data/values/dragNDropValues_02_130.json';
import { DropListElement } from 'common/models/elements/input-elements/drop-list';
import { TextElement } from 'common/models/elements/text/text';
import { AudioElement } from 'common/models/elements/media-elements/audio';
import { ImageElement } from 'common/models/elements/media-elements/image';
import { TextFieldElement } from 'common/models/elements/input-elements/text-field';
import {
  TextFieldSimpleElement
} from 'common/models/elements/compound-elements/cloze/cloze-child-elements/text-field-simple';
import { TextAreaElement } from 'common/models/elements/input-elements/text-area';
import { SpellCorrectElement } from 'common/models/elements/input-elements/spell-correct';
import { RadioButtonGroupElement } from 'common/models/elements/input-elements/radio-button-group';
import { RadioButtonGroupComplexElement } from 'common/models/elements/input-elements/radio-button-group-complex';
import { LikertRowElement } from 'common/models/elements/compound-elements/likert/likert-row';
import { ToggleButtonElement } from 'common/models/elements/compound-elements/cloze/cloze-child-elements/toggle-button';
import { Hotspot, HotspotImageElement } from 'common/models/elements/input-elements/hotspot-image';
import { DragNDropValueObject } from 'common/models/elements/label-interfaces';
import { ElementModelElementCodeMappingService } from './element-model-element-code-mapping.service';
describe('ElementModelElementCodeMappingService', () => {
  let service: ElementModelElementCodeMappingService;
  beforeEach(() => {
    TestBed.configureTestingModule({});
    service = TestBed.inject(ElementModelElementCodeMappingService);
  });

  it('should be created', () => {
    expect(service).toBeTruthy();
  });

  it('should map the value of a drop-list elementModel to its elementCode value', () => {
    const dragNDropValueObjects: DragNDropValueObject[] = JSON.parse(JSON.stringify(dragNDropValues_01_130)).default;
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(dragNDropValueObjects, 'drop-list'))
      .toEqual(['value_1', 'value_2', 'value_3']);
  it('should map the value of a text elementModel to its elementCode value', () => {
    const textElement: TextElement = JSON.parse(JSON.stringify(text_130));
jojohoch's avatar
jojohoch committed
    textElement.markingMode = 'selection';
    const textValue =
      'Lorem <aspect-marked style="background-color: rgb(249, 248, 113);">ipsum</aspect-marked> dolor sit amet';
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textValue, 'text', { markingMode: 'selection' }))
      .toEqual(['6-11-#f9f871']);
  it('should map the value of a text elementModel to its elementCode value - empty Array', () => {
    const textElement: TextElement = JSON.parse(JSON.stringify(text_130));
jojohoch's avatar
jojohoch committed
    textElement.markingMode = 'selection';
    const textValue = 'Lorem dolor sit amet';
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textValue, 'text', { markingMode: 'selection' }))
  it('should map the value of a audio elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(2, 'audio'))
  it('should map the value of a iamge elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(true, 'audio'))
  it('should map the value of a image elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(false, 'audio'))
  it('should map the value of a radio elementModel to its elementCode value', () => {
    for (let i = 0; i < 10; i++) {
jojohoch's avatar
jojohoch committed
      expect(ElementModelElementCodeMappingService.mapToElementCodeValue(i, 'radio'))
  it('should map the value null of a radio elementModel to null', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(null, 'radio'))
jojohoch's avatar
jojohoch committed
  it('should map the value of a hotspot image elementModel to its elementCode value', () => {
    const hotspots: Hotspot[] = [
      {
        top: 10,
        left: 10,
        width: 20,
        height: 20,
jojohoch's avatar
jojohoch committed
        borderWidth: 1,
        borderColor: '#000000',
        backgroundColor: '#000000',
        rotation: 0,
        readOnly: false,
        value: true
      },
      {
        top: 10,
        left: 10,
        width: 20,
        height: 20,
jojohoch's avatar
jojohoch committed
        borderWidth: 1,
        borderColor: '#000000',
        backgroundColor: '#000000',
        rotation: 0,
        readOnly: false,
        value: false
      }
    ];
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(hotspots, 'hotspot-image'))
jojohoch's avatar
jojohoch committed
      .toEqual([true, false]);
  });

  it('should map the value of a hotspot image elementModel to its elementCode value', () => {
    const hotspots: Hotspot[] = [];

jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(hotspots, 'hotspot-image'))
jojohoch's avatar
jojohoch committed
      .toEqual([]);
  });

  it('should map the value of a radio-group-images elementModel to its elementCode value', () => {
    for (let i = 0; i < 10; i++) {
jojohoch's avatar
jojohoch committed
      expect(ElementModelElementCodeMappingService.mapToElementCodeValue(i, 'radio-group-images'))
  it('should map the value null of a radio-group-images elementModel to null', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(null, 'radio'))
  it('should map the value of a dropdown elementModel to its elementCode value', () => {
    for (let i = 0; i < 10; i++) {
jojohoch's avatar
jojohoch committed
      expect(ElementModelElementCodeMappingService.mapToElementCodeValue(i, 'dropdown'))
  it('should map the value null of a dropdown elementModel to null', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(null, 'radio'))
  it('should map the value of a toggle-button elementModel to its elementCode value', () => {
    for (let i = 0; i < 10; i++) {
jojohoch's avatar
jojohoch committed
      expect(ElementModelElementCodeMappingService.mapToElementCodeValue(i, 'toggle-button'))
  it('should map the value null of a toggle-button elementModel to null', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(null, 'radio'))
  it('should map the value of a likert-row elementModel to its elementCode value', () => {
    for (let i = 0; i < 10; i++) {
jojohoch's avatar
jojohoch committed
      expect(ElementModelElementCodeMappingService.mapToElementCodeValue(i, 'likert-row'))
  it('should map the value null of a likert-row  elementModel to null', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(null, 'radio'))
  it('should map the value of a text-field elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textFieldValue, 'text-field'))
  it('should map the value of a text-field elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textFieldValue, 'text-field'))
  it('should map the value of a text-field-simple elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textFieldValue, 'text-field-simple'))
  });

  it('should map the value of a text-field-simple elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textFieldValue, 'text-field-simple'))
  it('should map the value of a spell-correct elementModel to its elementCode value', () => {
    const spellCorrectValue = 'TEST';
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(spellCorrectValue, 'spell-correct'))
  });

  it('should map the value of a spell-correct elementModel to its elementCode value', () => {
    const spellCorrectValue = null;
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(spellCorrectValue, 'spell-correct'))
  });

  it('should map the value of a text-area elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textAreaValue, 'text-area'))
  });

  it('should map the value of a text-area elementModel to its elementCode value', () => {
jojohoch's avatar
jojohoch committed
    expect(ElementModelElementCodeMappingService.mapToElementCodeValue(textAreaValue, 'text-area'))
  it('should map an elementCode value to drop-list elementModel value', () => {
    service.dragNDropValueObjects = [
        text: 'a',
        id: 'value_1',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 0
        text: 'b',
        id: 'value_2',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 0
        text: 'c',
        id: 'value_3',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 0
        text: 'd',
        id: 'value_4',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 0
        text: 'e',
        id: 'value_5',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 0
    const elementModel: DropListElement = JSON.parse(JSON.stringify(dropList_130));
    const expectedValue: DragNDropValueObject[] = [
        text: 'e',
        id: 'value_5',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 0
    expect(service.mapToElementModelValue(['value_5'], elementModel))
  it('should map an elementCode value to drop-list elementModel value', () => {
    service.dragNDropValueObjects = [
        text: 'a',
        id: 'value_1',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 0
        text: 'b',
        id: 'value_2',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 1
        text: 'c',
        id: 'value_3',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 2
        text: 'd',
        id: 'value_4',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 3
        text: 'e',
        id: 'value_5',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 4
    const elementModel: DropListElement = JSON.parse(JSON.stringify(dropList_130));
    const expectedValue: DragNDropValueObject[] = [
        text: 'e',
        id: 'value_5',
        imgSrc: null,
        imgFileName: '',
        audioSrc: null,
        audioFileName: '',
        imgPosition: 'above',
        originListID: 'id',
        originListIndex: 4
      }
    ];
    expect(service.mapToElementModelValue(['value_5'], elementModel))
      .toEqual(expectedValue);
  });

  it('should map an elementCode value to drop-list elementModel value with imageSrc', () => {
    service.dragNDropValueObjects = JSON.parse(JSON.stringify(dragNDropValues_01_130)).default;
    const elementModel: DropListElement = JSON.parse(JSON.stringify(dropList_130));
    const expectedValue = JSON.parse(JSON.stringify(dragNDropValues_02_130)).default;
    expect(service.mapToElementModelValue(['value_1', 'value_2'], elementModel))
  it('should map an elementCode value to drop-list-simple elementModel value - an empty array', () => {
    service.dragNDropValueObjects = JSON.parse(JSON.stringify(dragNDropValues_01_130)).default;
    const elementModel: DropListElement = JSON.parse(JSON.stringify(dropList_130));
    expect(service.mapToElementModelValue([], elementModel))
  it('should map an elementCode value to text elementModel value (text)', () => {
    const elementModel: TextElement = JSON.parse(JSON.stringify(text_130));
    const expectedValue =
      'Lorem <aspect-marked style="background-color: rgb(249, 248, 113);">ipsum</aspect-marked> dolor sit amet';
    expect(service.mapToElementModelValue(['6-11-#f9f871'], elementModel))
      .toEqual(expectedValue);
  it('should not map but return the text elementModel value (text)', () => {
    const elementModel: TextElement = JSON.parse(JSON.stringify(text_130));
    expect(service.mapToElementModelValue([], elementModel))
      .toEqual(elementModel.text);
  it('should not map but return the text elementModel value (text)', () => {
    const elementModel: TextElement = JSON.parse(JSON.stringify(text_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
      .toEqual(elementModel.text);
  it('should map an elementCode value to audio elementModel value', () => {
    const elementModel: AudioElement = JSON.parse(JSON.stringify(audio_130));
    expect(service.mapToElementModelValue(2, elementModel))
  it('should not map but return the audio elementModel value (player.playbackTime)', () => {
    const elementModel: AudioElement = JSON.parse(JSON.stringify(audio_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
  it('should map an elementCode value to image elementModel value', () => {
    const elementModel: ImageElement = JSON.parse(JSON.stringify(image_130));
    expect(service.mapToElementModelValue(true, elementModel))
  it('should not map but return the image elementModel value (magnifierUsed)', () => {
    const elementModel: ImageElement = JSON.parse(JSON.stringify(image_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
  it('should map an elementCode value to text-field elementModel value', () => {
    const elementModel: TextFieldElement = JSON.parse(JSON.stringify(textField_130));
    expect(service.mapToElementModelValue('TEST', elementModel))
  it('should not map but return the text-field elementModel value', () => {
    const elementModel: TextFieldElement = JSON.parse(JSON.stringify(textField_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
  it('should map an elementCode value to text-field-simple elementModel value', () => {
    const elementModel: TextFieldSimpleElement = JSON.parse(JSON.stringify(textFieldSimple_131));
    expect(service.mapToElementModelValue('TEST', elementModel))
      .toEqual('TEST');
  });

  it('should not map but return the text-field-simple elementModel value', () => {
    const elementModel: TextFieldSimpleElement = JSON.parse(JSON.stringify(textFieldSimple_131));
    expect(service.mapToElementModelValue(undefined, elementModel))
  it('should map an elementCode value to text-area elementModel value', () => {
    const elementModel: TextAreaElement = JSON.parse(JSON.stringify(textArea_130));
    expect(service.mapToElementModelValue('TEST', elementModel))
      .toEqual('TEST');
  });

  it('should not map but return the text-area elementModel value', () => {
    const elementModel: TextAreaElement = JSON.parse(JSON.stringify(textArea_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
      .toEqual(null);
  });

  it('should map an elementCode value to spell-correct elementModel value', () => {
    const elementModel: SpellCorrectElement = JSON.parse(JSON.stringify(spellCorrect_130));
    expect(service.mapToElementModelValue('TEST', elementModel))
      .toEqual('TEST');
  });

  it('should not map but return the spell-correct elementModel value', () => {
    const elementModel: SpellCorrectElement = JSON.parse(JSON.stringify(spellCorrect_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
  it('should map an elementCode value to radio elementModel value', () => {
    const elementModel: RadioButtonGroupElement = JSON.parse(JSON.stringify(radio_130));
    expect(service.mapToElementModelValue(1, elementModel))
      .toEqual(0);
  });

  it('should not map but return the radio elementModel value', () => {
    const elementModel: RadioButtonGroupElement = JSON.parse(JSON.stringify(radio_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
      .toEqual(null);
  });

  it('should map an elementCode value to radio-group-images elementModel value', () => {
    const elementModel: RadioButtonGroupComplexElement = JSON.parse(JSON.stringify(radioGroupImages_130));
    expect(service.mapToElementModelValue(2, elementModel))
      .toEqual(1);
  });

  it('should not map but return the radio-group-images elementModel value', () => {
    const elementModel: RadioButtonGroupComplexElement = JSON.parse(JSON.stringify(radioGroupImages_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
      .toEqual(null);
  });

  it('should map an elementCode value to likert-row elementModel value', () => {
    const elementModel: LikertRowElement = JSON.parse(JSON.stringify(likertRow_130));
    expect(service.mapToElementModelValue(3, elementModel))
      .toEqual(2);
  });

  it('should not map but return the likert-row elementModel value', () => {
    const elementModel: LikertRowElement = JSON.parse(JSON.stringify(likertRow_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
      .toEqual(null);
  });

  it('should map an elementCode value to toggle-button elementModel value', () => {
    const elementModel: ToggleButtonElement = JSON.parse(JSON.stringify(toggleButton_130));
    expect(service.mapToElementModelValue(1, elementModel))
      .toEqual(0);
  });

  it('should not map but return the toggle-button elementModel value', () => {
    const elementModel: ToggleButtonElement = JSON.parse(JSON.stringify(toggleButton_130));
    expect(service.mapToElementModelValue(undefined, elementModel))
jojohoch's avatar
jojohoch committed

  it('should map an elementCode value to hotspot-image elementModel value', () => {
    const elementModel: HotspotImageElement = JSON.parse(JSON.stringify(hotspotImage_135));
    expect(service.mapToElementModelValue([true], elementModel))
      .toEqual([
        {
          top: 10,
          left: 10,
          width: 20,
          height: 20,
jojohoch's avatar
jojohoch committed
          borderWidth: 1,
          borderColor: '#000000',
          backgroundColor: '#000000',
          rotation: 0,
          readOnly: false,
          value: true
        }
      ]);
  });

  it('should map an elementCode value to hotspot-image elementModel value', () => {
    const elementModel: HotspotImageElement = JSON.parse(JSON.stringify(hotspotImage_135));
    expect(service.mapToElementModelValue([false], elementModel))
      .toEqual([
        {
          top: 10,
          left: 10,
          width: 20,
          height: 20,
jojohoch's avatar
jojohoch committed
          borderWidth: 1,
          borderColor: '#000000',
          backgroundColor: '#000000',
          rotation: 0,
          readOnly: false,
          value: false
        }
      ]);
  });