-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSchoolRealityWorkflowTest.gs
More file actions
124 lines (112 loc) · 4.82 KB
/
Copy pathSchoolRealityWorkflowTest.gs
File metadata and controls
124 lines (112 loc) · 4.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/**
* codex-school-workflow-test
* Workflow: En Si Sanar
* Contexto: manifestacao comportamental e fisiologica da aprendizagem
*
* Valida que o workflow registra contrato, analisa duas leituras e dispoe
* de painel para exibicao das analises da realidade escolar.
*/
var SCHOOL_REALITY_WORKFLOW_TEST_CONTEXT = {
projectName: "En Si Sanar",
focus: "manifestacao comportamental e fisiologica da aprendizagem"
};
function assertSchoolRealityWorkflow_En_Si_Sanar(condition, message) {
if (!condition) {
throw new Error("[SchoolRealityWorkflowTest] " + message);
}
}
function testSchoolRealityWorkflowAnalytics_En_Si_Sanar() {
assertSchoolRealityWorkflow_En_Si_Sanar(
typeof SCHOOL_REALITY_STUDY_CONTEXT !== "undefined",
"SCHOOL_REALITY_STUDY_CONTEXT deve existir para refletir os estudos associados."
);
assertSchoolRealityWorkflow_En_Si_Sanar(
SCHOOL_REALITY_STUDY_CONTEXT.focus,
"O contexto de estudo deve declarar um foco analitico."
);
assertSchoolRealityWorkflow_En_Si_Sanar(
SCHOOL_REALITY_STUDY_CONTEXT.analysisOneLabel && SCHOOL_REALITY_STUDY_CONTEXT.analysisTwoPerformanceLabel,
"O contexto de estudo deve refinar os rotulos das duas analises."
);
assertSchoolRealityWorkflow_En_Si_Sanar(
typeof SchoolRealityAnalyticsService !== "undefined",
"SchoolRealityAnalyticsService deve existir."
);
assertSchoolRealityWorkflow_En_Si_Sanar(
typeof SchoolRealityAnalyticsService.computeAnalyses === "function",
"computeAnalyses deve estar disponivel."
);
assertSchoolRealityWorkflow_En_Si_Sanar(
typeof SchoolRealityAnalyticsService.recordObservation === "function",
"recordObservation deve estar disponivel para registrar manifestacoes do workflow."
);
var analyses = SchoolRealityAnalyticsService.computeAnalyses({ record: false });
assertSchoolRealityWorkflow_En_Si_Sanar(Array.isArray(analyses), "computeAnalyses deve retornar uma lista.");
assertSchoolRealityWorkflow_En_Si_Sanar(analyses.length >= 2, "O workflow deve retornar ao menos 2 analises.");
var keys = analyses.map(function(item) { return item.key; });
assertSchoolRealityWorkflow_En_Si_Sanar(keys.indexOf("coverage") !== -1, "Deve existir analise de cobertura de registros.");
assertSchoolRealityWorkflow_En_Si_Sanar(
keys.indexOf("attention_or_performance") !== -1,
"Deve existir analise de atencao, desempenho, manifestacao ou gestao."
);
analyses.slice(0, 2).forEach(function(item) {
assertSchoolRealityWorkflow_En_Si_Sanar(item.label, "Cada analise precisa de rotulo para exibicao.");
assertSchoolRealityWorkflow_En_Si_Sanar(item.unit, "Cada analise precisa de unidade.");
assertSchoolRealityWorkflow_En_Si_Sanar(item.dimension, "Cada analise precisa de dimensao.");
assertSchoolRealityWorkflow_En_Si_Sanar(item.narrative, "Cada analise precisa de narrativa contextual.");
});
return {
success: true,
projectName: SCHOOL_REALITY_WORKFLOW_TEST_CONTEXT.projectName,
focus: SCHOOL_REALITY_WORKFLOW_TEST_CONTEXT.focus,
studyCategory: SCHOOL_REALITY_STUDY_CONTEXT.category,
analyses: analyses.slice(0, 2)
};
}
function testSchoolRealityWorkflowPanel_En_Si_Sanar() {
assertSchoolRealityWorkflow_En_Si_Sanar(
typeof getSchoolRealityAnalyticsSummary === "function",
"Endpoint getSchoolRealityAnalyticsSummary deve estar publicado."
);
assertSchoolRealityWorkflow_En_Si_Sanar(
typeof HtmlService !== "undefined",
"HtmlService deve estar disponivel para validar exibicao."
);
var template = HtmlService.createTemplateFromFile("SchoolRealityAnalyticsPanel");
var html = template.evaluate().getContent();
assertSchoolRealityWorkflow_En_Si_Sanar(
html.indexOf("school-reality-analytics__card") !== -1,
"Painel deve conter cards de analise."
);
assertSchoolRealityWorkflow_En_Si_Sanar(
html.indexOf("getSchoolRealityAnalyticsSummary") !== -1,
"Painel deve chamar o resumo analitico do backend."
);
return {
success: true,
projectName: SCHOOL_REALITY_WORKFLOW_TEST_CONTEXT.projectName,
panel: "SchoolRealityAnalyticsPanel"
};
}
function runSchoolRealityWorkflowTests_En_Si_Sanar(options) {
options = options || {};
var analytics = testSchoolRealityWorkflowAnalytics_En_Si_Sanar();
var panel = testSchoolRealityWorkflowPanel_En_Si_Sanar();
if (options.write === true) {
SchoolRealityAnalyticsService.recordObservation({
key: "workflow_test_observation",
label: "Observacao de teste do workflow",
value: 1,
unit: "evento",
dimension: SCHOOL_REALITY_WORKFLOW_TEST_CONTEXT.focus,
narrative: "Registro controlado gerado pelo teste contextual do workflow.",
source: "SchoolRealityWorkflowTest"
});
}
return {
success: true,
projectName: SCHOOL_REALITY_WORKFLOW_TEST_CONTEXT.projectName,
focus: SCHOOL_REALITY_WORKFLOW_TEST_CONTEXT.focus,
tests: [analytics, panel]
};
}