@testgorilla/tgo-coding-test 1.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/testgorilla-tgo-coding-test.mjs +94 -94
- package/fesm2022/testgorilla-tgo-coding-test.mjs.map +1 -1
- package/lib/components/configurations/configurations.component.d.ts +1 -1
- package/package.json +15 -17
- package/esm2022/index.mjs +0 -12
- package/esm2022/lib/components/code-editor/code-editor.component.mjs +0 -335
- package/esm2022/lib/components/code-editor/code-editor.service.mjs +0 -72
- package/esm2022/lib/components/code-editor/helpers/c-helper.mjs +0 -40
- package/esm2022/lib/components/code-editor/helpers/code-editor-helper.base.mjs +0 -11
- package/esm2022/lib/components/code-editor/helpers/code-editor-helper.model.mjs +0 -2
- package/esm2022/lib/components/code-editor/helpers/cpp-helper.mjs +0 -41
- package/esm2022/lib/components/code-editor/helpers/csharp-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/go-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/index.mjs +0 -16
- package/esm2022/lib/components/code-editor/helpers/java-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/javascript-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/kotlin-helper.mjs +0 -42
- package/esm2022/lib/components/code-editor/helpers/php-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/python-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/r-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/ruby-helper.mjs +0 -26
- package/esm2022/lib/components/code-editor/helpers/scala-helper.mjs +0 -41
- package/esm2022/lib/components/code-editor/helpers/sql-helper.mjs +0 -34
- package/esm2022/lib/components/code-editor/helpers/swift-helper.mjs +0 -40
- package/esm2022/lib/components/code-editor/helpers/typescript-helper.mjs +0 -41
- package/esm2022/lib/components/code-editor/models/code-editor.model.mjs +0 -2
- package/esm2022/lib/components/code-editor/models/coding-snapshot.model.mjs +0 -2
- package/esm2022/lib/components/coding-question/coding-question.component.mjs +0 -126
- package/esm2022/lib/components/coding-section/coding-section.component.mjs +0 -188
- package/esm2022/lib/components/common/truncated-text/truncated-text.component.mjs +0 -38
- package/esm2022/lib/components/configurations/configurations.component.mjs +0 -97
- package/esm2022/lib/components/instructions/instructions.component.mjs +0 -139
- package/esm2022/lib/components/panel/panel.component.mjs +0 -34
- package/esm2022/lib/components/runnable-editor/runnable-editor.component.mjs +0 -169
- package/esm2022/lib/components/tests/test-cases/test-cases.component.mjs +0 -198
- package/esm2022/lib/components/tests/test-cases-content/test-cases-content.component.mjs +0 -96
- package/esm2022/lib/components/tests/test-cases-status/test-cases-status.component.mjs +0 -21
- package/esm2022/lib/components/tests/test-results.component.mjs +0 -127
- package/esm2022/lib/components/tgo-coding-test/tgo-coding-test.component.mjs +0 -280
- package/esm2022/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.mjs +0 -476
- package/esm2022/lib/config/index.mjs +0 -2
- package/esm2022/lib/config/tgo-coding-test.config.mjs +0 -2
- package/esm2022/lib/config/tgo-coding-test.provider.mjs +0 -34
- package/esm2022/lib/config/tgo-coding-test.token.mjs +0 -14
- package/esm2022/lib/models/auto-saved-data.mjs +0 -2
- package/esm2022/lib/models/code-event.mjs +0 -2
- package/esm2022/lib/models/coderunner-execution-results.mjs +0 -2
- package/esm2022/lib/models/configs.mjs +0 -2
- package/esm2022/lib/models/language-change-action.mjs +0 -2
- package/esm2022/lib/models/lat-languages.mjs +0 -3
- package/esm2022/lib/models/mixpanel-events.mjs +0 -2
- package/esm2022/lib/models/mode.mjs +0 -2
- package/esm2022/lib/models/paste-data.mjs +0 -2
- package/esm2022/lib/models/programming-language.mjs +0 -2
- package/esm2022/lib/models/test-cases.mjs +0 -7
- package/esm2022/lib/models/theme.mjs +0 -2
- package/esm2022/lib/models/translations.mjs +0 -2
- package/esm2022/lib/models/view-mode.mjs +0 -8
- package/esm2022/lib/pipes/memoize-func.pipe.mjs +0 -39
- package/esm2022/lib/services/candidate-coding-test-services/candidature-api.service.mjs +0 -19
- package/esm2022/lib/services/candidate-coding-test-services/coderunner-api.service.mjs +0 -58
- package/esm2022/lib/services/candidate-coding-test-services/coding-test-tour.service.mjs +0 -89
- package/esm2022/lib/services/candidate-coding-test-services/coding-test.service.mjs +0 -490
- package/esm2022/lib/services/candidate-coding-test-services/index.mjs +0 -5
- package/esm2022/lib/services/coding-test-config.service.mjs +0 -51
- package/esm2022/lib/services/configurations.service.mjs +0 -89
- package/esm2022/lib/services/lib-coding-test.service.mjs +0 -106
- package/esm2022/lib/services/storage.service.mjs +0 -624
- package/esm2022/lib/services/test-cases.service.mjs +0 -30
- package/esm2022/lib/services/theme.service.mjs +0 -36
- package/esm2022/lib/utils/additional-languages/erlang.mjs +0 -103
- package/esm2022/lib/utils/resize-element.mjs +0 -13
- package/esm2022/lib/utils/time-to-ms.util.mjs +0 -11
- package/esm2022/shared/index.mjs +0 -5
- package/esm2022/shared/lib/components/audio-animation/audio-animation.component.mjs +0 -114
- package/esm2022/shared/lib/components/audio-animation/index.mjs +0 -2
- package/esm2022/shared/lib/components/index.mjs +0 -3
- package/esm2022/shared/lib/components/vimeo-video/index.mjs +0 -2
- package/esm2022/shared/lib/components/vimeo-video/vimeo-video.component.mjs +0 -101
- package/esm2022/shared/lib/models/answer.mjs +0 -2
- package/esm2022/shared/lib/models/assessment.mjs +0 -2
- package/esm2022/shared/lib/models/environment.mjs +0 -2
- package/esm2022/shared/lib/models/index.mjs +0 -9
- package/esm2022/shared/lib/models/question-component.mjs +0 -2
- package/esm2022/shared/lib/models/question.mjs +0 -2
- package/esm2022/shared/lib/models/test.mjs +0 -2
- package/esm2022/shared/lib/models/translations.mjs +0 -2
- package/esm2022/shared/lib/models/window.mjs +0 -2
- package/esm2022/shared/lib/services/api/api.service.mjs +0 -97
- package/esm2022/shared/lib/services/api/mocked-api.service.mjs +0 -131
- package/esm2022/shared/lib/services/environment/environment.service.mjs +0 -13
- package/esm2022/shared/lib/services/index.mjs +0 -10
- package/esm2022/shared/lib/services/localization/languages.model.mjs +0 -19
- package/esm2022/shared/lib/services/localization/transloco-lazy-module-utils.mjs +0 -27
- package/esm2022/shared/lib/services/localization/transloco-testing.module.mjs +0 -11
- package/esm2022/shared/lib/services/media/media.service.mjs +0 -129
- package/esm2022/shared/lib/services/mixpanel/mixpanel.service.mjs +0 -30
- package/esm2022/shared/lib/services/theme/theme.service.mjs +0 -24
- package/esm2022/shared/test-mocks/assessment-test.mock.mjs +0 -112
- package/esm2022/shared/test-mocks/index.mjs +0 -3
- package/esm2022/shared/test-mocks/tgo-ui.mock.mjs +0 -39
- package/esm2022/testgorilla-tgo-coding-test.mjs +0 -5
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChild, } from '@angular/core';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { MatTabGroup, MatTabsModule } from '@angular/material/tabs';
|
|
5
|
-
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
-
import { filter } from 'rxjs';
|
|
7
|
-
import { IconComponentModule, ButtonComponentModule } from '@testgorilla/tgo-ui';
|
|
8
|
-
import { TestCaseStatus, } from '../../../models/test-cases';
|
|
9
|
-
import { LibCodingTestService } from '../../../services/lib-coding-test.service';
|
|
10
|
-
import { StorageCodingService } from '../../../services/storage.service';
|
|
11
|
-
import { TestCasesService } from '../../../services/test-cases.service';
|
|
12
|
-
import { TestCasesStatusComponent } from '../test-cases-status/test-cases-status.component';
|
|
13
|
-
import { TestCasesContentComponent } from '../test-cases-content/test-cases-content.component';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "../../../services/lib-coding-test.service";
|
|
16
|
-
import * as i2 from "../../../services/test-cases.service";
|
|
17
|
-
import * as i3 from "../../../services/storage.service";
|
|
18
|
-
import * as i4 from "@angular/common";
|
|
19
|
-
import * as i5 from "@angular/material/tabs";
|
|
20
|
-
import * as i6 from "@testgorilla/tgo-ui";
|
|
21
|
-
let TestCasesComponent = class TestCasesComponent {
|
|
22
|
-
libCodingTestService;
|
|
23
|
-
changeDetectorRef;
|
|
24
|
-
testCasesService;
|
|
25
|
-
StorageCodingService;
|
|
26
|
-
exampleTestCases;
|
|
27
|
-
apiTestCasesResult;
|
|
28
|
-
testCasesStatus;
|
|
29
|
-
testCases;
|
|
30
|
-
translations;
|
|
31
|
-
areTestsRun;
|
|
32
|
-
applicationTheme;
|
|
33
|
-
canAddCustomTestCases;
|
|
34
|
-
isSQL;
|
|
35
|
-
tabGroup;
|
|
36
|
-
testCasesResult;
|
|
37
|
-
activeTestCaseIndex;
|
|
38
|
-
maxTestCasesAllowed = 6; //Could be taken from backend
|
|
39
|
-
isAddTestCasesDisabled;
|
|
40
|
-
isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
|
|
41
|
-
isContentViewOpened;
|
|
42
|
-
constructor(libCodingTestService, changeDetectorRef, testCasesService, StorageCodingService) {
|
|
43
|
-
this.libCodingTestService = libCodingTestService;
|
|
44
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
45
|
-
this.testCasesService = testCasesService;
|
|
46
|
-
this.StorageCodingService = StorageCodingService;
|
|
47
|
-
}
|
|
48
|
-
ngOnInit() {
|
|
49
|
-
this.testCasesService.activeTestCaseIndex$.pipe(untilDestroyed(this)).subscribe(index => {
|
|
50
|
-
this.activeTestCaseIndex = index;
|
|
51
|
-
});
|
|
52
|
-
this.setDefaultTestCases();
|
|
53
|
-
if (this.canAddCustomTestCases) {
|
|
54
|
-
this.updateAddCustomTestCaseDisabled();
|
|
55
|
-
this.listenTestCaseDeletion();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
ngOnChanges({ apiTestCasesResult }) {
|
|
59
|
-
if (!apiTestCasesResult) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
const apiTestCases = apiTestCasesResult.currentValue;
|
|
63
|
-
if (apiTestCases) {
|
|
64
|
-
this.testCasesResult = apiTestCases.length ? this.handleEmptyTestCases(apiTestCases) : [];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
setDefaultTestCases() {
|
|
68
|
-
if (!this.testCases.length) {
|
|
69
|
-
this.testCases = [...(this.exampleTestCases || [])];
|
|
70
|
-
this.onTestCasesChanged();
|
|
71
|
-
this.setActiveTestCaseIndex(this.isMobile ? null : 0);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
addTestCase() {
|
|
75
|
-
const testCaseLocalId = this.testCasesService.createTestCaseLocalId();
|
|
76
|
-
this.testCases.push({
|
|
77
|
-
localId: testCaseLocalId,
|
|
78
|
-
name: `Test ${testCaseLocalId}`,
|
|
79
|
-
input: '',
|
|
80
|
-
expectedOutput: '',
|
|
81
|
-
preloaded: false,
|
|
82
|
-
});
|
|
83
|
-
this.onTestCasesChanged();
|
|
84
|
-
this.testCasesService.setActiveTestCase(this.testCases.length - 1);
|
|
85
|
-
this.isContentViewOpened = this.isMobile;
|
|
86
|
-
this.updateAddCustomTestCaseDisabled();
|
|
87
|
-
if (!this.isMobile) {
|
|
88
|
-
this.setFocus();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
removeTestCase(index) {
|
|
92
|
-
this.libCodingTestService.handleTestCaseDeletion(index);
|
|
93
|
-
}
|
|
94
|
-
modifyTestCase(index, modifiedValue) {
|
|
95
|
-
if (!this.testCases[index].preloaded) {
|
|
96
|
-
this.testCases[index].input = modifiedValue.input;
|
|
97
|
-
this.testCases[index].expectedOutput = modifiedValue.expectedOutput;
|
|
98
|
-
this.onTestCasesChanged();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
setFocus() {
|
|
102
|
-
const tabHeaderId = `mat-tab-label-${this.tabGroup['_groupId']}-${this.activeTestCaseIndex}`;
|
|
103
|
-
const tabHeaderElement = document.getElementById(tabHeaderId);
|
|
104
|
-
if (tabHeaderElement) {
|
|
105
|
-
tabHeaderElement.focus();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
onTestCasesChanged() {
|
|
109
|
-
this.libCodingTestService.updateTestCases([...this.testCases]);
|
|
110
|
-
this.StorageCodingService.updateTestCases([...this.testCases]);
|
|
111
|
-
}
|
|
112
|
-
setActiveTestCaseIndex(index) {
|
|
113
|
-
this.testCasesService.setActiveTestCase(index);
|
|
114
|
-
this.isContentViewOpened = index !== null ? this.isMobile : false;
|
|
115
|
-
}
|
|
116
|
-
closeTestCaseMobileView() {
|
|
117
|
-
this.isContentViewOpened = false;
|
|
118
|
-
this.testCasesService.setActiveTestCase(null);
|
|
119
|
-
}
|
|
120
|
-
listenTestCaseDeletion() {
|
|
121
|
-
this.libCodingTestService.testCaseDeletion$
|
|
122
|
-
.pipe(filter(({ action }) => action === "confirm" /* TestCaseDeletionAction.Confirm */), untilDestroyed(this))
|
|
123
|
-
.subscribe(({ index }) => {
|
|
124
|
-
this.testCases.splice(index, 1);
|
|
125
|
-
this.testCasesResult.splice(index, 1);
|
|
126
|
-
this.onTestCasesChanged();
|
|
127
|
-
if (this.isMobile) {
|
|
128
|
-
this.closeTestCaseMobileView();
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
this.testCasesService.setActiveTestCase(index - 1);
|
|
132
|
-
}
|
|
133
|
-
this.updateAddCustomTestCaseDisabled();
|
|
134
|
-
this.changeDetectorRef.detectChanges();
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
handleEmptyTestCases(apiTestCasesResults) {
|
|
138
|
-
const testCasesResult = [...apiTestCasesResults];
|
|
139
|
-
this.testCases.forEach(({ input, expectedOutput }, index) => {
|
|
140
|
-
const isEmpty = this.isSQL ? !expectedOutput : !input || !expectedOutput;
|
|
141
|
-
if (isEmpty) {
|
|
142
|
-
testCasesResult.splice(index, 0, {
|
|
143
|
-
actualOutput: null,
|
|
144
|
-
logs: null,
|
|
145
|
-
status: TestCaseStatus.Empty,
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
return testCasesResult;
|
|
150
|
-
}
|
|
151
|
-
updateAddCustomTestCaseDisabled() {
|
|
152
|
-
const exampleTestCasesCount = this.exampleTestCases?.length || 0;
|
|
153
|
-
this.isAddTestCasesDisabled = this.testCases.length - exampleTestCasesCount < this.maxTestCasesAllowed;
|
|
154
|
-
}
|
|
155
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestCasesComponent, deps: [{ token: i1.LibCodingTestService }, { token: i0.ChangeDetectorRef }, { token: i2.TestCasesService }, { token: i3.StorageCodingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
156
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TestCasesComponent, isStandalone: true, selector: "tgo-test-cases", inputs: { exampleTestCases: "exampleTestCases", apiTestCasesResult: "apiTestCasesResult", testCasesStatus: "testCasesStatus", testCases: "testCases", translations: "translations", areTestsRun: "areTestsRun", applicationTheme: "applicationTheme", canAddCustomTestCases: "canAddCustomTestCases", isSQL: "isSQL" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"test-case-container\">\n <div\n id=\"test-cases\"\n class=\"test-case-tabs-wrapper\"\n [ngClass]=\"{\n 'test-case-tabs-wrapper-tests-run': areTestsRun,\n 'test-case-tabs-wrapper-mobile': isMobile,\n 'test-case-tabs-wrapper-hidden': isContentViewOpened\n }\"\n >\n @if (!isMobile) {\n <mat-tab-group\n #tabGroup\n class=\"test-cases-tabs\"\n [selectedIndex]=\"activeTestCaseIndex\"\n (selectedIndexChange)=\"setActiveTestCaseIndex($event)\"\n >\n @for (testCase of testCases; track testCase; let index = $index) {\n <mat-tab label=\"{{ testCase.name }}\">\n <ng-template mat-tab-label>\n <div class=\"tab-label-wrapper\">\n <ng-container\n [ngTemplateOutlet]=\"testCaseHeading\"\n [ngTemplateOutletContext]=\"{ testCase: testCase, index: index }\"\n ></ng-container>\n </div>\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n } @else {\n <div class=\"test-cases-tabs test-cases-tabs-mobile\">\n @for (testCase of testCases; track testCase; let index = $index) {\n <div class=\"tab-label-wrapper\" (click)=\"setActiveTestCaseIndex(index)\">\n <div class=\"test-case-name-status-wrapper\">\n <ng-container\n [ngTemplateOutlet]=\"testCaseHeading\"\n [ngTemplateOutletContext]=\"{ testCase: testCase, index: index }\"\n ></ng-container>\n </div>\n @if (isMobile) {\n <ui-icon [name]=\"'Arrow-chevron-right-filled'\" [size]=\"'24'\" class=\"themed-button\"></ui-icon>\n }\n </div>\n }\n </div>\n } @if (canAddCustomTestCases) {\n <ui-button\n class=\"add-test-case themed-button\"\n [variant]=\"'tertiary'\"\n [iconName]=\"'Plus'\"\n [iconPosition]=\"'left'\"\n [disabled]=\"!isAddTestCasesDisabled\"\n [fullWidth]=\"true\"\n [tooltip]=\"!isAddTestCasesDisabled ? translations['TOOLTIPS']['CANT_ADD_TEST_CASE'] : null\"\n [label]=\"\n translations['TEST_RESULTS']['TEST_CASES']['ADD_TEST_CASE'] +\n ' (' +\n (testCases?.length - exampleTestCases?.length) +\n '/' +\n maxTestCasesAllowed +\n ')'\n \"\n (buttonClickEvent)=\"addTestCase()\"\n >\n </ui-button>\n }\n </div>\n\n @if (!isMobile) {\n <div class=\"test-case-content-wrapper\">\n <ng-container [ngTemplateOutlet]=\"testCasesContentTpl\"></ng-container>\n </div>\n } @if (isMobile && isContentViewOpened) {\n <div class=\"test-case-content-wrapper-mobile\">\n <div class=\"test-case-mobile-name-wrapper\">\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n [tooltip]=\"''\"\n [size]=\"'small'\"\n (buttonClickEvent)=\"closeTestCaseMobileView()\"\n class=\"themed-button\"\n >\n </ui-button>\n <ng-container\n [ngTemplateOutlet]=\"testCaseHeading\"\n [ngTemplateOutletContext]=\"{\n testCase: testCases[activeTestCaseIndex],\n index: activeTestCaseIndex,\n hideStatus: true\n }\"\n ></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"testCasesContentTpl\"></ng-container>\n </div>\n }\n</div>\n\n<ng-template #testCaseHeading let-testCase=\"testCase\" let-index=\"index\" let-hideStatus=\"hideStatus\">\n <div class=\"tab-label\">\n @if (testCase.preloaded) {\n <ui-icon [name]=\"'Lock'\" class=\"preloaded-icon\"></ui-icon>\n }\n <span class=\"tab-label-value\">{{ testCase.name }}</span>\n </div>\n\n @if (!hideStatus && testCasesResult?.length) {\n <tgo-test-cases-status\n [status]=\"testCasesResult?.[index]?.status\"\n [translations]=\"translations['TEST_RESULTS']['TEST_CASES']['STATUSES']\"\n ></tgo-test-cases-status>\n } @if (!testCase.preloaded) {\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Delete'\"\n [tooltip]=\"translations['TOOLTIPS']['DELETE_TEST_CASE'] || ''\"\n (buttonClickEvent)=\"removeTestCase(index)\"\n class=\"delete-test-case themed-button\"\n >\n </ui-button>\n }\n</ng-template>\n\n<ng-template #testCasesContentTpl>\n <tgo-test-cases-content\n [testCase]=\"testCases[activeTestCaseIndex]\"\n [testCaseResult]=\"testCasesResult?.[activeTestCaseIndex]\"\n [areTestsRun]=\"areTestsRun\"\n [translations]=\"translations['TEST_RESULTS']['TEST_CASES']\"\n [isSQL]=\"isSQL\"\n [applicationTheme]=\"applicationTheme\"\n (valueChange)=\"modifyTestCase(activeTestCaseIndex, $event)\"\n ></tgo-test-cases-content>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.test-case-container{display:flex;height:100%}.test-case-container .test-case-tabs-wrapper{display:flex;flex-direction:column;position:relative;overflow-y:auto;border-right:1px solid var(--border-bg-color);height:100%;min-width:230px}.test-case-container .test-case-tabs-wrapper-mobile{flex:1}.test-case-container .test-case-tabs-wrapper-mobile.test-case-tabs-wrapper-hidden{display:none}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab .mdc-tab-indicator{width:3px}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab .mdc-tab-indicator .mdc-tab-indicator__content{border-left:3px solid transparent;height:100%}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab:hover .delete-test-case{display:block}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab.mdc-tab--active .tab-label-value{font-weight:600}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab.mdc-tab--active .mdc-tab-indicator__content{border-left-color:var(--company-color, #D410AA)}.test-case-container .test-case-tabs-wrapper .test-cases-tabs{flex-direction:row;flex-grow:1}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__content{justify-content:flex-start;padding:14px 16px;width:100%}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__content .mdc-tab__text-label{flex-grow:1}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__content .tab-label-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mat-mdc-tab-labels{flex-direction:column}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mat-mdc-tab-header{width:100%;border-bottom:none}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab{height:48px;padding:0;border-bottom:1px solid var(--border-bg-color);color:var(--secondary-text-color)}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__text-label{width:100%}.test-case-container .test-case-tabs-wrapper .test-cases-tabs.mat-mdc-tab-group.mat-primary ::ng-deep .mat-ink-bar{background-color:transparent}.test-case-container .test-case-tabs-wrapper .test-cases-tabs-mobile .test-case-name-status-wrapper{display:flex;justify-content:space-between;flex:1}.test-case-container .test-case-tabs-wrapper .test-cases-tabs-mobile .tab-label-wrapper{display:flex;padding:14px 16px;cursor:pointer;border-bottom:1px solid var(--border-bg-color)}.test-case-container .test-case-tabs-wrapper .add-test-case{position:sticky;bottom:0;left:0;right:0;border-top:1px solid var(--border-bg-color);border-radius:0;z-index:1}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep mat-icon{color:var(--company-color, #D410AA)}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button{justify-content:flex-start;background-color:var(--bg-mat-card)}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button:disabled{opacity:1}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button:disabled .mdc-button__label{opacity:.75}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button span{color:var(--company-theme-specific-color, #D410AA)!important}.test-case-container .delete-test-case{display:none;position:absolute;right:16px;cursor:pointer}.test-case-container .delete-test-case ::ng-deep .icon-button:not(:hover){background-color:var(--bg-mat-card)!important}.test-case-container .delete-test-case ::ng-deep svg{color:var(--icon-bg-color)}.test-case-container ::ng-deep .mat-tab-label.cdk-program-focused .delete-test-case svg rect{fill:#484c4d00}.test-case-container .test-case-content-wrapper{flex-grow:1;overflow-y:auto}.test-case-container .preloaded-icon{margin-right:4px}.test-case-container .preloaded-icon ::ng-deep mat-icon svg{color:var(--icon-secondary-bg-color)}.test-case-container .tab-label{display:flex;align-items:center;color:var(--main-text-color)}.test-case-container .chevron-icon{margin-left:8px}.test-case-container .test-case-content-wrapper-mobile{overflow:auto}.test-case-container .test-case-mobile-name-wrapper{display:flex;position:relative;padding:14px 16px 0}.test-case-container .test-case-mobile-name-wrapper .chevron-icon{margin:0 4px 0 0}.test-case-container .test-case-mobile-name-wrapper .delete-test-case{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i5.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: IconComponentModule }, { kind: "component", type: i6.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "toggleIconStyle", "applicationTheme", "useFullIconName"] }, { kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i6.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role", "iconFilled"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "component", type: TestCasesStatusComponent, selector: "tgo-test-cases-status", inputs: ["status", "translations"] }, { kind: "component", type: TestCasesContentComponent, selector: "tgo-test-cases-content", inputs: ["testCase", "testCaseResult", "areTestsRun", "translations", "applicationTheme", "isSQL"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
157
|
-
};
|
|
158
|
-
TestCasesComponent = __decorate([
|
|
159
|
-
UntilDestroy(),
|
|
160
|
-
__metadata("design:paramtypes", [LibCodingTestService,
|
|
161
|
-
ChangeDetectorRef,
|
|
162
|
-
TestCasesService,
|
|
163
|
-
StorageCodingService])
|
|
164
|
-
], TestCasesComponent);
|
|
165
|
-
export { TestCasesComponent };
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestCasesComponent, decorators: [{
|
|
167
|
-
type: Component,
|
|
168
|
-
args: [{ standalone: true, selector: 'tgo-test-cases', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
169
|
-
CommonModule,
|
|
170
|
-
MatTabsModule,
|
|
171
|
-
IconComponentModule,
|
|
172
|
-
ButtonComponentModule,
|
|
173
|
-
TestCasesStatusComponent,
|
|
174
|
-
TestCasesContentComponent,
|
|
175
|
-
], template: "<div class=\"test-case-container\">\n <div\n id=\"test-cases\"\n class=\"test-case-tabs-wrapper\"\n [ngClass]=\"{\n 'test-case-tabs-wrapper-tests-run': areTestsRun,\n 'test-case-tabs-wrapper-mobile': isMobile,\n 'test-case-tabs-wrapper-hidden': isContentViewOpened\n }\"\n >\n @if (!isMobile) {\n <mat-tab-group\n #tabGroup\n class=\"test-cases-tabs\"\n [selectedIndex]=\"activeTestCaseIndex\"\n (selectedIndexChange)=\"setActiveTestCaseIndex($event)\"\n >\n @for (testCase of testCases; track testCase; let index = $index) {\n <mat-tab label=\"{{ testCase.name }}\">\n <ng-template mat-tab-label>\n <div class=\"tab-label-wrapper\">\n <ng-container\n [ngTemplateOutlet]=\"testCaseHeading\"\n [ngTemplateOutletContext]=\"{ testCase: testCase, index: index }\"\n ></ng-container>\n </div>\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n } @else {\n <div class=\"test-cases-tabs test-cases-tabs-mobile\">\n @for (testCase of testCases; track testCase; let index = $index) {\n <div class=\"tab-label-wrapper\" (click)=\"setActiveTestCaseIndex(index)\">\n <div class=\"test-case-name-status-wrapper\">\n <ng-container\n [ngTemplateOutlet]=\"testCaseHeading\"\n [ngTemplateOutletContext]=\"{ testCase: testCase, index: index }\"\n ></ng-container>\n </div>\n @if (isMobile) {\n <ui-icon [name]=\"'Arrow-chevron-right-filled'\" [size]=\"'24'\" class=\"themed-button\"></ui-icon>\n }\n </div>\n }\n </div>\n } @if (canAddCustomTestCases) {\n <ui-button\n class=\"add-test-case themed-button\"\n [variant]=\"'tertiary'\"\n [iconName]=\"'Plus'\"\n [iconPosition]=\"'left'\"\n [disabled]=\"!isAddTestCasesDisabled\"\n [fullWidth]=\"true\"\n [tooltip]=\"!isAddTestCasesDisabled ? translations['TOOLTIPS']['CANT_ADD_TEST_CASE'] : null\"\n [label]=\"\n translations['TEST_RESULTS']['TEST_CASES']['ADD_TEST_CASE'] +\n ' (' +\n (testCases?.length - exampleTestCases?.length) +\n '/' +\n maxTestCasesAllowed +\n ')'\n \"\n (buttonClickEvent)=\"addTestCase()\"\n >\n </ui-button>\n }\n </div>\n\n @if (!isMobile) {\n <div class=\"test-case-content-wrapper\">\n <ng-container [ngTemplateOutlet]=\"testCasesContentTpl\"></ng-container>\n </div>\n } @if (isMobile && isContentViewOpened) {\n <div class=\"test-case-content-wrapper-mobile\">\n <div class=\"test-case-mobile-name-wrapper\">\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n [tooltip]=\"''\"\n [size]=\"'small'\"\n (buttonClickEvent)=\"closeTestCaseMobileView()\"\n class=\"themed-button\"\n >\n </ui-button>\n <ng-container\n [ngTemplateOutlet]=\"testCaseHeading\"\n [ngTemplateOutletContext]=\"{\n testCase: testCases[activeTestCaseIndex],\n index: activeTestCaseIndex,\n hideStatus: true\n }\"\n ></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"testCasesContentTpl\"></ng-container>\n </div>\n }\n</div>\n\n<ng-template #testCaseHeading let-testCase=\"testCase\" let-index=\"index\" let-hideStatus=\"hideStatus\">\n <div class=\"tab-label\">\n @if (testCase.preloaded) {\n <ui-icon [name]=\"'Lock'\" class=\"preloaded-icon\"></ui-icon>\n }\n <span class=\"tab-label-value\">{{ testCase.name }}</span>\n </div>\n\n @if (!hideStatus && testCasesResult?.length) {\n <tgo-test-cases-status\n [status]=\"testCasesResult?.[index]?.status\"\n [translations]=\"translations['TEST_RESULTS']['TEST_CASES']['STATUSES']\"\n ></tgo-test-cases-status>\n } @if (!testCase.preloaded) {\n <ui-button\n [variant]=\"'icon-button'\"\n [iconName]=\"'Delete'\"\n [tooltip]=\"translations['TOOLTIPS']['DELETE_TEST_CASE'] || ''\"\n (buttonClickEvent)=\"removeTestCase(index)\"\n class=\"delete-test-case themed-button\"\n >\n </ui-button>\n }\n</ng-template>\n\n<ng-template #testCasesContentTpl>\n <tgo-test-cases-content\n [testCase]=\"testCases[activeTestCaseIndex]\"\n [testCaseResult]=\"testCasesResult?.[activeTestCaseIndex]\"\n [areTestsRun]=\"areTestsRun\"\n [translations]=\"translations['TEST_RESULTS']['TEST_CASES']\"\n [isSQL]=\"isSQL\"\n [applicationTheme]=\"applicationTheme\"\n (valueChange)=\"modifyTestCase(activeTestCaseIndex, $event)\"\n ></tgo-test-cases-content>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.test-case-container{display:flex;height:100%}.test-case-container .test-case-tabs-wrapper{display:flex;flex-direction:column;position:relative;overflow-y:auto;border-right:1px solid var(--border-bg-color);height:100%;min-width:230px}.test-case-container .test-case-tabs-wrapper-mobile{flex:1}.test-case-container .test-case-tabs-wrapper-mobile.test-case-tabs-wrapper-hidden{display:none}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab .mdc-tab-indicator{width:3px}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab .mdc-tab-indicator .mdc-tab-indicator__content{border-left:3px solid transparent;height:100%}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab:hover .delete-test-case{display:block}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab.mdc-tab--active .tab-label-value{font-weight:600}.test-case-container .test-case-tabs-wrapper:not(.test-case-container .test-case-tabs-wrapper-mobile) ::ng-deep .mat-mdc-tab.mdc-tab--active .mdc-tab-indicator__content{border-left-color:var(--company-color, #D410AA)}.test-case-container .test-case-tabs-wrapper .test-cases-tabs{flex-direction:row;flex-grow:1}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__content{justify-content:flex-start;padding:14px 16px;width:100%}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__content .mdc-tab__text-label{flex-grow:1}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__content .tab-label-wrapper{display:flex;align-items:center;justify-content:space-between;width:100%}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mat-mdc-tab-labels{flex-direction:column}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mat-mdc-tab-header{width:100%;border-bottom:none}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab{height:48px;padding:0;border-bottom:1px solid var(--border-bg-color);color:var(--secondary-text-color)}.test-case-container .test-case-tabs-wrapper .test-cases-tabs ::ng-deep .mdc-tab__text-label{width:100%}.test-case-container .test-case-tabs-wrapper .test-cases-tabs.mat-mdc-tab-group.mat-primary ::ng-deep .mat-ink-bar{background-color:transparent}.test-case-container .test-case-tabs-wrapper .test-cases-tabs-mobile .test-case-name-status-wrapper{display:flex;justify-content:space-between;flex:1}.test-case-container .test-case-tabs-wrapper .test-cases-tabs-mobile .tab-label-wrapper{display:flex;padding:14px 16px;cursor:pointer;border-bottom:1px solid var(--border-bg-color)}.test-case-container .test-case-tabs-wrapper .add-test-case{position:sticky;bottom:0;left:0;right:0;border-top:1px solid var(--border-bg-color);border-radius:0;z-index:1}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep mat-icon{color:var(--company-color, #D410AA)}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button{justify-content:flex-start;background-color:var(--bg-mat-card)}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button:disabled{opacity:1}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button:disabled .mdc-button__label{opacity:.75}.test-case-container .test-case-tabs-wrapper .add-test-case ::ng-deep .mdc-button span{color:var(--company-theme-specific-color, #D410AA)!important}.test-case-container .delete-test-case{display:none;position:absolute;right:16px;cursor:pointer}.test-case-container .delete-test-case ::ng-deep .icon-button:not(:hover){background-color:var(--bg-mat-card)!important}.test-case-container .delete-test-case ::ng-deep svg{color:var(--icon-bg-color)}.test-case-container ::ng-deep .mat-tab-label.cdk-program-focused .delete-test-case svg rect{fill:#484c4d00}.test-case-container .test-case-content-wrapper{flex-grow:1;overflow-y:auto}.test-case-container .preloaded-icon{margin-right:4px}.test-case-container .preloaded-icon ::ng-deep mat-icon svg{color:var(--icon-secondary-bg-color)}.test-case-container .tab-label{display:flex;align-items:center;color:var(--main-text-color)}.test-case-container .chevron-icon{margin-left:8px}.test-case-container .test-case-content-wrapper-mobile{overflow:auto}.test-case-container .test-case-mobile-name-wrapper{display:flex;position:relative;padding:14px 16px 0}.test-case-container .test-case-mobile-name-wrapper .chevron-icon{margin:0 4px 0 0}.test-case-container .test-case-mobile-name-wrapper .delete-test-case{display:block}\n"] }]
|
|
176
|
-
}], ctorParameters: () => [{ type: i1.LibCodingTestService }, { type: i0.ChangeDetectorRef }, { type: i2.TestCasesService }, { type: i3.StorageCodingService }], propDecorators: { exampleTestCases: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], apiTestCasesResult: [{
|
|
179
|
-
type: Input
|
|
180
|
-
}], testCasesStatus: [{
|
|
181
|
-
type: Input
|
|
182
|
-
}], testCases: [{
|
|
183
|
-
type: Input
|
|
184
|
-
}], translations: [{
|
|
185
|
-
type: Input
|
|
186
|
-
}], areTestsRun: [{
|
|
187
|
-
type: Input
|
|
188
|
-
}], applicationTheme: [{
|
|
189
|
-
type: Input
|
|
190
|
-
}], canAddCustomTestCases: [{
|
|
191
|
-
type: Input
|
|
192
|
-
}], isSQL: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], tabGroup: [{
|
|
195
|
-
type: ViewChild,
|
|
196
|
-
args: ['tabGroup']
|
|
197
|
-
}] } });
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2xpYi9jb21wb25lbnRzL3Rlc3RzL3Rlc3QtY2FzZXMvdGVzdC1jYXNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2xpYi9jb21wb25lbnRzL3Rlc3RzL3Rlc3QtY2FzZXMvdGVzdC1jYXNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBb0IsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRyxPQUFPLEVBTUwsY0FBYyxHQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUYsT0FBTyxFQUFFLHlCQUF5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NmZDN0MvQixvakpBdUlBLGsxTkRsR0ksWUFBWSxtU0FDWixhQUFhLHF1QkFDYixtQkFBbUIscU5BQ25CLHFCQUFxQix3aUJBQ3JCLHdCQUF3QixzR0FDeEIseUJBQXlCOztBQUdoQixrQkFBa0I7SUFoQjlCLFlBQVksRUFBRTtxQ0F3Q21CLG9CQUFvQjtRQUN2QixpQkFBaUI7UUFDbEIsZ0JBQWdCO1FBQ1osb0JBQW9CO0dBM0J6QyxrQkFBa0IsQ0ErSjlCOzs0RkEvSlksa0JBQWtCO2tCQWY5QixTQUFTO2lDQUNJLElBQUksWUFDTixnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3FCQUMxQjsyTEFHUSxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRWlCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0VGFiR3JvdXAsIE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWQgfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lLCBJY29uQ29tcG9uZW50TW9kdWxlLCBCdXR0b25Db21wb25lbnRNb2R1bGUgfSBmcm9tICdAdGVzdGdvcmlsbGEvdGdvLXVpJztcbmltcG9ydCB7XG4gIEFsbG93ZWRNb2RpZmljYXRpb25GaWVsZHMsXG4gIEN1c3RvbVRlc3RDYXNlLFxuICBFeGFtcGxlVGVzdENhc2UsXG4gIFRlc3RDYXNlRGVsZXRpb25BY3Rpb24sXG4gIFRlc3RDYXNlUmVzdWx0LFxuICBUZXN0Q2FzZVN0YXR1cyxcbn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Rlc3QtY2FzZXMnO1xuaW1wb3J0IHsgTGliQ29kaW5nVGVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9saWItY29kaW5nLXRlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlQ29kaW5nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBUZXN0Q2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdGVzdC1jYXNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRlc3RDYXNlc1N0YXR1c0NvbXBvbmVudCB9IGZyb20gJy4uL3Rlc3QtY2FzZXMtc3RhdHVzL3Rlc3QtY2FzZXMtc3RhdHVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZXNDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi4vdGVzdC1jYXNlcy1jb250ZW50L3Rlc3QtY2FzZXMtY29udGVudC5jb21wb25lbnQnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3Rnby10ZXN0LWNhc2VzJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZXN0LWNhc2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3Rlc3QtY2FzZXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50TW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBUZXN0Q2FzZXNTdGF0dXNDb21wb25lbnQsXG4gICAgVGVzdENhc2VzQ29udGVudENvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGVzdENhc2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBleGFtcGxlVGVzdENhc2VzOiBFeGFtcGxlVGVzdENhc2VbXTtcbiAgQElucHV0KCkgYXBpVGVzdENhc2VzUmVzdWx0OiBUZXN0Q2FzZVJlc3VsdFtdO1xuICBASW5wdXQoKSB0ZXN0Q2FzZXNTdGF0dXM6IGFueTtcbiAgQElucHV0KCkgdGVzdENhc2VzOiAoQ3VzdG9tVGVzdENhc2UgfCBFeGFtcGxlVGVzdENhc2UpW107XG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIEBJbnB1dCgpIGFyZVRlc3RzUnVuOiBib29sZWFuO1xuICBASW5wdXQoKSBhcHBsaWNhdGlvblRoZW1lOiBBcHBsaWNhdGlvblRoZW1lO1xuICBASW5wdXQoKSBjYW5BZGRDdXN0b21UZXN0Q2FzZXM6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzU1FMOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJykgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIHRlc3RDYXNlc1Jlc3VsdDogVGVzdENhc2VSZXN1bHRbXTtcblxuICBhY3RpdmVUZXN0Q2FzZUluZGV4OiBudW1iZXIgfCBudWxsO1xuICBtYXhUZXN0Q2FzZXNBbGxvd2VkID0gNjsgLy9Db3VsZCBiZSB0YWtlbiBmcm9tIGJhY2tlbmRcblxuICBpc0FkZFRlc3RDYXNlc0Rpc2FibGVkOiBib29sZWFuO1xuICBpc01vYmlsZSA9IC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuICBpc0NvbnRlbnRWaWV3T3BlbmVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbGliQ29kaW5nVGVzdFNlcnZpY2U6IExpYkNvZGluZ1Rlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdGVzdENhc2VzU2VydmljZTogVGVzdENhc2VzU2VydmljZSxcbiAgICBwcml2YXRlIFN0b3JhZ2VDb2RpbmdTZXJ2aWNlOiBTdG9yYWdlQ29kaW5nU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50ZXN0Q2FzZXNTZXJ2aWNlLmFjdGl2ZVRlc3RDYXNlSW5kZXgkLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICB0aGlzLmFjdGl2ZVRlc3RDYXNlSW5kZXggPSBpbmRleDtcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0RGVmYXVsdFRlc3RDYXNlcygpO1xuICAgIGlmICh0aGlzLmNhbkFkZEN1c3RvbVRlc3RDYXNlcykge1xuICAgICAgdGhpcy51cGRhdGVBZGRDdXN0b21UZXN0Q2FzZURpc2FibGVkKCk7XG4gICAgICB0aGlzLmxpc3RlblRlc3RDYXNlRGVsZXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7IGFwaVRlc3RDYXNlc1Jlc3VsdCB9OiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCFhcGlUZXN0Q2FzZXNSZXN1bHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXBpVGVzdENhc2VzOiBUZXN0Q2FzZVJlc3VsdFtdID0gYXBpVGVzdENhc2VzUmVzdWx0LmN1cnJlbnRWYWx1ZTtcblxuICAgIGlmIChhcGlUZXN0Q2FzZXMpIHtcbiAgICAgIHRoaXMudGVzdENhc2VzUmVzdWx0ID0gYXBpVGVzdENhc2VzLmxlbmd0aCA/IHRoaXMuaGFuZGxlRW1wdHlUZXN0Q2FzZXMoYXBpVGVzdENhc2VzKSA6IFtdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdFRlc3RDYXNlcygpIHtcbiAgICBpZiAoIXRoaXMudGVzdENhc2VzLmxlbmd0aCkge1xuICAgICAgdGhpcy50ZXN0Q2FzZXMgPSBbLi4uKHRoaXMuZXhhbXBsZVRlc3RDYXNlcyB8fCBbXSldO1xuICAgICAgdGhpcy5vblRlc3RDYXNlc0NoYW5nZWQoKTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlVGVzdENhc2VJbmRleCh0aGlzLmlzTW9iaWxlID8gbnVsbCA6IDApO1xuICAgIH1cbiAgfVxuXG4gIGFkZFRlc3RDYXNlKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlc3RDYXNlTG9jYWxJZCA9IHRoaXMudGVzdENhc2VzU2VydmljZS5jcmVhdGVUZXN0Q2FzZUxvY2FsSWQoKTtcblxuICAgIHRoaXMudGVzdENhc2VzLnB1c2goe1xuICAgICAgbG9jYWxJZDogdGVzdENhc2VMb2NhbElkLFxuICAgICAgbmFtZTogYFRlc3QgJHt0ZXN0Q2FzZUxvY2FsSWR9YCxcbiAgICAgIGlucHV0OiAnJyxcbiAgICAgIGV4cGVjdGVkT3V0cHV0OiAnJyxcbiAgICAgIHByZWxvYWRlZDogZmFsc2UsXG4gICAgfSk7XG4gICAgdGhpcy5vblRlc3RDYXNlc0NoYW5nZWQoKTtcbiAgICB0aGlzLnRlc3RDYXNlc1NlcnZpY2Uuc2V0QWN0aXZlVGVzdENhc2UodGhpcy50ZXN0Q2FzZXMubGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5pc0NvbnRlbnRWaWV3T3BlbmVkID0gdGhpcy5pc01vYmlsZTtcbiAgICB0aGlzLnVwZGF0ZUFkZEN1c3RvbVRlc3RDYXNlRGlzYWJsZWQoKTtcblxuICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xuICAgICAgdGhpcy5zZXRGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZVRlc3RDYXNlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmxpYkNvZGluZ1Rlc3RTZXJ2aWNlLmhhbmRsZVRlc3RDYXNlRGVsZXRpb24oaW5kZXgpO1xuICB9XG5cbiAgbW9kaWZ5VGVzdENhc2UoaW5kZXg6IG51bWJlciwgbW9kaWZpZWRWYWx1ZTogQWxsb3dlZE1vZGlmaWNhdGlvbkZpZWxkcyk6IHZvaWQge1xuICAgIGlmICghdGhpcy50ZXN0Q2FzZXNbaW5kZXhdLnByZWxvYWRlZCkge1xuICAgICAgdGhpcy50ZXN0Q2FzZXNbaW5kZXhdLmlucHV0ID0gbW9kaWZpZWRWYWx1ZS5pbnB1dDtcbiAgICAgIHRoaXMudGVzdENhc2VzW2luZGV4XS5leHBlY3RlZE91dHB1dCA9IG1vZGlmaWVkVmFsdWUuZXhwZWN0ZWRPdXRwdXQ7XG4gICAgICB0aGlzLm9uVGVzdENhc2VzQ2hhbmdlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXMoKSB7XG4gICAgY29uc3QgdGFiSGVhZGVySWQgPSBgbWF0LXRhYi1sYWJlbC0ke3RoaXMudGFiR3JvdXBbJ19ncm91cElkJ119LSR7dGhpcy5hY3RpdmVUZXN0Q2FzZUluZGV4fWA7XG4gICAgY29uc3QgdGFiSGVhZGVyRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YWJIZWFkZXJJZCk7XG4gICAgaWYgKHRhYkhlYWRlckVsZW1lbnQpIHtcbiAgICAgIHRhYkhlYWRlckVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uVGVzdENhc2VzQ2hhbmdlZCgpIHtcbiAgICB0aGlzLmxpYkNvZGluZ1Rlc3RTZXJ2aWNlLnVwZGF0ZVRlc3RDYXNlcyhbLi4udGhpcy50ZXN0Q2FzZXNdKTtcbiAgICB0aGlzLlN0b3JhZ2VDb2RpbmdTZXJ2aWNlLnVwZGF0ZVRlc3RDYXNlcyhbLi4udGhpcy50ZXN0Q2FzZXNdKTtcbiAgfVxuXG4gIHNldEFjdGl2ZVRlc3RDYXNlSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudGVzdENhc2VzU2VydmljZS5zZXRBY3RpdmVUZXN0Q2FzZShpbmRleCk7XG4gICAgdGhpcy5pc0NvbnRlbnRWaWV3T3BlbmVkID0gaW5kZXggIT09IG51bGwgPyB0aGlzLmlzTW9iaWxlIDogZmFsc2U7XG4gIH1cblxuICBjbG9zZVRlc3RDYXNlTW9iaWxlVmlldygpOiB2b2lkIHtcbiAgICB0aGlzLmlzQ29udGVudFZpZXdPcGVuZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRlc3RDYXNlc1NlcnZpY2Uuc2V0QWN0aXZlVGVzdENhc2UobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblRlc3RDYXNlRGVsZXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5saWJDb2RpbmdUZXN0U2VydmljZS50ZXN0Q2FzZURlbGV0aW9uJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoeyBhY3Rpb24gfSkgPT4gYWN0aW9uID09PSBUZXN0Q2FzZURlbGV0aW9uQWN0aW9uLkNvbmZpcm0pLFxuICAgICAgICB1bnRpbERlc3Ryb3llZCh0aGlzKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoeyBpbmRleCB9KSA9PiB7XG4gICAgICAgIHRoaXMudGVzdENhc2VzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMudGVzdENhc2VzUmVzdWx0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIHRoaXMub25UZXN0Q2FzZXNDaGFuZ2VkKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlVGVzdENhc2VNb2JpbGVWaWV3KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50ZXN0Q2FzZXNTZXJ2aWNlLnNldEFjdGl2ZVRlc3RDYXNlKGluZGV4IC0gMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUFkZEN1c3RvbVRlc3RDYXNlRGlzYWJsZWQoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRW1wdHlUZXN0Q2FzZXMoYXBpVGVzdENhc2VzUmVzdWx0czogVGVzdENhc2VSZXN1bHRbXSk6IFRlc3RDYXNlUmVzdWx0W10ge1xuICAgIGNvbnN0IHRlc3RDYXNlc1Jlc3VsdCA9IFsuLi5hcGlUZXN0Q2FzZXNSZXN1bHRzXTtcblxuICAgIHRoaXMudGVzdENhc2VzLmZvckVhY2goKHsgaW5wdXQsIGV4cGVjdGVkT3V0cHV0IH0sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpc0VtcHR5ID0gdGhpcy5pc1NRTCA/ICFleHBlY3RlZE91dHB1dCA6ICFpbnB1dCB8fCAhZXhwZWN0ZWRPdXRwdXQ7XG4gICAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgICB0ZXN0Q2FzZXNSZXN1bHQuc3BsaWNlKGluZGV4LCAwLCB7XG4gICAgICAgICAgYWN0dWFsT3V0cHV0OiBudWxsLFxuICAgICAgICAgIGxvZ3M6IG51bGwsXG4gICAgICAgICAgc3RhdHVzOiBUZXN0Q2FzZVN0YXR1cy5FbXB0eSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGVzdENhc2VzUmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBZGRDdXN0b21UZXN0Q2FzZURpc2FibGVkKCk6IHZvaWQge1xuICAgIGNvbnN0IGV4YW1wbGVUZXN0Q2FzZXNDb3VudCA9IHRoaXMuZXhhbXBsZVRlc3RDYXNlcz8ubGVuZ3RoIHx8IDA7XG4gICAgdGhpcy5pc0FkZFRlc3RDYXNlc0Rpc2FibGVkID0gdGhpcy50ZXN0Q2FzZXMubGVuZ3RoIC0gZXhhbXBsZVRlc3RDYXNlc0NvdW50IDwgdGhpcy5tYXhUZXN0Q2FzZXNBbGxvd2VkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGVzdC1jYXNlLWNvbnRhaW5lclwiPlxuICA8ZGl2XG4gICAgaWQ9XCJ0ZXN0LWNhc2VzXCJcbiAgICBjbGFzcz1cInRlc3QtY2FzZS10YWJzLXdyYXBwZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICd0ZXN0LWNhc2UtdGFicy13cmFwcGVyLXRlc3RzLXJ1bic6IGFyZVRlc3RzUnVuLFxuICAgICAgJ3Rlc3QtY2FzZS10YWJzLXdyYXBwZXItbW9iaWxlJzogaXNNb2JpbGUsXG4gICAgICAndGVzdC1jYXNlLXRhYnMtd3JhcHBlci1oaWRkZW4nOiBpc0NvbnRlbnRWaWV3T3BlbmVkXG4gICAgfVwiXG4gID5cbiAgICBAaWYgKCFpc01vYmlsZSkge1xuICAgIDxtYXQtdGFiLWdyb3VwXG4gICAgICAjdGFiR3JvdXBcbiAgICAgIGNsYXNzPVwidGVzdC1jYXNlcy10YWJzXCJcbiAgICAgIFtzZWxlY3RlZEluZGV4XT1cImFjdGl2ZVRlc3RDYXNlSW5kZXhcIlxuICAgICAgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwic2V0QWN0aXZlVGVzdENhc2VJbmRleCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICBAZm9yICh0ZXN0Q2FzZSBvZiB0ZXN0Q2FzZXM7IHRyYWNrIHRlc3RDYXNlOyBsZXQgaW5kZXggPSAkaW5kZXgpIHtcbiAgICAgIDxtYXQtdGFiIGxhYmVsPVwie3sgdGVzdENhc2UubmFtZSB9fVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFiLWxhYmVsLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVzdENhc2VIZWFkaW5nXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgdGVzdENhc2U6IHRlc3RDYXNlLCBpbmRleDogaW5kZXggfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC10YWI+XG4gICAgICB9XG4gICAgPC9tYXQtdGFiLWdyb3VwPlxuICAgIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJ0ZXN0LWNhc2VzLXRhYnMgdGVzdC1jYXNlcy10YWJzLW1vYmlsZVwiPlxuICAgICAgQGZvciAodGVzdENhc2Ugb2YgdGVzdENhc2VzOyB0cmFjayB0ZXN0Q2FzZTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLWxhYmVsLXdyYXBwZXJcIiAoY2xpY2spPVwic2V0QWN0aXZlVGVzdENhc2VJbmRleChpbmRleClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRlc3QtY2FzZS1uYW1lLXN0YXR1cy13cmFwcGVyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVzdENhc2VIZWFkaW5nXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHRlc3RDYXNlOiB0ZXN0Q2FzZSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoaXNNb2JpbGUpIHtcbiAgICAgICAgPHVpLWljb24gW25hbWVdPVwiJ0Fycm93LWNoZXZyb24tcmlnaHQtZmlsbGVkJ1wiIFtzaXplXT1cIicyNCdcIiBjbGFzcz1cInRoZW1lZC1idXR0b25cIj48L3VpLWljb24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIH0gQGlmIChjYW5BZGRDdXN0b21UZXN0Q2FzZXMpIHtcbiAgICA8dWktYnV0dG9uXG4gICAgICBjbGFzcz1cImFkZC10ZXN0LWNhc2UgdGhlbWVkLWJ1dHRvblwiXG4gICAgICBbdmFyaWFudF09XCIndGVydGlhcnknXCJcbiAgICAgIFtpY29uTmFtZV09XCInUGx1cydcIlxuICAgICAgW2ljb25Qb3NpdGlvbl09XCInbGVmdCdcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFpc0FkZFRlc3RDYXNlc0Rpc2FibGVkXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICBbdG9vbHRpcF09XCIhaXNBZGRUZXN0Q2FzZXNEaXNhYmxlZCA/IHRyYW5zbGF0aW9uc1snVE9PTFRJUFMnXVsnQ0FOVF9BRERfVEVTVF9DQVNFJ10gOiBudWxsXCJcbiAgICAgIFtsYWJlbF09XCJcbiAgICAgICAgdHJhbnNsYXRpb25zWydURVNUX1JFU1VMVFMnXVsnVEVTVF9DQVNFUyddWydBRERfVEVTVF9DQVNFJ10gK1xuICAgICAgICAnICgnICtcbiAgICAgICAgKHRlc3RDYXNlcz8ubGVuZ3RoIC0gZXhhbXBsZVRlc3RDYXNlcz8ubGVuZ3RoKSArXG4gICAgICAgICcvJyArXG4gICAgICAgIG1heFRlc3RDYXNlc0FsbG93ZWQgK1xuICAgICAgICAnKSdcbiAgICAgIFwiXG4gICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJhZGRUZXN0Q2FzZSgpXCJcbiAgICA+XG4gICAgPC91aS1idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKCFpc01vYmlsZSkge1xuICA8ZGl2IGNsYXNzPVwidGVzdC1jYXNlLWNvbnRlbnQtd3JhcHBlclwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVzdENhc2VzQ29udGVudFRwbFwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgfSBAaWYgKGlzTW9iaWxlICYmIGlzQ29udGVudFZpZXdPcGVuZWQpIHtcbiAgPGRpdiBjbGFzcz1cInRlc3QtY2FzZS1jb250ZW50LXdyYXBwZXItbW9iaWxlXCI+XG4gICAgPGRpdiBjbGFzcz1cInRlc3QtY2FzZS1tb2JpbGUtbmFtZS13cmFwcGVyXCI+XG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgIFt2YXJpYW50XT1cIidpY29uLWJ1dHRvbidcIlxuICAgICAgICBbaWNvbk5hbWVdPVwiJ0Fycm93LWNoZXZyb24tbGVmdC1maWxsZWQnXCJcbiAgICAgICAgW3Rvb2x0aXBdPVwiJydcIlxuICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcbiAgICAgICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwiY2xvc2VUZXN0Q2FzZU1vYmlsZVZpZXcoKVwiXG4gICAgICAgIGNsYXNzPVwidGhlbWVkLWJ1dHRvblwiXG4gICAgICA+XG4gICAgICA8L3VpLWJ1dHRvbj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGVzdENhc2VIZWFkaW5nXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICB0ZXN0Q2FzZTogdGVzdENhc2VzW2FjdGl2ZVRlc3RDYXNlSW5kZXhdLFxuICAgICAgICAgIGluZGV4OiBhY3RpdmVUZXN0Q2FzZUluZGV4LFxuICAgICAgICAgIGhpZGVTdGF0dXM6IHRydWVcbiAgICAgICAgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXN0Q2FzZXNDb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZXN0Q2FzZUhlYWRpbmcgbGV0LXRlc3RDYXNlPVwidGVzdENhc2VcIiBsZXQtaW5kZXg9XCJpbmRleFwiIGxldC1oaWRlU3RhdHVzPVwiaGlkZVN0YXR1c1wiPlxuICA8ZGl2IGNsYXNzPVwidGFiLWxhYmVsXCI+XG4gICAgQGlmICh0ZXN0Q2FzZS5wcmVsb2FkZWQpIHtcbiAgICA8dWktaWNvbiBbbmFtZV09XCInTG9jaydcIiBjbGFzcz1cInByZWxvYWRlZC1pY29uXCI+PC91aS1pY29uPlxuICAgIH1cbiAgICA8c3BhbiBjbGFzcz1cInRhYi1sYWJlbC12YWx1ZVwiPnt7IHRlc3RDYXNlLm5hbWUgfX08L3NwYW4+XG4gIDwvZGl2PlxuXG4gIEBpZiAoIWhpZGVTdGF0dXMgJiYgdGVzdENhc2VzUmVzdWx0Py5sZW5ndGgpIHtcbiAgPHRnby10ZXN0LWNhc2VzLXN0YXR1c1xuICAgIFtzdGF0dXNdPVwidGVzdENhc2VzUmVzdWx0Py5baW5kZXhdPy5zdGF0dXNcIlxuICAgIFt0cmFuc2xhdGlvbnNdPVwidHJhbnNsYXRpb25zWydURVNUX1JFU1VMVFMnXVsnVEVTVF9DQVNFUyddWydTVEFUVVNFUyddXCJcbiAgPjwvdGdvLXRlc3QtY2FzZXMtc3RhdHVzPlxuICB9IEBpZiAoIXRlc3RDYXNlLnByZWxvYWRlZCkge1xuICA8dWktYnV0dG9uXG4gICAgW3ZhcmlhbnRdPVwiJ2ljb24tYnV0dG9uJ1wiXG4gICAgW2ljb25OYW1lXT1cIidEZWxldGUnXCJcbiAgICBbdG9vbHRpcF09XCJ0cmFuc2xhdGlvbnNbJ1RPT0xUSVBTJ11bJ0RFTEVURV9URVNUX0NBU0UnXSB8fCAnJ1wiXG4gICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwicmVtb3ZlVGVzdENhc2UoaW5kZXgpXCJcbiAgICBjbGFzcz1cImRlbGV0ZS10ZXN0LWNhc2UgdGhlbWVkLWJ1dHRvblwiXG4gID5cbiAgPC91aS1idXR0b24+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGVzdENhc2VzQ29udGVudFRwbD5cbiAgPHRnby10ZXN0LWNhc2VzLWNvbnRlbnRcbiAgICBbdGVzdENhc2VdPVwidGVzdENhc2VzW2FjdGl2ZVRlc3RDYXNlSW5kZXhdXCJcbiAgICBbdGVzdENhc2VSZXN1bHRdPVwidGVzdENhc2VzUmVzdWx0Py5bYWN0aXZlVGVzdENhc2VJbmRleF1cIlxuICAgIFthcmVUZXN0c1J1bl09XCJhcmVUZXN0c1J1blwiXG4gICAgW3RyYW5zbGF0aW9uc109XCJ0cmFuc2xhdGlvbnNbJ1RFU1RfUkVTVUxUUyddWydURVNUX0NBU0VTJ11cIlxuICAgIFtpc1NRTF09XCJpc1NRTFwiXG4gICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgKHZhbHVlQ2hhbmdlKT1cIm1vZGlmeVRlc3RDYXNlKGFjdGl2ZVRlc3RDYXNlSW5kZXgsICRldmVudClcIlxuICA+PC90Z28tdGVzdC1jYXNlcy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
3
|
-
import { CommonModule } from '@angular/common';
|
|
4
|
-
import { FormBuilder, FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
6
|
-
import { FieldComponentModule } from '@testgorilla/tgo-ui';
|
|
7
|
-
import { TestCaseStatus, } from '../../../models/test-cases';
|
|
8
|
-
import { MemoizeFuncPipe } from '../../../pipes/memoize-func.pipe';
|
|
9
|
-
import { TruncatedTextComponent } from '../../common/truncated-text/truncated-text.component';
|
|
10
|
-
import { TestCasesStatusComponent } from '../test-cases-status/test-cases-status.component';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/forms";
|
|
13
|
-
import * as i2 from "@testgorilla/tgo-ui";
|
|
14
|
-
let TestCasesContentComponent = class TestCasesContentComponent {
|
|
15
|
-
fb = inject(FormBuilder);
|
|
16
|
-
testCase;
|
|
17
|
-
testCaseResult;
|
|
18
|
-
areTestsRun;
|
|
19
|
-
translations;
|
|
20
|
-
applicationTheme;
|
|
21
|
-
isSQL;
|
|
22
|
-
valueChange = new EventEmitter();
|
|
23
|
-
isCustomTestCase;
|
|
24
|
-
// todo: add validators when backend implements validation on their side
|
|
25
|
-
form = this.fb.group({
|
|
26
|
-
input: new FormControl(''),
|
|
27
|
-
expectedOutput: new FormControl(''),
|
|
28
|
-
});
|
|
29
|
-
ngOnInit() {
|
|
30
|
-
if (this.testCase?.input && this.testCase?.expectedOutput) {
|
|
31
|
-
this.form.patchValue({
|
|
32
|
-
input: this.testCase.input,
|
|
33
|
-
expectedOutput: this.testCase.expectedOutput,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
if (this.testCase?.preloaded) {
|
|
37
|
-
this.form.disable();
|
|
38
|
-
}
|
|
39
|
-
this.listenFormChanges();
|
|
40
|
-
}
|
|
41
|
-
ngOnChanges(changes) {
|
|
42
|
-
if (changes.testCase?.currentValue) {
|
|
43
|
-
this.form.patchValue({
|
|
44
|
-
input: this.testCase.input,
|
|
45
|
-
expectedOutput: this.testCase.expectedOutput,
|
|
46
|
-
});
|
|
47
|
-
if (this.testCase.preloaded) {
|
|
48
|
-
this.form.disable();
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.form.enable();
|
|
52
|
-
}
|
|
53
|
-
this.isCustomTestCase = !this.testCase.preloaded;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
isEmptyTestCase(status) {
|
|
57
|
-
return status === TestCaseStatus.Empty;
|
|
58
|
-
}
|
|
59
|
-
listenFormChanges() {
|
|
60
|
-
this.form.valueChanges.pipe(untilDestroyed(this)).subscribe((value) => {
|
|
61
|
-
this.valueChange.emit(value);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestCasesContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
65
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TestCasesContentComponent, isStandalone: true, selector: "tgo-test-cases-content", inputs: { testCase: "testCase", testCaseResult: "testCaseResult", areTestsRun: "areTestsRun", translations: "translations", applicationTheme: "applicationTheme", isSQL: "isSQL" }, outputs: { valueChange: "valueChange" }, usesOnChanges: true, ngImport: i0, template: "@if (testCase) {\n<div class=\"test-cases-content\" [class.test-cases-content-tests-run]=\"areTestsRun\">\n @if (areTestsRun && isCustomTestCase && (testCaseResult?.status | memoizeFunc: isEmptyTestCase)) {\n <div class=\"custom-tests-hint-container\">\n <p class=\"custom-tests-info\">{{ translations['BOTH_FIELDS_MUST_BE_FILLED'] }}</p>\n </div>\n } @if (!isCustomTestCase && !areTestsRun) {\n <p class=\"custom-tests-info custom-tests-info-indented\">\n {{ translations['EXAMPLE_TEST_CASE_INFO'] }}\n </p>\n } @if (isCustomTestCase && (!testCaseResult || (testCaseResult?.status | memoizeFunc: isEmptyTestCase))) {\n <p class=\"custom-tests-info custom-tests-info-indented\">\n {{ translations['FILL_ALL_FIELDS'] }}\n </p>\n } @if (testCaseResult && !(testCaseResult?.status | memoizeFunc: isEmptyTestCase)) {\n <div class=\"custom-tests-logs\">\n <div class=\"custom-tests-log-row\">\n <h4 class=\"custom-tests-log-header\">{{ translations['LOG'] }}</h4>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text [text]=\"testCaseResult.logs\" class=\"custom-tests-info\"></tgo-truncated-text>\n </div>\n </div>\n @if (isSQL) {\n <div class=\"custom-tests-log-row custom-tests-log-row-cols\">\n <div class=\"custom-tests-log-col custom-tests-log-col-expected-query\">\n <div class=\"custom-tests-log-heading\">\n <h4 class=\"custom-tests-log-header\">{{ translations['EXPECTED_QUERY'] }}</h4>\n </div>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text\n [text]=\"testCase.expectedOutput\"\n [isWordWrap]=\"true\"\n class=\"custom-tests-info\"\n ></tgo-truncated-text>\n </div>\n </div>\n <div class=\"custom-tests-log-col\">\n <div class=\"custom-tests-log-heading\">\n <h4 class=\"custom-tests-log-header\">{{ translations['QUERY_RESULT'] }}</h4>\n <tgo-test-cases-status\n [status]=\"testCaseResult.status\"\n [translations]=\"translations['STATUSES']\"\n ></tgo-test-cases-status>\n </div>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text\n [text]=\"testCaseResult.actualOutput\"\n [isWordWrap]=\"true\"\n class=\"custom-tests-info\"\n ></tgo-truncated-text>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"custom-tests-log-row\">\n <div class=\"custom-tests-log-heading\">\n <h4 class=\"custom-tests-log-header\">{{ translations['OUTPUT'] }}</h4>\n <tgo-test-cases-status\n [status]=\"testCaseResult.status\"\n [translations]=\"translations['STATUSES']\"\n ></tgo-test-cases-status>\n </div>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text [text]=\"testCaseResult.actualOutput\" class=\"custom-tests-info\"></tgo-truncated-text>\n </div>\n </div>\n }\n </div>\n } @if (!isSQL) {\n <form [formGroup]=\"form\">\n <div class=\"custom-tests-inputs-container\">\n <ui-field\n class=\"custom-tests-input\"\n [label]=\"translations['INPUT']\"\n [type]=\"'multi-line'\"\n [disabled]=\"testCase.preloaded\"\n [maxRows]=\"3\"\n [applicationTheme]=\"applicationTheme\"\n formControlName=\"input\"\n ></ui-field>\n <ui-field\n class=\"custom-tests-input\"\n [label]=\"translations['EXPECTED_OUTPUT']\"\n [type]=\"'multi-line'\"\n [maxRows]=\"3\"\n [disabled]=\"testCase.preloaded\"\n [applicationTheme]=\"applicationTheme\"\n formControlName=\"expectedOutput\"\n ></ui-field>\n </div>\n </form>\n }\n</div>\n}\n", styles: [".test-cases-content{padding:16px;font-size:14px;font-weight:400}.test-cases-content-tests-run{padding-bottom:50px}@media screen and (min-width: 1920px){.test-cases-content{max-width:800px}}.custom-tests-log-header,.custom-tests-info{margin:0;font-size:14px;font-weight:400}.custom-tests-log-heading{display:flex;justify-content:space-between;align-items:center;margin:0}.custom-tests-log-content{padding:4px 12px;margin:4px 0;background-color:var(--status-bg-color)}.custom-tests-log-row,.custom-tests-hint-container,.custom-tests-info-indented{margin-bottom:16px}.custom-tests-log-row-cols{display:flex;gap:16px}@media screen and (max-width: 599px){.custom-tests-log-row-cols{flex-direction:column}}@media screen and (min-width: 600px){.custom-tests-log-col{flex:1 1 50%;max-width:50%}}.custom-tests-log-col-expected-query{order:2}@media screen and (min-width: 600px){.custom-tests-log-col-expected-query{order:unset}}.custom-tests-hint-container{padding:12px 16px;background-color:#f0d6bb;border-radius:4px;color:#000}.custom-tests-inputs-container{display:flex;justify-content:space-between;flex-wrap:wrap}@media screen and (min-width: 600px){.custom-tests-inputs-container{gap:16px}.custom-tests-inputs-container .custom-tests-input{min-width:135px}}.custom-tests-input{flex:1;font-size:14px}::ng-deep .custom-tests-input.mat-focused .mat-form-field-outline-thick,::ng-deep .custom-tests-input.mat-focused .mat-form-field-label{color:var(--company-color, --petrol-text-color)!important}::ng-deep .custom-tests-input.mat-focused .mat-input-element{caret-color:var(--company-color, --petrol-text-color)!important}::ng-deep .custom-tests-input.mat-focused .mat-form-field-wrapper{padding-bottom:0}::ng-deep .custom-tests-input:hover .mat-form-field-outline-thick{color:var(--company-color, --petrol-text-color)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FieldComponentModule }, { kind: "component", type: i2.FieldComponent, selector: "ui-field", inputs: ["fullWidth", "fullHeight", "label", "labelHtml", "labelIcon", "fieldName", "placeholder", "id", "value", "badgeVariant", "errors", "disabled", "required", "readOnly", "hintMessage", "type", "updateOnBlur", "allowOnlyDigits", "isAutocompleteOff", "allowNegative", "showBottomContent", "applicationTheme", "ariaLabel", "loading", "isValid", "maxCharacters", "trimOnBlur", "trimOnSubmit", "maxRows", "hasTextAreaCounter", "hideBuiltInErrors", "hideLabelInErrors", "max", "min", "textareaHeight", "borderless", "autosizableTextarea", "isAIVariant", "ariaLabelledby", "ariaDescribedby", "hasError"], outputs: ["validateEvent", "fieldBlur"] }, { kind: "pipe", type: MemoizeFuncPipe, name: "memoizeFunc" }, { kind: "component", type: TruncatedTextComponent, selector: "tgo-truncated-text", inputs: ["text", "maxChars", "isWordWrap"] }, { kind: "component", type: TestCasesStatusComponent, selector: "tgo-test-cases-status", inputs: ["status", "translations"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
66
|
-
};
|
|
67
|
-
TestCasesContentComponent = __decorate([
|
|
68
|
-
UntilDestroy()
|
|
69
|
-
], TestCasesContentComponent);
|
|
70
|
-
export { TestCasesContentComponent };
|
|
71
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestCasesContentComponent, decorators: [{
|
|
72
|
-
type: Component,
|
|
73
|
-
args: [{ standalone: true, selector: 'tgo-test-cases-content', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
74
|
-
CommonModule,
|
|
75
|
-
ReactiveFormsModule,
|
|
76
|
-
FieldComponentModule,
|
|
77
|
-
MemoizeFuncPipe,
|
|
78
|
-
TruncatedTextComponent,
|
|
79
|
-
TestCasesStatusComponent,
|
|
80
|
-
], template: "@if (testCase) {\n<div class=\"test-cases-content\" [class.test-cases-content-tests-run]=\"areTestsRun\">\n @if (areTestsRun && isCustomTestCase && (testCaseResult?.status | memoizeFunc: isEmptyTestCase)) {\n <div class=\"custom-tests-hint-container\">\n <p class=\"custom-tests-info\">{{ translations['BOTH_FIELDS_MUST_BE_FILLED'] }}</p>\n </div>\n } @if (!isCustomTestCase && !areTestsRun) {\n <p class=\"custom-tests-info custom-tests-info-indented\">\n {{ translations['EXAMPLE_TEST_CASE_INFO'] }}\n </p>\n } @if (isCustomTestCase && (!testCaseResult || (testCaseResult?.status | memoizeFunc: isEmptyTestCase))) {\n <p class=\"custom-tests-info custom-tests-info-indented\">\n {{ translations['FILL_ALL_FIELDS'] }}\n </p>\n } @if (testCaseResult && !(testCaseResult?.status | memoizeFunc: isEmptyTestCase)) {\n <div class=\"custom-tests-logs\">\n <div class=\"custom-tests-log-row\">\n <h4 class=\"custom-tests-log-header\">{{ translations['LOG'] }}</h4>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text [text]=\"testCaseResult.logs\" class=\"custom-tests-info\"></tgo-truncated-text>\n </div>\n </div>\n @if (isSQL) {\n <div class=\"custom-tests-log-row custom-tests-log-row-cols\">\n <div class=\"custom-tests-log-col custom-tests-log-col-expected-query\">\n <div class=\"custom-tests-log-heading\">\n <h4 class=\"custom-tests-log-header\">{{ translations['EXPECTED_QUERY'] }}</h4>\n </div>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text\n [text]=\"testCase.expectedOutput\"\n [isWordWrap]=\"true\"\n class=\"custom-tests-info\"\n ></tgo-truncated-text>\n </div>\n </div>\n <div class=\"custom-tests-log-col\">\n <div class=\"custom-tests-log-heading\">\n <h4 class=\"custom-tests-log-header\">{{ translations['QUERY_RESULT'] }}</h4>\n <tgo-test-cases-status\n [status]=\"testCaseResult.status\"\n [translations]=\"translations['STATUSES']\"\n ></tgo-test-cases-status>\n </div>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text\n [text]=\"testCaseResult.actualOutput\"\n [isWordWrap]=\"true\"\n class=\"custom-tests-info\"\n ></tgo-truncated-text>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"custom-tests-log-row\">\n <div class=\"custom-tests-log-heading\">\n <h4 class=\"custom-tests-log-header\">{{ translations['OUTPUT'] }}</h4>\n <tgo-test-cases-status\n [status]=\"testCaseResult.status\"\n [translations]=\"translations['STATUSES']\"\n ></tgo-test-cases-status>\n </div>\n <div class=\"custom-tests-log-content\">\n <tgo-truncated-text [text]=\"testCaseResult.actualOutput\" class=\"custom-tests-info\"></tgo-truncated-text>\n </div>\n </div>\n }\n </div>\n } @if (!isSQL) {\n <form [formGroup]=\"form\">\n <div class=\"custom-tests-inputs-container\">\n <ui-field\n class=\"custom-tests-input\"\n [label]=\"translations['INPUT']\"\n [type]=\"'multi-line'\"\n [disabled]=\"testCase.preloaded\"\n [maxRows]=\"3\"\n [applicationTheme]=\"applicationTheme\"\n formControlName=\"input\"\n ></ui-field>\n <ui-field\n class=\"custom-tests-input\"\n [label]=\"translations['EXPECTED_OUTPUT']\"\n [type]=\"'multi-line'\"\n [maxRows]=\"3\"\n [disabled]=\"testCase.preloaded\"\n [applicationTheme]=\"applicationTheme\"\n formControlName=\"expectedOutput\"\n ></ui-field>\n </div>\n </form>\n }\n</div>\n}\n", styles: [".test-cases-content{padding:16px;font-size:14px;font-weight:400}.test-cases-content-tests-run{padding-bottom:50px}@media screen and (min-width: 1920px){.test-cases-content{max-width:800px}}.custom-tests-log-header,.custom-tests-info{margin:0;font-size:14px;font-weight:400}.custom-tests-log-heading{display:flex;justify-content:space-between;align-items:center;margin:0}.custom-tests-log-content{padding:4px 12px;margin:4px 0;background-color:var(--status-bg-color)}.custom-tests-log-row,.custom-tests-hint-container,.custom-tests-info-indented{margin-bottom:16px}.custom-tests-log-row-cols{display:flex;gap:16px}@media screen and (max-width: 599px){.custom-tests-log-row-cols{flex-direction:column}}@media screen and (min-width: 600px){.custom-tests-log-col{flex:1 1 50%;max-width:50%}}.custom-tests-log-col-expected-query{order:2}@media screen and (min-width: 600px){.custom-tests-log-col-expected-query{order:unset}}.custom-tests-hint-container{padding:12px 16px;background-color:#f0d6bb;border-radius:4px;color:#000}.custom-tests-inputs-container{display:flex;justify-content:space-between;flex-wrap:wrap}@media screen and (min-width: 600px){.custom-tests-inputs-container{gap:16px}.custom-tests-inputs-container .custom-tests-input{min-width:135px}}.custom-tests-input{flex:1;font-size:14px}::ng-deep .custom-tests-input.mat-focused .mat-form-field-outline-thick,::ng-deep .custom-tests-input.mat-focused .mat-form-field-label{color:var(--company-color, --petrol-text-color)!important}::ng-deep .custom-tests-input.mat-focused .mat-input-element{caret-color:var(--company-color, --petrol-text-color)!important}::ng-deep .custom-tests-input.mat-focused .mat-form-field-wrapper{padding-bottom:0}::ng-deep .custom-tests-input:hover .mat-form-field-outline-thick{color:var(--company-color, --petrol-text-color)!important}\n"] }]
|
|
81
|
-
}], propDecorators: { testCase: [{
|
|
82
|
-
type: Input
|
|
83
|
-
}], testCaseResult: [{
|
|
84
|
-
type: Input
|
|
85
|
-
}], areTestsRun: [{
|
|
86
|
-
type: Input
|
|
87
|
-
}], translations: [{
|
|
88
|
-
type: Input
|
|
89
|
-
}], applicationTheme: [{
|
|
90
|
-
type: Input
|
|
91
|
-
}], isSQL: [{
|
|
92
|
-
type: Input
|
|
93
|
-
}], valueChange: [{
|
|
94
|
-
type: Output
|
|
95
|
-
}] } });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlcy1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3Rnby1jb2RpbmctdGVzdC9zcmMvbGliL2NvbXBvbmVudHMvdGVzdHMvdGVzdC1jYXNlcy1jb250ZW50L3Rlc3QtY2FzZXMtY29udGVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2xpYi9jb21wb25lbnRzL3Rlc3RzL3Rlc3QtY2FzZXMtY29udGVudC90ZXN0LWNhc2VzLWNvbnRlbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JFLE9BQU8sRUFBb0Isb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBS0wsY0FBYyxHQUNmLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7O0FBa0JyRixJQUFNLHlCQUF5QixHQUEvQixNQUFNLHlCQUF5QjtJQUNuQixFQUFFLEdBQUcsTUFBTSxD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QXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lLCBGaWVsZENvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0B0ZXN0Z29yaWxsYS90Z28tdWknO1xuaW1wb3J0IHtcbiAgQWxsb3dlZE1vZGlmaWNhdGlvbkZpZWxkcyxcbiAgQ3VzdG9tVGVzdENhc2UsXG4gIEV4YW1wbGVUZXN0Q2FzZSxcbiAgVGVzdENhc2VSZXN1bHQsXG4gIFRlc3RDYXNlU3RhdHVzLFxufSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvdGVzdC1jYXNlcyc7XG5pbXBvcnQgeyBNZW1vaXplRnVuY1BpcGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9tZW1vaXplLWZ1bmMucGlwZSc7XG5pbXBvcnQgeyBUcnVuY2F0ZWRUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL3RydW5jYXRlZC10ZXh0L3RydW5jYXRlZC10ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZXNTdGF0dXNDb21wb25lbnQgfSBmcm9tICcuLi90ZXN0LWNhc2VzLXN0YXR1cy90ZXN0LWNhc2VzLXN0YXR1cy5jb21wb25lbnQnO1xuXG5AVW50aWxEZXN0cm95KClcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3Rnby10ZXN0LWNhc2VzLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVzdC1jYXNlcy1jb250ZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGVzdC1jYXNlcy1jb250ZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRmllbGRDb21wb25lbnRNb2R1bGUsXG4gICAgTWVtb2l6ZUZ1bmNQaXBlLFxuICAgIFRydW5jYXRlZFRleHRDb21wb25lbnQsXG4gICAgVGVzdENhc2VzU3RhdHVzQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZXNDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgXG4gIEBJbnB1dCgpIHRlc3RDYXNlOiBFeGFtcGxlVGVzdENhc2UgfCBDdXN0b21UZXN0Q2FzZTtcbiAgQElucHV0KCkgdGVzdENhc2VSZXN1bHQ6IFRlc3RDYXNlUmVzdWx0O1xuICBASW5wdXQoKSBhcmVUZXN0c1J1bjogYm9vbGVhbjtcbiAgQElucHV0KCkgdHJhbnNsYXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZTtcbiAgQElucHV0KCkgaXNTUUw6IGJvb2xlYW47XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBbGxvd2VkTW9kaWZpY2F0aW9uRmllbGRzPigpO1xuXG4gIGlzQ3VzdG9tVGVzdENhc2U6IGJvb2xlYW47XG4gIC8vIHRvZG86IGFkZCB2YWxpZGF0b3JzIHdoZW4gYmFja2VuZCBpbXBsZW1lbnRzIHZhbGlkYXRpb24gb24gdGhlaXIgc2lkZVxuICBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgaW5wdXQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnKSxcbiAgICBleHBlY3RlZE91dHB1dDogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycpLFxuICB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50ZXN0Q2FzZT8uaW5wdXQgJiYgdGhpcy50ZXN0Q2FzZT8uZXhwZWN0ZWRPdXRwdXQpIHtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgaW5wdXQ6IHRoaXMudGVzdENhc2UuaW5wdXQsXG4gICAgICAgIGV4cGVjdGVkT3V0cHV0OiB0aGlzLnRlc3RDYXNlLmV4cGVjdGVkT3V0cHV0LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGVzdENhc2U/LnByZWxvYWRlZCkge1xuICAgICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLmxpc3RlbkZvcm1DaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGVzdENhc2U/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBpbnB1dDogdGhpcy50ZXN0Q2FzZS5pbnB1dCxcbiAgICAgICAgZXhwZWN0ZWRPdXRwdXQ6IHRoaXMudGVzdENhc2UuZXhwZWN0ZWRPdXRwdXQsXG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLnRlc3RDYXNlLnByZWxvYWRlZCkge1xuICAgICAgICB0aGlzLmZvcm0uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mb3JtLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzQ3VzdG9tVGVzdENhc2UgPSAhdGhpcy50ZXN0Q2FzZS5wcmVsb2FkZWQ7XG4gICAgfVxuICB9XG5cbiAgaXNFbXB0eVRlc3RDYXNlKHN0YXR1czogVGVzdENhc2VTdGF0dXMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdHVzID09PSBUZXN0Q2FzZVN0YXR1cy5FbXB0eTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHZhbHVlOiBBbGxvd2VkTW9kaWZpY2F0aW9uRmllbGRzKSA9PiB7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH0pO1xuICB9XG59XG4iLCJAaWYgKHRlc3RDYXNlKSB7XG48ZGl2IGNsYXNzPVwidGVzdC1jYXNlcy1jb250ZW50XCIgW2NsYXNzLnRlc3QtY2FzZXMtY29udGVudC10ZXN0cy1ydW5dPVwiYXJlVGVzdHNSdW5cIj5cbiAgQGlmIChhcmVUZXN0c1J1biAmJiBpc0N1c3RvbVRlc3RDYXNlICYmICh0ZXN0Q2FzZVJlc3VsdD8uc3RhdHVzIHwgbWVtb2l6ZUZ1bmM6IGlzRW1wdHlUZXN0Q2FzZSkpIHtcbiAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1oaW50LWNvbnRhaW5lclwiPlxuICAgIDxwIGNsYXNzPVwiY3VzdG9tLXRlc3RzLWluZm9cIj57eyB0cmFuc2xhdGlvbnNbJ0JPVEhfRklFTERTX01VU1RfQkVfRklMTEVEJ10gfX08L3A+XG4gIDwvZGl2PlxuICB9IEBpZiAoIWlzQ3VzdG9tVGVzdENhc2UgJiYgIWFyZVRlc3RzUnVuKSB7XG4gIDxwIGNsYXNzPVwiY3VzdG9tLXRlc3RzLWluZm8gY3VzdG9tLXRlc3RzLWluZm8taW5kZW50ZWRcIj5cbiAgICB7eyB0cmFuc2xhdGlvbnNbJ0VYQU1QTEVfVEVTVF9DQVNFX0lORk8nXSB9fVxuICA8L3A+XG4gIH0gQGlmIChpc0N1c3RvbVRlc3RDYXNlICYmICghdGVzdENhc2VSZXN1bHQgfHwgKHRlc3RDYXNlUmVzdWx0Py5zdGF0dXMgfCBtZW1vaXplRnVuYzogaXNFbXB0eVRlc3RDYXNlKSkpIHtcbiAgPHAgY2xhc3M9XCJjdXN0b20tdGVzdHMtaW5mbyBjdXN0b20tdGVzdHMtaW5mby1pbmRlbnRlZFwiPlxuICAgIHt7IHRyYW5zbGF0aW9uc1snRklMTF9BTExfRklFTERTJ10gfX1cbiAgPC9wPlxuICB9IEBpZiAodGVzdENhc2VSZXN1bHQgJiYgISh0ZXN0Q2FzZVJlc3VsdD8uc3RhdHVzIHwgbWVtb2l6ZUZ1bmM6IGlzRW1wdHlUZXN0Q2FzZSkpIHtcbiAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1sb2dzXCI+XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1sb2ctcm93XCI+XG4gICAgICA8aDQgY2xhc3M9XCJjdXN0b20tdGVzdHMtbG9nLWhlYWRlclwiPnt7IHRyYW5zbGF0aW9uc1snTE9HJ10gfX08L2g0PlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1sb2ctY29udGVudFwiPlxuICAgICAgICA8dGdvLXRydW5jYXRlZC10ZXh0IFt0ZXh0XT1cInRlc3RDYXNlUmVzdWx0LmxvZ3NcIiBjbGFzcz1cImN1c3RvbS10ZXN0cy1pbmZvXCI+PC90Z28tdHJ1bmNhdGVkLXRleHQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKGlzU1FMKSB7XG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1sb2ctcm93IGN1c3RvbS10ZXN0cy1sb2ctcm93LWNvbHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdGVzdHMtbG9nLWNvbCBjdXN0b20tdGVzdHMtbG9nLWNvbC1leHBlY3RlZC1xdWVyeVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRlc3RzLWxvZy1oZWFkaW5nXCI+XG4gICAgICAgICAgPGg0IGNsYXNzPVwiY3VzdG9tLXRlc3RzLWxvZy1oZWFkZXJcIj57eyB0cmFuc2xhdGlvbnNbJ0VYUEVDVEVEX1FVRVJZJ10gfX08L2g0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1sb2ctY29udGVudFwiPlxuICAgICAgICAgIDx0Z28tdHJ1bmNhdGVkLXRleHRcbiAgICAgICAgICAgIFt0ZXh0XT1cInRlc3RDYXNlLmV4cGVjdGVkT3V0cHV0XCJcbiAgICAgICAgICAgIFtpc1dvcmRXcmFwXT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tdGVzdHMtaW5mb1wiXG4gICAgICAgICAgPjwvdGdvLXRydW5jYXRlZC10ZXh0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1sb2ctY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdGVzdHMtbG9nLWhlYWRpbmdcIj5cbiAgICAgICAgICA8aDQgY2xhc3M9XCJjdXN0b20tdGVzdHMtbG9nLWhlYWRlclwiPnt7IHRyYW5zbGF0aW9uc1snUVVFUllfUkVTVUxUJ10gfX08L2g0PlxuICAgICAgICAgIDx0Z28tdGVzdC1jYXNlcy1zdGF0dXNcbiAgICAgICAgICAgIFtzdGF0dXNdPVwidGVzdENhc2VSZXN1bHQuc3RhdHVzXCJcbiAgICAgICAgICAgIFt0cmFuc2xhdGlvbnNdPVwidHJhbnNsYXRpb25zWydTVEFUVVNFUyddXCJcbiAgICAgICAgICA+PC90Z28tdGVzdC1jYXNlcy1zdGF0dXM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRlc3RzLWxvZy1jb250ZW50XCI+XG4gICAgICAgICAgPHRnby10cnVuY2F0ZWQtdGV4dFxuICAgICAgICAgICAgW3RleHRdPVwidGVzdENhc2VSZXN1bHQuYWN0dWFsT3V0cHV0XCJcbiAgICAgICAgICAgIFtpc1dvcmRXcmFwXT1cInRydWVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tdGVzdHMtaW5mb1wiXG4gICAgICAgICAgPjwvdGdvLXRydW5jYXRlZC10ZXh0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdGVzdHMtbG9nLXJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS10ZXN0cy1sb2ctaGVhZGluZ1wiPlxuICAgICAgICA8aDQgY2xhc3M9XCJjdXN0b20tdGVzdHMtbG9nLWhlYWRlclwiPnt7IHRyYW5zbGF0aW9uc1snT1VUUFVUJ10gfX08L2g0PlxuICAgICAgICA8dGdvLXRlc3QtY2FzZXMtc3RhdHVzXG4gICAgICAgICAgW3N0YXR1c109XCJ0ZXN0Q2FzZVJlc3VsdC5zdGF0dXNcIlxuICAgICAgICAgIFt0cmFuc2xhdGlvbnNdPVwidHJhbnNsYXRpb25zWydTVEFUVVNFUyddXCJcbiAgICAgICAgPjwvdGdvLXRlc3QtY2FzZXMtc3RhdHVzPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRlc3RzLWxvZy1jb250ZW50XCI+XG4gICAgICAgIDx0Z28tdHJ1bmNhdGVkLXRleHQgW3RleHRdPVwidGVzdENhc2VSZXN1bHQuYWN0dWFsT3V0cHV0XCIgY2xhc3M9XCJjdXN0b20tdGVzdHMtaW5mb1wiPjwvdGdvLXRydW5jYXRlZC10ZXh0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgfSBAaWYgKCFpc1NRTCkge1xuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXRlc3RzLWlucHV0cy1jb250YWluZXJcIj5cbiAgICAgIDx1aS1maWVsZFxuICAgICAgICBjbGFzcz1cImN1c3RvbS10ZXN0cy1pbnB1dFwiXG4gICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNbJ0lOUFVUJ11cIlxuICAgICAgICBbdHlwZV09XCInbXVsdGktbGluZSdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwidGVzdENhc2UucHJlbG9hZGVkXCJcbiAgICAgICAgW21heFJvd3NdPVwiM1wiXG4gICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbnB1dFwiXG4gICAgICA+PC91aS1maWVsZD5cbiAgICAgIDx1aS1maWVsZFxuICAgICAgICBjbGFzcz1cImN1c3RvbS10ZXN0cy1pbnB1dFwiXG4gICAgICAgIFtsYWJlbF09XCJ0cmFuc2xhdGlvbnNbJ0VYUEVDVEVEX09VVFBVVCddXCJcbiAgICAgICAgW3R5cGVdPVwiJ211bHRpLWxpbmUnXCJcbiAgICAgICAgW21heFJvd3NdPVwiM1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0ZXN0Q2FzZS5wcmVsb2FkZWRcIlxuICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZXhwZWN0ZWRPdXRwdXRcIlxuICAgICAgPjwvdWktZmllbGQ+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbiAgfVxuPC9kaXY+XG59XG4iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
-
import { IconLabelComponentModule } from '@testgorilla/tgo-ui';
|
|
3
|
-
import { TestCaseStatus } from '../../../models/test-cases';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@testgorilla/tgo-ui";
|
|
6
|
-
export class TestCasesStatusComponent {
|
|
7
|
-
status;
|
|
8
|
-
translations;
|
|
9
|
-
TestCaseStatus = TestCaseStatus;
|
|
10
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestCasesStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TestCasesStatusComponent, isStandalone: true, selector: "tgo-test-cases-status", inputs: { status: "status", translations: "translations" }, ngImport: i0, template: "@switch (status) { @case (TestCaseStatus.Passed) {\n<div class=\"test-case-status test-case-status-passed\">\n <ui-icon-label class=\"label-icon\" [iconName]=\"'Check'\" [iconSize]=\"'16'\" [text]=\"translations['PASSED']\">\n </ui-icon-label>\n</div>\n} @case (TestCaseStatus.Error) {\n<div class=\"test-case-status test-case-status-error\">\n <ui-icon-label class=\"label-icon\" [iconName]=\"'Close'\" [iconSize]=\"'16'\" [text]=\"translations['ERROR']\">\n </ui-icon-label>\n</div>\n} @case (TestCaseStatus.Empty) {\n<div class=\"test-case-status test-case-status-empty\">\n <ui-icon-label class=\"label-icon\" [iconName]=\"'Help'\" [iconSize]=\"'16'\" [text]=\"translations['EMPTY']\">\n </ui-icon-label>\n</div>\n} }\n", styles: [":host{display:flex}.test-case-status{display:flex;align-items:center}.test-case-status-passed{color:var(--petrol-text-color)}.test-case-status-passed ::ng-deep mat-icon svg{color:var(--petrol-text-color)}.test-case-status-error{color:#cb7b7a}.test-case-status-error ::ng-deep mat-icon svg{color:#cb7b7a}.test-case-status-empty{color:var(--status-empty-color)}.test-case-status-empty ::ng-deep mat-icon svg{color:var(--status-empty-color)}.test-case-status .label-icon ::ng-deep mat-icon{font-size:16px;width:16px;height:16px;min-width:16px;min-height:16px;line-height:16px}\n"], dependencies: [{ kind: "ngmodule", type: IconLabelComponentModule }, { kind: "component", type: i1.IconLabelComponent, selector: "ui-icon-label", inputs: ["iconSize", "iconName", "text", "iconColor", "iconIndent", "applicationTheme"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12
|
-
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TestCasesStatusComponent, decorators: [{
|
|
14
|
-
type: Component,
|
|
15
|
-
args: [{ standalone: true, selector: 'tgo-test-cases-status', changeDetection: ChangeDetectionStrategy.OnPush, imports: [IconLabelComponentModule], template: "@switch (status) { @case (TestCaseStatus.Passed) {\n<div class=\"test-case-status test-case-status-passed\">\n <ui-icon-label class=\"label-icon\" [iconName]=\"'Check'\" [iconSize]=\"'16'\" [text]=\"translations['PASSED']\">\n </ui-icon-label>\n</div>\n} @case (TestCaseStatus.Error) {\n<div class=\"test-case-status test-case-status-error\">\n <ui-icon-label class=\"label-icon\" [iconName]=\"'Close'\" [iconSize]=\"'16'\" [text]=\"translations['ERROR']\">\n </ui-icon-label>\n</div>\n} @case (TestCaseStatus.Empty) {\n<div class=\"test-case-status test-case-status-empty\">\n <ui-icon-label class=\"label-icon\" [iconName]=\"'Help'\" [iconSize]=\"'16'\" [text]=\"translations['EMPTY']\">\n </ui-icon-label>\n</div>\n} }\n", styles: [":host{display:flex}.test-case-status{display:flex;align-items:center}.test-case-status-passed{color:var(--petrol-text-color)}.test-case-status-passed ::ng-deep mat-icon svg{color:var(--petrol-text-color)}.test-case-status-error{color:#cb7b7a}.test-case-status-error ::ng-deep mat-icon svg{color:#cb7b7a}.test-case-status-empty{color:var(--status-empty-color)}.test-case-status-empty ::ng-deep mat-icon svg{color:var(--status-empty-color)}.test-case-status .label-icon ::ng-deep mat-icon{font-size:16px;width:16px;height:16px;min-width:16px;min-height:16px;line-height:16px}\n"] }]
|
|
16
|
-
}], propDecorators: { status: [{
|
|
17
|
-
type: Input
|
|
18
|
-
}], translations: [{
|
|
19
|
-
type: Input
|
|
20
|
-
}] } });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1jYXNlcy1zdGF0dXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdGdvLWNvZGluZy10ZXN0L3NyYy9saWIvY29tcG9uZW50cy90ZXN0cy90ZXN0LWNhc2VzLXN0YXR1cy90ZXN0LWNhc2VzLXN0YXR1cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy90Z28tY29kaW5nLXRlc3Qvc3JjL2xpYi9jb21wb25lbnRzL3Rlc3RzL3Rlc3QtY2FzZXMtc3RhdHVzL3Rlc3QtY2FzZXMtc3RhdHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBVTVELE1BQU0sT0FBTyx3QkFBd0I7SUFDMUIsTUFBTSxDQUFpQjtJQUN2QixZQUFZLENBQTBCO0lBRXRDLGNBQWMsR0FBRyxjQUFjLENBQUM7d0dBSjlCLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDZJQ1pyQywydEJBZ0JBLHduQkROWSx3QkFBd0I7OzRGQUV2Qix3QkFBd0I7a0JBUnBDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLHdCQUF3QixDQUFDOzhCQUcxQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uTGFiZWxDb21wb25lbnRNb2R1bGUgfSBmcm9tICdAdGVzdGdvcmlsbGEvdGdvLXVpJztcbmltcG9ydCB7IFRlc3RDYXNlU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Rlc3QtY2FzZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICd0Z28tdGVzdC1jYXNlcy1zdGF0dXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGVzdC1jYXNlcy1zdGF0dXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90ZXN0LWNhc2VzLXN0YXR1cy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0ljb25MYWJlbENvbXBvbmVudE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRlc3RDYXNlc1N0YXR1c0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHN0YXR1czogVGVzdENhc2VTdGF0dXM7XG4gIEBJbnB1dCgpIHRyYW5zbGF0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgcmVhZG9ubHkgVGVzdENhc2VTdGF0dXMgPSBUZXN0Q2FzZVN0YXR1cztcbn1cbiIsIkBzd2l0Y2ggKHN0YXR1cykgeyBAY2FzZSAoVGVzdENhc2VTdGF0dXMuUGFzc2VkKSB7XG48ZGl2IGNsYXNzPVwidGVzdC1jYXNlLXN0YXR1cyB0ZXN0LWNhc2Utc3RhdHVzLXBhc3NlZFwiPlxuICA8dWktaWNvbi1sYWJlbCBjbGFzcz1cImxhYmVsLWljb25cIiBbaWNvbk5hbWVdPVwiJ0NoZWNrJ1wiIFtpY29uU2l6ZV09XCInMTYnXCIgW3RleHRdPVwidHJhbnNsYXRpb25zWydQQVNTRUQnXVwiPlxuICA8L3VpLWljb24tbGFiZWw+XG48L2Rpdj5cbn0gQGNhc2UgKFRlc3RDYXNlU3RhdHVzLkVycm9yKSB7XG48ZGl2IGNsYXNzPVwidGVzdC1jYXNlLXN0YXR1cyB0ZXN0LWNhc2Utc3RhdHVzLWVycm9yXCI+XG4gIDx1aS1pY29uLWxhYmVsIGNsYXNzPVwibGFiZWwtaWNvblwiIFtpY29uTmFtZV09XCInQ2xvc2UnXCIgW2ljb25TaXplXT1cIicxNidcIiBbdGV4dF09XCJ0cmFuc2xhdGlvbnNbJ0VSUk9SJ11cIj5cbiAgPC91aS1pY29uLWxhYmVsPlxuPC9kaXY+XG59IEBjYXNlIChUZXN0Q2FzZVN0YXR1cy5FbXB0eSkge1xuPGRpdiBjbGFzcz1cInRlc3QtY2FzZS1zdGF0dXMgdGVzdC1jYXNlLXN0YXR1cy1lbXB0eVwiPlxuICA8dWktaWNvbi1sYWJlbCBjbGFzcz1cImxhYmVsLWljb25cIiBbaWNvbk5hbWVdPVwiJ0hlbHAnXCIgW2ljb25TaXplXT1cIicxNidcIiBbdGV4dF09XCJ0cmFuc2xhdGlvbnNbJ0VNUFRZJ11cIj5cbiAgPC91aS1pY29uLWxhYmVsPlxuPC9kaXY+XG59IH1cbiJdfQ==
|