From ff7480badd9f5e1c272459a6793d8362d119787e Mon Sep 17 00:00:00 2001
From: Benjamin Mitton <benjamin.mitton@inria.fr>
Date: Tue, 22 Feb 2022 09:29:01 +0100
Subject: [PATCH] test with interface type

---
 author.ts              |  2 +-
 contents/assessment.ts | 26 +++++++++++++-------------
 contents/content.ts    | 12 ++++++------
 contents/html.ts       |  2 +-
 contents/video.ts      |  2 +-
 epoc.ts                | 14 +++++++-------
 6 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/author.ts b/author.ts
index 86c0270..410e266 100644
--- a/author.ts
+++ b/author.ts
@@ -1,6 +1,6 @@
 import {html} from './types';
 
-export class Author {
+export interface Author {
     name: string;
     image: string;
     description: html;
diff --git a/contents/assessment.ts b/contents/assessment.ts
index d0fee98..4a8215d 100644
--- a/contents/assessment.ts
+++ b/contents/assessment.ts
@@ -1,28 +1,28 @@
 import {Content} from './content';
 import {html, uid} from '../types';
 
-export class Assessment extends Content {
+export interface Assessment extends Content {
     summary?: string;
     questions?: uid[];
     time?: number;
 }
 
-export class AssessmentRuntime extends Assessment {
+export interface AssessmentRuntime extends Assessment {
     score?: number;
     scoreTotal?: number;
     chapterId?: uid;
     easierScoring?: boolean;
 }
 
-export class SimpleQuestion extends Content {
+export interface SimpleQuestion extends Content {
     question: uid;
 }
 
-export class SimpleQuestionRuntime extends SimpleQuestion {
+export interface SimpleQuestionRuntime extends SimpleQuestion {
     chapterId?: number;
 }
 
-export class Question {
+export interface Question {
     type: string;
     score: number;
     statement: string;
@@ -33,36 +33,36 @@ export class Question {
     easierScoring?: boolean;
 }
 
-export class DragAndDropquestion extends Question{
+export interface DragAndDropquestion extends Question{
     correctResponse: Array<{label: string, values: string[]}>;
 }
 
-export class MultipleChoiceQuestion extends Question {
+export interface MultipleChoiceQuestion extends Question {
     correctResponse: Array<string>;
 }
 
-export class SimpleChoiceQuestion extends Question {
+export interface SimpleChoiceQuestion extends Question {
     correctResponse: string;
 }
 
-export class Response {
+export interface Response {
     label: string;
     value: string;
     explanation?: string;
 }
 
-export class SwipeQuestion extends Question {
+export interface SwipeQuestion extends Question {
     correctResponse: Array<{label: string, values: string[]}>;
 }
 
-export class SwipeQuestionRuntime extends SwipeQuestion {
+export interface SwipeQuestionRuntime extends SwipeQuestion {
     possibilities?: Array<string>;
 }
 
-export class DropDownListQuestion extends Question {
+export interface DropDownListQuestion extends Question {
     correctResponse: Array<{label: string, values: string[]}>;
 }
 
-export class DropDownListQuestionRuntime extends DragAndDropquestion {
+export interface DropDownListQuestionRuntime extends DragAndDropquestion {
     categories?: Array<string>;
 }
\ No newline at end of file
diff --git a/contents/content.ts b/contents/content.ts
index 244d279..99abfe2 100644
--- a/contents/content.ts
+++ b/contents/content.ts
@@ -1,6 +1,6 @@
 import {uid} from '../types';
 
-export abstract class Content {
+export interface Content {
     id: uid;
     type: 'html' | 'assessment' | 'video' | 'simple-question' | 'choice';
     title: string;
@@ -9,25 +9,25 @@ export abstract class Content {
     conditionResolver?: ScoreResolver | ChoiceResolver;
 }
 
-abstract class Resolver {
+ interface Resolver {
     conditionalFlag: ConditionalFlag[];
 }
 
-export class ScoreResolver extends Resolver{
+export interface ScoreResolver extends Resolver{
     type: 'score';
 }
 
-export class ChoiceResolver extends Resolver{
+export interface ChoiceResolver extends Resolver{
     type: 'choice';
     choices: Choice[];
 }
 
-export class Choice {
+export interface Choice {
     label: string;
     value: string;
 }
 
-export class ConditionalFlag {
+export interface ConditionalFlag {
     value: string;
     flags: uid[];
 }
diff --git a/contents/html.ts b/contents/html.ts
index 616c197..6416011 100644
--- a/contents/html.ts
+++ b/contents/html.ts
@@ -1,6 +1,6 @@
 import {Content} from './content';
 import {html} from '../types';
 
-export class Html extends Content {
+export interface Html extends Content {
     html: html;
 }
diff --git a/contents/video.ts b/contents/video.ts
index ea61a2a..692fdc5 100644
--- a/contents/video.ts
+++ b/contents/video.ts
@@ -1,7 +1,7 @@
 import {Content} from './content';
 import {html} from '../types';
 
-export class Video extends Content {
+export interface Video extends Content {
     source: string;
     summary: html;
     subtitles: {label: string, lang: string, src: string}[];
diff --git a/epoc.ts b/epoc.ts
index 927252b..7fb51e0 100644
--- a/epoc.ts
+++ b/epoc.ts
@@ -3,7 +3,7 @@ import {Content} from './contents/content';
 import {html, uid} from './types';
 import {Assessment, Question} from './contents/assessment';
 
-export class EpocMetadata {
+export interface EpocMetadata {
     lastModif : string;
     version : string;
     id: string;
@@ -19,13 +19,13 @@ export class EpocMetadata {
     download: string;
 }
 
-export class EpocLibrary extends EpocMetadata {
+export interface EpocLibrary extends EpocMetadata {
     downloading: boolean;
     downloaded: boolean;
     unzipping: boolean;
 }
 
-export class Epoc extends EpocMetadata {
+export interface Epoc extends EpocMetadata {
     certificateScore: number;
     parameters: Parameters;
     contents: Record<uid, Content>;
@@ -33,11 +33,11 @@ export class Epoc extends EpocMetadata {
     questions: Record<uid, Question>;
 }
 
-export class EpocRuntime extends Epoc {
+export interface EpocRuntime extends Epoc {
     assessments: Assessment[];
 }
 
-export class Chapter {
+export interface Chapter {
     id: uid;
     title: string;
     image?: string;
@@ -45,7 +45,7 @@ export class Chapter {
     contents: uid[];
 }
 
-export class ChapterRuntime extends Chapter {
+export interface ChapterRuntime extends Chapter {
     time: number;
     videoCount: number;
     assessmentCount: number;
@@ -55,7 +55,7 @@ export class ChapterRuntime extends Chapter {
     assessmentDone: boolean;
 }
 
-export class Parameters {
+export interface Parameters {
     chapterParameter?: string;
     easierScoring?: boolean;
     openQuestionButton?: string;
-- 
GitLab