diff --git a/src/main/webapp/app/detail-overview-list/components/boolean-detail.component.html b/src/main/webapp/app/detail-overview-list/components/boolean-detail/boolean-detail.component.html
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/boolean-detail.component.html
rename to src/main/webapp/app/detail-overview-list/components/boolean-detail/boolean-detail.component.html
diff --git a/src/main/webapp/app/detail-overview-list/components/boolean-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/boolean-detail/boolean-detail.component.ts
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/boolean-detail.component.ts
rename to src/main/webapp/app/detail-overview-list/components/boolean-detail/boolean-detail.component.ts
diff --git a/src/main/webapp/app/detail-overview-list/components/date-detail.component.html b/src/main/webapp/app/detail-overview-list/components/date-detail/date-detail.component.html
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/date-detail.component.html
rename to src/main/webapp/app/detail-overview-list/components/date-detail/date-detail.component.html
diff --git a/src/main/webapp/app/detail-overview-list/components/date-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/date-detail/date-detail.component.ts
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/date-detail.component.ts
rename to src/main/webapp/app/detail-overview-list/components/date-detail/date-detail.component.ts
diff --git a/src/main/webapp/app/detail-overview-list/components/link-detail.component.html b/src/main/webapp/app/detail-overview-list/components/link-detail/link-detail.component.html
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/link-detail.component.html
rename to src/main/webapp/app/detail-overview-list/components/link-detail/link-detail.component.html
diff --git a/src/main/webapp/app/detail-overview-list/components/link-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/link-detail/link-detail.component.ts
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/link-detail.component.ts
rename to src/main/webapp/app/detail-overview-list/components/link-detail/link-detail.component.ts
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail.component.html b/src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail/programming-auxiliary-repository-buttons-detail.component.html
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail.component.html
rename to src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail/programming-auxiliary-repository-buttons-detail.component.html
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail/programming-auxiliary-repository-buttons-detail.component.ts
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail.component.ts
rename to src/main/webapp/app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail/programming-auxiliary-repository-buttons-detail.component.ts
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component.html b/src/main/webapp/app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component.html
new file mode 100644
index 000000000000..5b7834c51b5a
--- /dev/null
+++ b/src/main/webapp/app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component.html
@@ -0,0 +1,24 @@
+
+
+
+
+@if (detail.data.addedLineCount > 0 || detail.data.removedLineCount > 0) {
+
+
+
+}
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component.ts
new file mode 100644
index 000000000000..b108a561d7c5
--- /dev/null
+++ b/src/main/webapp/app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component.ts
@@ -0,0 +1,39 @@
+import { Component, Input, inject } from '@angular/core';
+import type { ProgrammingDiffReportDetail } from 'app/detail-overview-list/detail.model';
+import { FeatureToggle } from 'app/shared/feature-toggle/feature-toggle.service';
+import { ButtonSize, ButtonType, TooltipPlacement } from 'app/shared/components/button.component';
+import { faCodeCompare } from '@fortawesome/free-solid-svg-icons';
+import { ProgrammingExerciseGitDiffReport } from 'app/entities/hestia/programming-exercise-git-diff-report.model';
+import { GitDiffReportModalComponent } from 'app/exercises/programming/hestia/git-diff-report/git-diff-report-modal.component';
+import { GitDiffReportModule } from 'app/exercises/programming/hestia/git-diff-report/git-diff-report.module';
+import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module';
+import { ArtemisSharedModule } from 'app/shared/shared.module';
+import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
+
+@Component({
+ selector: 'jhi-programming-diff-report-detail',
+ templateUrl: 'programming-diff-report-detail.component.html',
+ standalone: true,
+ imports: [ArtemisSharedModule, ArtemisSharedComponentModule, GitDiffReportModule],
+})
+export class ProgrammingDiffReportDetailComponent {
+ protected readonly FeatureToggle = FeatureToggle;
+ protected readonly ButtonSize = ButtonSize;
+ protected readonly TooltipPlacement = TooltipPlacement;
+ protected readonly WARNING = ButtonType.WARNING;
+
+ protected readonly faCodeCompare = faCodeCompare;
+
+ private readonly modalService = inject(NgbModal);
+
+ @Input({ required: true }) detail: ProgrammingDiffReportDetail;
+
+ showGitDiff(gitDiff?: ProgrammingExerciseGitDiffReport) {
+ if (!gitDiff) {
+ return;
+ }
+
+ const modalRef = this.modalService.open(GitDiffReportModalComponent, { windowClass: 'diff-view-modal' });
+ modalRef.componentInstance.report = gitDiff;
+ }
+}
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail.component.html b/src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail/programming-repository-buttons-detail.component.html
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail.component.html
rename to src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail/programming-repository-buttons-detail.component.html
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail/programming-repository-buttons-detail.component.ts
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail.component.ts
rename to src/main/webapp/app/detail-overview-list/components/programming-repository-buttons-detail/programming-repository-buttons-detail.component.ts
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component.html b/src/main/webapp/app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component.html
new file mode 100644
index 000000000000..366ecdb77efd
--- /dev/null
+++ b/src/main/webapp/app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component.html
@@ -0,0 +1,38 @@
+@if (detail.data.participation) {
+
+}
diff --git a/src/main/webapp/app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component.ts
new file mode 100644
index 000000000000..89a43fb9aee3
--- /dev/null
+++ b/src/main/webapp/app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component.ts
@@ -0,0 +1,20 @@
+import { Component, Input } from '@angular/core';
+import type { ProgrammingTestStatusDetail } from 'app/detail-overview-list/detail.model';
+import { RouterModule } from '@angular/router';
+import { ArtemisProgrammingExerciseActionsModule } from 'app/exercises/programming/shared/actions/programming-exercise-actions.module';
+import { SubmissionResultStatusModule } from 'app/overview/submission-result-status.module';
+import { ArtemisProgrammingExerciseStatusModule } from 'app/exercises/programming/manage/status/programming-exercise-status.module';
+import { TranslateDirective } from 'app/shared/language/translate.directive';
+import { ProgrammingExerciseParticipationType } from 'app/entities/programming/programming-exercise-participation.model';
+
+@Component({
+ selector: 'jhi-programming-test-status-detail',
+ templateUrl: 'programming-test-status-detail.component.html',
+ standalone: true,
+ imports: [RouterModule, ArtemisProgrammingExerciseActionsModule, SubmissionResultStatusModule, ArtemisProgrammingExerciseStatusModule, TranslateDirective],
+})
+export class ProgrammingTestStatusDetailComponent {
+ protected readonly ProgrammingExerciseParticipationType = ProgrammingExerciseParticipationType;
+
+ @Input({ required: true }) detail: ProgrammingTestStatusDetail;
+}
diff --git a/src/main/webapp/app/detail-overview-list/components/text-detail.component.html b/src/main/webapp/app/detail-overview-list/components/text-detail/text-detail.component.html
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/text-detail.component.html
rename to src/main/webapp/app/detail-overview-list/components/text-detail/text-detail.component.html
diff --git a/src/main/webapp/app/detail-overview-list/components/text-detail.component.ts b/src/main/webapp/app/detail-overview-list/components/text-detail/text-detail.component.ts
similarity index 100%
rename from src/main/webapp/app/detail-overview-list/components/text-detail.component.ts
rename to src/main/webapp/app/detail-overview-list/components/text-detail/text-detail.component.ts
diff --git a/src/main/webapp/app/detail-overview-list/detail-overview-list.component.html b/src/main/webapp/app/detail-overview-list/detail-overview-list.component.html
index ae8ce9674c34..54cc218a7f3b 100644
--- a/src/main/webapp/app/detail-overview-list/detail-overview-list.component.html
+++ b/src/main/webapp/app/detail-overview-list/detail-overview-list.component.html
@@ -15,79 +15,6 @@ {{ section
}
@switch (detail.type) {
- @case (DetailType.ProgrammingTestStatus) {
-
- @if (detail.data.participation) {
-
- }
-
- }
- @case (DetailType.ProgrammingDiffReport) {
-
-
-
-
-
- @if (detail.data.addedLineCount > 0 || detail.data.removedLineCount > 0) {
-
-
-
- }
-
- }
@case (DetailType.ProgrammingProblemStatement) {
@if (detail.data.exercise?.templateParticipation) {
diff --git a/src/main/webapp/app/detail-overview-list/detail-overview-list.component.ts b/src/main/webapp/app/detail-overview-list/detail-overview-list.component.ts
index 4f49ce9fe006..60ed25bd572a 100644
--- a/src/main/webapp/app/detail-overview-list/detail-overview-list.component.ts
+++ b/src/main/webapp/app/detail-overview-list/detail-overview-list.component.ts
@@ -1,11 +1,7 @@
import { Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';
-import { faCodeCompare } from '@fortawesome/free-solid-svg-icons';
import { isEmpty } from 'lodash-es';
import { FeatureToggle } from 'app/shared/feature-toggle/feature-toggle.service';
-import { ButtonSize, ButtonType, TooltipPlacement } from 'app/shared/components/button.component';
-import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
-import { GitDiffReportModalComponent } from 'app/exercises/programming/hestia/git-diff-report/git-diff-report-modal.component';
-import { ProgrammingExerciseGitDiffReport } from 'app/entities/hestia/programming-exercise-git-diff-report.model';
+import { ButtonSize, TooltipPlacement } from 'app/shared/components/button.component';
import { IrisSubSettingsType } from 'app/entities/iris/settings/iris-sub-settings.model';
import { ModelingExerciseService } from 'app/exercises/modeling/manage/modeling-exercise.service';
import { AlertService } from 'app/core/util/alert.service';
@@ -52,6 +48,7 @@ export class DetailOverviewListComponent implements OnInit, OnDestroy {
protected readonly FeatureToggle = FeatureToggle;
protected readonly ButtonSize = ButtonSize;
protected readonly ProgrammingExerciseParticipationType = ProgrammingExerciseParticipationType;
+
readonly CHAT = IrisSubSettingsType.CHAT;
@Input()
@@ -62,16 +59,10 @@ export class DetailOverviewListComponent implements OnInit, OnDestroy {
// headline record to avoid function call in html
headlinesRecord: Record;
- // icons
- readonly faCodeCompare = faCodeCompare;
-
- WARNING = ButtonType.WARNING;
-
profileSubscription: Subscription;
isLocalVC = false;
constructor(
- private modalService: NgbModal,
private modelingExerciseService: ModelingExerciseService,
private alertService: AlertService,
private profileService: ProfileService,
@@ -92,15 +83,6 @@ export class DetailOverviewListComponent implements OnInit, OnDestroy {
}, {});
}
- showGitDiff(gitDiff?: ProgrammingExerciseGitDiffReport) {
- if (!gitDiff) {
- return;
- }
-
- const modalRef = this.modalService.open(GitDiffReportModalComponent, { windowClass: 'diff-view-modal' });
- modalRef.componentInstance.report = gitDiff;
- }
-
downloadApollonDiagramAsPDf(umlModel?: UMLModel, title?: string) {
if (umlModel) {
this.modelingExerciseService.convertToPdf(JSON.stringify(umlModel), `${title}-example-solution`).subscribe({
diff --git a/src/main/webapp/app/detail-overview-list/detail.model.ts b/src/main/webapp/app/detail-overview-list/detail.model.ts
index 77085194fb0b..4e80437fe3d2 100644
--- a/src/main/webapp/app/detail-overview-list/detail.model.ts
+++ b/src/main/webapp/app/detail-overview-list/detail.model.ts
@@ -97,7 +97,7 @@ export interface ProgrammingAuxiliaryRepositoryButtonsDetail extends DetailBase
data: { auxiliaryRepositories: AuxiliaryRepository[]; exerciseId?: number };
}
-interface ProgrammingTestStatusDetail extends DetailBase {
+export interface ProgrammingTestStatusDetail extends DetailBase {
type: DetailType.ProgrammingTestStatus;
data: {
participation?: TemplateProgrammingExerciseParticipation | SolutionProgrammingExerciseParticipation;
@@ -108,7 +108,7 @@ interface ProgrammingTestStatusDetail extends DetailBase {
submissionRouterLink?: (string | number | undefined)[];
};
}
-interface ProgrammingDiffReportDetail extends DetailBase {
+export interface ProgrammingDiffReportDetail extends DetailBase {
type: DetailType.ProgrammingDiffReport;
data: { addedLineCount: number; removedLineCount: number; isLoadingDiffReport?: boolean; gitDiffReport?: ProgrammingExerciseGitDiffReport };
}
diff --git a/src/main/webapp/app/detail-overview-list/exercise-detail.directive.ts b/src/main/webapp/app/detail-overview-list/exercise-detail.directive.ts
index 9a0cd295b12e..2bacb55c076b 100644
--- a/src/main/webapp/app/detail-overview-list/exercise-detail.directive.ts
+++ b/src/main/webapp/app/detail-overview-list/exercise-detail.directive.ts
@@ -1,12 +1,14 @@
import { ComponentRef, Directive, Input, OnDestroy, OnInit, Type, ViewContainerRef } from '@angular/core';
import type { Detail, ShownDetail } from 'app/detail-overview-list/detail.model';
import { DetailType } from 'app/detail-overview-list/detail-overview-list.component';
-import { TextDetailComponent } from 'app/detail-overview-list/components/text-detail.component';
-import { DateDetailComponent } from 'app/detail-overview-list/components/date-detail.component';
-import { LinkDetailComponent } from 'app/detail-overview-list/components/link-detail.component';
-import { BooleanDetailComponent } from 'app/detail-overview-list/components/boolean-detail.component';
-import { ProgrammingRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-repository-buttons-detail.component';
-import { ProgrammingAuxiliaryRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail.component';
+import { TextDetailComponent } from 'app/detail-overview-list/components/text-detail/text-detail.component';
+import { DateDetailComponent } from 'app/detail-overview-list/components/date-detail/date-detail.component';
+import { LinkDetailComponent } from 'app/detail-overview-list/components/link-detail/link-detail.component';
+import { BooleanDetailComponent } from 'app/detail-overview-list/components/boolean-detail/boolean-detail.component';
+import { ProgrammingRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-repository-buttons-detail/programming-repository-buttons-detail.component';
+import { ProgrammingAuxiliaryRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail/programming-auxiliary-repository-buttons-detail.component';
+import { ProgrammingTestStatusDetailComponent } from 'app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component';
+import { ProgrammingDiffReportDetailComponent } from 'app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component';
@Directive({
selector: '[jhiExerciseDetail]',
@@ -33,6 +35,8 @@ export class ExerciseDetailDirective implements OnInit, OnDestroy {
| BooleanDetailComponent
| ProgrammingRepositoryButtonsDetailComponent
| ProgrammingAuxiliaryRepositoryButtonsDetailComponent
+ | ProgrammingTestStatusDetailComponent
+ | ProgrammingDiffReportDetailComponent
>;
} = {
[DetailType.Text]: TextDetailComponent,
@@ -41,6 +45,8 @@ export class ExerciseDetailDirective implements OnInit, OnDestroy {
[DetailType.Boolean]: BooleanDetailComponent,
[DetailType.ProgrammingRepositoryButtons]: ProgrammingRepositoryButtonsDetailComponent,
[DetailType.ProgrammingAuxiliaryRepositoryButtons]: ProgrammingAuxiliaryRepositoryButtonsDetailComponent,
+ [DetailType.ProgrammingTestStatus]: ProgrammingTestStatusDetailComponent,
+ [DetailType.ProgrammingDiffReport]: ProgrammingDiffReportDetailComponent,
};
const detailComponent = detailTypeToComponent[this.detail.type];
diff --git a/src/main/webapp/app/shared/language/translate.directive.ts b/src/main/webapp/app/shared/language/translate.directive.ts
index 8a703341ed63..cb40182df64f 100644
--- a/src/main/webapp/app/shared/language/translate.directive.ts
+++ b/src/main/webapp/app/shared/language/translate.directive.ts
@@ -9,6 +9,7 @@ import { takeUntil } from 'rxjs/operators';
*/
@Directive({
selector: '[jhiTranslate]',
+ standalone: true,
})
export class TranslateDirective implements OnChanges, OnInit, OnDestroy {
@Input() jhiTranslate!: string;
diff --git a/src/main/webapp/app/shared/shared-common.module.ts b/src/main/webapp/app/shared/shared-common.module.ts
index 67381071e8cd..b14b2d663504 100644
--- a/src/main/webapp/app/shared/shared-common.module.ts
+++ b/src/main/webapp/app/shared/shared-common.module.ts
@@ -15,13 +15,12 @@ import { CloseCircleComponent } from 'app/shared/close-circle/close-circle.compo
import { ArtemisDateRangePipe } from 'app/shared/pipes/artemis-date-range.pipe';
@NgModule({
- imports: [ArtemisSharedLibsModule],
+ imports: [ArtemisSharedLibsModule, TranslateDirective],
declarations: [
ArtemisDatePipe,
ArtemisDateRangePipe,
FindLanguageFromKeyPipe,
AlertOverlayComponent,
- TranslateDirective,
SortByDirective,
SortDirective,
ArtemisTranslatePipe,
diff --git a/src/test/javascript/spec/component/detail-overview-list.component.spec.ts b/src/test/javascript/spec/component/detail-overview-list.component.spec.ts
index cf32c04afa13..61e891b11e35 100644
--- a/src/test/javascript/spec/component/detail-overview-list.component.spec.ts
+++ b/src/test/javascript/spec/component/detail-overview-list.component.spec.ts
@@ -1,9 +1,5 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { DetailOverviewListComponent, DetailOverviewSection, DetailType } from 'app/detail-overview-list/detail-overview-list.component';
-import { TranslatePipeMock } from '../helpers/mocks/service/mock-translate.service';
-import { MockNgbModalService } from '../helpers/mocks/service/mock-ngb-modal.service';
-import { ProgrammingExerciseGitDiffReport } from 'app/entities/hestia/programming-exercise-git-diff-report.model';
import { ModelingExerciseService } from 'app/exercises/modeling/manage/modeling-exercise.service';
import { AlertService } from 'app/core/util/alert.service';
import { MockAlertService } from '../helpers/mocks/service/mock-alert.service';
@@ -16,6 +12,7 @@ import { ProfileService } from 'app/shared/layouts/profiles/profile.service';
import { MockProfileService } from '../helpers/mocks/service/mock-profile.service';
import { MockRouter } from '../helpers/mocks/mock-router';
import { ExerciseDetailDirective } from 'app/detail-overview-list/exercise-detail.directive';
+import { TranslatePipeMock } from '../helpers/mocks/service/mock-translate.service';
const sections: DetailOverviewSection[] = [
{
@@ -34,7 +31,6 @@ const sections: DetailOverviewSection[] = [
describe('DetailOverviewList', () => {
let component: DetailOverviewListComponent;
let fixture: ComponentFixture;
- let modalService: NgbModal;
let modelingService: ModelingExerciseService;
let alertService: AlertService;
@@ -43,7 +39,6 @@ describe('DetailOverviewList', () => {
imports: [ExerciseDetailDirective],
declarations: [DetailOverviewListComponent, TranslatePipeMock],
providers: [
- { provide: NgbModal, useClass: MockNgbModalService },
{ provide: AlertService, useClass: MockAlertService },
{ provide: Router, useClass: MockRouter },
{ provide: ProfileService, useClass: MockProfileService },
@@ -52,7 +47,6 @@ describe('DetailOverviewList', () => {
})
.compileComponents()
.then(() => {
- modalService = fixture.debugElement.injector.get(NgbModal);
modelingService = fixture.debugElement.injector.get(ModelingExerciseService);
alertService = fixture.debugElement.injector.get(AlertService);
});
@@ -99,18 +93,6 @@ describe('DetailOverviewList', () => {
expect(titleDetailValue.textContent).toContain('A Title');
});
- it('should open git diff modal', () => {
- const modalSpy = jest.spyOn(modalService, 'open');
- component.showGitDiff({} as unknown as ProgrammingExerciseGitDiffReport);
- expect(modalSpy).toHaveBeenCalledOnce();
- });
-
- it('should not open git diff modal', () => {
- const modalSpy = jest.spyOn(modalService, 'open');
- component.showGitDiff(undefined);
- expect(modalSpy).not.toHaveBeenCalled();
- });
-
it('should download apollon Diagram', () => {
const downloadSpy = jest.spyOn(modelingService, 'convertToPdf').mockReturnValue(of(new HttpResponse({ body: new Blob() })));
component.downloadApollonDiagramAsPDf({} as UMLModel, 'title');
diff --git a/src/test/javascript/spec/component/exercise-detail.directive.spec.ts b/src/test/javascript/spec/component/exercise-detail.directive.spec.ts
index da435d3b9a84..50ed496b1b34 100644
--- a/src/test/javascript/spec/component/exercise-detail.directive.spec.ts
+++ b/src/test/javascript/spec/component/exercise-detail.directive.spec.ts
@@ -8,18 +8,23 @@ import type {
LinkDetail,
NotShownDetail,
ProgrammingAuxiliaryRepositoryButtonsDetail,
+ ProgrammingDiffReportDetail,
ProgrammingRepositoryButtonsDetail,
+ ProgrammingTestStatusDetail,
ShownDetail,
TextDetail,
} from 'app/detail-overview-list/detail.model';
-import { TextDetailComponent } from 'app/detail-overview-list/components/text-detail.component';
-import { MockComponent } from 'ng-mocks';
+import { TextDetailComponent } from 'app/detail-overview-list/components/text-detail/text-detail.component';
+import { MockComponent, MockDirective } from 'ng-mocks';
import { DetailType } from 'app/detail-overview-list/detail-overview-list.component';
-import { DateDetailComponent } from 'app/detail-overview-list/components/date-detail.component';
-import { LinkDetailComponent } from 'app/detail-overview-list/components/link-detail.component';
-import { BooleanDetailComponent } from 'app/detail-overview-list/components/boolean-detail.component';
-import { ProgrammingRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-repository-buttons-detail.component';
-import { ProgrammingAuxiliaryRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail.component';
+import { DateDetailComponent } from 'app/detail-overview-list/components/date-detail/date-detail.component';
+import { LinkDetailComponent } from 'app/detail-overview-list/components/link-detail/link-detail.component';
+import { BooleanDetailComponent } from 'app/detail-overview-list/components/boolean-detail/boolean-detail.component';
+import { ProgrammingRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-repository-buttons-detail/programming-repository-buttons-detail.component';
+import { ProgrammingAuxiliaryRepositoryButtonsDetailComponent } from 'app/detail-overview-list/components/programming-auxiliary-repository-buttons-detail/programming-auxiliary-repository-buttons-detail.component';
+import { ProgrammingTestStatusDetailComponent } from 'app/detail-overview-list/components/programming-test-status-detail/programming-test-status-detail.component';
+import { ProgrammingDiffReportDetailComponent } from 'app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component';
+import { TranslateDirective } from 'app/shared/language/translate.directive';
@Component({
template: ``,
@@ -35,7 +40,13 @@ describe('ExerciseDetailDirective', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
- declarations: [TestDetailHostComponent, ExerciseDetailDirective, MockComponent(TextDetailComponent)],
+ declarations: [
+ TestDetailHostComponent,
+ ExerciseDetailDirective,
+ MockDirective(TranslateDirective),
+ MockComponent(TextDetailComponent),
+ MockComponent(ProgrammingDiffReportDetailComponent),
+ ],
}).compileComponents();
fixture = TestBed.createComponent(TestDetailHostComponent);
@@ -86,6 +97,14 @@ describe('ExerciseDetailDirective', () => {
ProgrammingAuxiliaryRepositoryButtonsDetailComponent,
);
});
+
+ it('should create ProgrammingTestStatusDetail component', () => {
+ checkComponentForDetailWasCreated({ type: DetailType.ProgrammingTestStatus } as ProgrammingTestStatusDetail, ProgrammingTestStatusDetailComponent);
+ });
+
+ it('should create ProgrammingDiffReportDetail component', () => {
+ checkComponentForDetailWasCreated({ type: DetailType.ProgrammingDiffReport } as ProgrammingDiffReportDetail, ProgrammingDiffReportDetailComponent);
+ });
});
function checkComponentForDetailWasNotCreated(detailToBeChecked: NotShownDetail) {
diff --git a/src/test/javascript/spec/component/programming-diff-report-detail.component.spec.ts b/src/test/javascript/spec/component/programming-diff-report-detail.component.spec.ts
new file mode 100644
index 000000000000..9f1940740640
--- /dev/null
+++ b/src/test/javascript/spec/component/programming-diff-report-detail.component.spec.ts
@@ -0,0 +1,45 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
+import { MockNgbModalService } from '../helpers/mocks/service/mock-ngb-modal.service';
+import { ProgrammingExerciseGitDiffReport } from 'app/entities/hestia/programming-exercise-git-diff-report.model';
+import { ProgrammingDiffReportDetailComponent } from 'app/detail-overview-list/components/programming-diff-report-detail/programming-diff-report-detail.component';
+import { TranslateService } from '@ngx-translate/core';
+import { MockTranslateService } from '../helpers/mocks/service/mock-translate.service';
+import { ProgrammingExerciseService } from 'app/exercises/programming/manage/services/programming-exercise.service';
+import { MockProgrammingExerciseService } from '../helpers/mocks/service/mock-programming-exercise.service';
+import { ProgrammingExerciseParticipationService } from 'app/exercises/programming/manage/services/programming-exercise-participation.service';
+import { MockProgrammingExerciseParticipationService } from '../helpers/mocks/service/mock-programming-exercise-participation.service';
+
+describe('ProgrammingDiffReportDetailComponent', () => {
+ let component: ProgrammingDiffReportDetailComponent;
+ let fixture: ComponentFixture;
+ let modalService: NgbModal;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [ProgrammingDiffReportDetailComponent],
+ providers: [
+ { provide: NgbModal, useClass: MockNgbModalService },
+ { provide: TranslateService, useClass: MockTranslateService },
+ { provide: ProgrammingExerciseService, useClass: MockProgrammingExerciseService },
+ { provide: ProgrammingExerciseParticipationService, useClass: MockProgrammingExerciseParticipationService },
+ ],
+ }).compileComponents();
+ fixture = TestBed.createComponent(ProgrammingDiffReportDetailComponent);
+
+ modalService = fixture.debugElement.injector.get(NgbModal);
+ component = fixture.componentInstance;
+ });
+
+ it('should open git diff modal', () => {
+ const modalSpy = jest.spyOn(modalService, 'open');
+ component.showGitDiff({} as unknown as ProgrammingExerciseGitDiffReport);
+ expect(modalSpy).toHaveBeenCalledOnce();
+ });
+
+ it('should not open git diff modal', () => {
+ const modalSpy = jest.spyOn(modalService, 'open');
+ component.showGitDiff(undefined);
+ expect(modalSpy).not.toHaveBeenCalled();
+ });
+});
diff --git a/src/test/javascript/spec/component/shared/confirm-entity-name.component.spec.ts b/src/test/javascript/spec/component/shared/confirm-entity-name.component.spec.ts
index 2e37c1da4eeb..17625d2a357b 100644
--- a/src/test/javascript/spec/component/shared/confirm-entity-name.component.spec.ts
+++ b/src/test/javascript/spec/component/shared/confirm-entity-name.component.spec.ts
@@ -65,8 +65,8 @@ describe('ConfirmEntityNameComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
- imports: [FormsModule, ReactiveFormsModule],
- declarations: [ConfirmEntityNameComponent, TranslateDirective],
+ imports: [FormsModule, ReactiveFormsModule, TranslateDirective],
+ declarations: [ConfirmEntityNameComponent],
providers: [{ provide: TranslateService, useClass: MockTranslateService }],
}).compileComponents();
fixture = TestBed.createComponent(ConfirmEntityNameComponent);
diff --git a/src/test/javascript/spec/component/utils/item-count.component.spec.ts b/src/test/javascript/spec/component/utils/item-count.component.spec.ts
index ce6eb7b7dbab..7d04df08102d 100644
--- a/src/test/javascript/spec/component/utils/item-count.component.spec.ts
+++ b/src/test/javascript/spec/component/utils/item-count.component.spec.ts
@@ -9,8 +9,8 @@ describe('ItemCountComponent test', () => {
beforeEach(() => {
TestBed.configureTestingModule({
- imports: [TranslateModule.forRoot()],
- declarations: [ItemCountComponent, TranslateDirective],
+ imports: [TranslateModule.forRoot(), TranslateDirective],
+ declarations: [ItemCountComponent],
})
.compileComponents()
.then(() => {
diff --git a/src/test/javascript/spec/util/shared/translate.directive.spec.ts b/src/test/javascript/spec/util/shared/translate.directive.spec.ts
index 7181c3fa07cb..c40004dc7410 100644
--- a/src/test/javascript/spec/util/shared/translate.directive.spec.ts
+++ b/src/test/javascript/spec/util/shared/translate.directive.spec.ts
@@ -8,14 +8,14 @@ import { TranslateDirective } from 'app/shared/language/translate.directive';
})
class TestTranslateDirectiveComponent {}
-describe('TranslateDirective Tests', () => {
+describe('TranslateDirective', () => {
let fixture: ComponentFixture;
let translateService: TranslateService;
beforeEach(() => {
TestBed.configureTestingModule({
- imports: [TranslateModule.forRoot()],
- declarations: [TranslateDirective, TestTranslateDirectiveComponent],
+ imports: [TranslateModule.forRoot(), TranslateDirective],
+ declarations: [TestTranslateDirectiveComponent],
})
.compileComponents()
.then(() => {