From 2e5ebe518472dbb4b8378b02992e90df26616bba Mon Sep 17 00:00:00 2001 From: Stephan Krusche Date: Mon, 7 Oct 2024 00:19:08 +0200 Subject: [PATCH 1/4] Development: Bump version to 7.6.0 --- README.md | 2 +- build.gradle | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9b6118e0fe28..08742f5d89b5 100644 --- a/README.md +++ b/README.md @@ -193,7 +193,7 @@ Refer to [Using JHipster in production](http://www.jhipster.tech/production) for The following command can automate the deployment to a server. The example shows the deployment to the main Artemis test server (which runs a virtual machine): ```shell -./artemis-server-cli deploy username@artemistest.ase.in.tum.de -w build/libs/Artemis-7.5.6.war +./artemis-server-cli deploy username@artemistest.ase.in.tum.de -w build/libs/Artemis-7.6.0.war ``` ## Architecture diff --git a/build.gradle b/build.gradle index 676cfebf43b5..29da90bf3674 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ plugins { } group = "de.tum.cit.aet.artemis" -version = "7.5.6" +version = "7.6.0" description = "Interactive Learning with Individual Feedback" java { diff --git a/package-lock.json b/package-lock.json index a2461a534559..c72840ee901d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "artemis", - "version": "7.5.6", + "version": "7.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "artemis", - "version": "7.5.6", + "version": "7.6.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 2f6fd60de057..dfe192b8d21b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "artemis", - "version": "7.5.6", + "version": "7.6.0", "description": "Interactive Learning with Individual Feedback", "private": true, "license": "MIT", From a0f7fd884e215cc8c20a825fa8645b1977e3543e Mon Sep 17 00:00:00 2001 From: Maximilian Anzinger <44003963+MaximilianAnzinger@users.noreply.github.com> Date: Mon, 7 Oct 2024 20:20:43 +0200 Subject: [PATCH 2/4] Development: Refactor file upload tests (#9415) --- .../AbstractFileUploadIntegrationTest.java | 81 +++++++++++++++++++ .../FileUploadAssessmentIntegrationTest.java | 42 +--------- .../FileUploadExerciseIntegrationTest.java | 44 +--------- .../FileUploadSubmissionIntegrationTest.java | 24 +----- .../FileUploadTestArchitectureTest.java | 17 ++++ 5 files changed, 102 insertions(+), 106 deletions(-) create mode 100644 src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java create mode 100644 src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java diff --git a/src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java new file mode 100644 index 000000000000..6c6ff7719640 --- /dev/null +++ b/src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java @@ -0,0 +1,81 @@ +package de.tum.cit.aet.artemis.fileupload; + +import org.springframework.beans.factory.annotation.Autowired; + +import de.tum.cit.aet.artemis.assessment.repository.ComplaintRepository; +import de.tum.cit.aet.artemis.assessment.repository.FeedbackRepository; +import de.tum.cit.aet.artemis.assessment.repository.GradingCriterionRepository; +import de.tum.cit.aet.artemis.assessment.util.ComplaintUtilService; +import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyUtilService; +import de.tum.cit.aet.artemis.communication.repository.conversation.ChannelRepository; +import de.tum.cit.aet.artemis.core.util.PageableSearchUtilService; +import de.tum.cit.aet.artemis.exam.repository.ExamRepository; +import de.tum.cit.aet.artemis.exam.util.ExamUtilService; +import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.exercise.test_repository.ParticipationTestRepository; +import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; +import de.tum.cit.aet.artemis.exercise.test_repository.SubmissionTestRepository; +import de.tum.cit.aet.artemis.fileupload.repository.FileUploadExerciseRepository; +import de.tum.cit.aet.artemis.fileupload.repository.FileUploadSubmissionRepository; +import de.tum.cit.aet.artemis.fileupload.util.FileUploadExerciseUtilService; +import de.tum.cit.aet.artemis.modeling.util.ModelingExerciseUtilService; +import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; + +public class AbstractFileUploadIntegrationTest extends AbstractSpringIntegrationIndependentTest { + + // Repositories + @Autowired + protected FileUploadExerciseRepository fileUploadExerciseRepository; + + // External Repositories + @Autowired + protected ComplaintRepository complaintRepository; + + @Autowired + protected SubmissionTestRepository submissionRepository; + + @Autowired + protected ExamRepository examRepository; + + @Autowired + protected StudentParticipationTestRepository studentParticipationRepository; + + @Autowired + protected FeedbackRepository feedbackRepository; + + @Autowired + protected GradingCriterionRepository gradingCriterionRepository; + + @Autowired + protected ChannelRepository channelRepository; + + @Autowired + protected ParticipationTestRepository participationRepository; + + // Services + @Autowired + protected FileUploadSubmissionRepository fileUploadSubmissionRepository; + + // Util Services + @Autowired + protected FileUploadExerciseUtilService fileUploadExerciseUtilService; + + // External Util Services + @Autowired + protected ParticipationUtilService participationUtilService; + + @Autowired + protected ExamUtilService examUtilService; + + @Autowired + protected ComplaintUtilService complaintUtilService; + + @Autowired + protected PageableSearchUtilService pageableSearchUtilService; + + @Autowired + protected CompetencyUtilService competencyUtilService; + + @Autowired + protected ModelingExerciseUtilService modelingExerciseUtilService; +} diff --git a/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadAssessmentIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadAssessmentIntegrationTest.java index ca1177b834fb..763f80e3be0d 100644 --- a/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadAssessmentIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadAssessmentIntegrationTest.java @@ -17,7 +17,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; @@ -30,65 +29,28 @@ import de.tum.cit.aet.artemis.assessment.domain.FeedbackType; import de.tum.cit.aet.artemis.assessment.domain.Result; import de.tum.cit.aet.artemis.assessment.dto.AssessmentUpdateDTO; -import de.tum.cit.aet.artemis.assessment.repository.ComplaintRepository; -import de.tum.cit.aet.artemis.assessment.util.ComplaintUtilService; import de.tum.cit.aet.artemis.core.config.Constants; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.exam.domain.Exam; import de.tum.cit.aet.artemis.exam.domain.ExerciseGroup; -import de.tum.cit.aet.artemis.exam.repository.ExamRepository; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exercise.domain.Exercise; import de.tum.cit.aet.artemis.exercise.domain.IncludedInOverallScore; import de.tum.cit.aet.artemis.exercise.domain.Submission; import de.tum.cit.aet.artemis.exercise.domain.participation.Participation; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationFactory; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; -import de.tum.cit.aet.artemis.exercise.test_repository.SubmissionTestRepository; import de.tum.cit.aet.artemis.fileupload.domain.FileUploadExercise; import de.tum.cit.aet.artemis.fileupload.domain.FileUploadSubmission; import de.tum.cit.aet.artemis.fileupload.dto.FileUploadAssessmentDTO; -import de.tum.cit.aet.artemis.fileupload.repository.FileUploadExerciseRepository; import de.tum.cit.aet.artemis.fileupload.util.FileUploadExerciseFactory; -import de.tum.cit.aet.artemis.fileupload.util.FileUploadExerciseUtilService; import de.tum.cit.aet.artemis.programming.dto.ResultDTO; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class FileUploadAssessmentIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class FileUploadAssessmentIntegrationTest extends AbstractFileUploadIntegrationTest { private static final String TEST_PREFIX = "fileuploadassessment"; public static final String API_FILE_UPLOAD_SUBMISSIONS = "/api/file-upload-submissions/"; - @Autowired - private ComplaintRepository complaintRepo; - - @Autowired - private FileUploadExerciseRepository fileUploadExerciseRepository; - - @Autowired - private SubmissionTestRepository submissionRepository; - - @Autowired - private ExamRepository examRepository; - - @Autowired - private StudentParticipationTestRepository studentParticipationRepository; - - @Autowired - private FileUploadExerciseUtilService fileUploadExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private ExamUtilService examUtilService; - - @Autowired - private ComplaintUtilService complaintUtilService; - private FileUploadExercise afterReleaseFileUploadExercise; private Course course; @@ -206,7 +168,7 @@ void testUpdateFileUploadAssessmentAfterComplaint_studentHidden() throws Excepti Result fileUploadAssessment = fileUploadSubmission.getLatestResult(); Complaint complaint = new Complaint().result(fileUploadAssessment).complaintText("This is not fair"); - complaint = complaintRepo.save(complaint); + complaint = complaintRepository.save(complaint); complaint.getResult().setParticipation(null); // Break infinite reference chain ComplaintResponse complaintResponse = complaintUtilService.createInitialEmptyResponse(TEST_PREFIX + "tutor2", complaint); diff --git a/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadExerciseIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadExerciseIntegrationTest.java index 131eeaec747b..d1deb2f81694 100644 --- a/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadExerciseIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadExerciseIntegrationTest.java @@ -25,7 +25,6 @@ import org.junit.jupiter.params.provider.ArgumentsSource; import org.junit.jupiter.params.provider.NullSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -33,68 +32,27 @@ import de.tum.cit.aet.artemis.assessment.domain.GradingCriterion; import de.tum.cit.aet.artemis.assessment.domain.GradingInstruction; import de.tum.cit.aet.artemis.assessment.domain.Result; -import de.tum.cit.aet.artemis.assessment.repository.FeedbackRepository; -import de.tum.cit.aet.artemis.assessment.repository.GradingCriterionRepository; import de.tum.cit.aet.artemis.assessment.util.GradingCriterionUtil; -import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyUtilService; import de.tum.cit.aet.artemis.atlas.domain.competency.Competency; import de.tum.cit.aet.artemis.communication.domain.conversation.Channel; -import de.tum.cit.aet.artemis.communication.repository.conversation.ChannelRepository; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.dto.CourseForDashboardDTO; import de.tum.cit.aet.artemis.core.dto.SearchResultPageDTO; -import de.tum.cit.aet.artemis.core.util.PageableSearchUtilService; import de.tum.cit.aet.artemis.exam.domain.ExerciseGroup; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exam.util.InvalidExamExerciseDatesArgumentProvider; import de.tum.cit.aet.artemis.exam.util.InvalidExamExerciseDatesArgumentProvider.InvalidExamExerciseDateConfiguration; import de.tum.cit.aet.artemis.exercise.domain.Exercise; import de.tum.cit.aet.artemis.exercise.domain.IncludedInOverallScore; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationFactory; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; import de.tum.cit.aet.artemis.fileupload.domain.FileUploadExercise; import de.tum.cit.aet.artemis.fileupload.domain.FileUploadSubmission; -import de.tum.cit.aet.artemis.fileupload.repository.FileUploadExerciseRepository; import de.tum.cit.aet.artemis.fileupload.util.FileUploadExerciseFactory; -import de.tum.cit.aet.artemis.fileupload.util.FileUploadExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class FileUploadExerciseIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class FileUploadExerciseIntegrationTest extends AbstractFileUploadIntegrationTest { private static final String TEST_PREFIX = "fileuploaderxercise"; - @Autowired - private FeedbackRepository feedbackRepository; - - @Autowired - private GradingCriterionRepository gradingCriterionRepository; - - @Autowired - private FileUploadExerciseRepository fileUploadExerciseRepository; - - @Autowired - private StudentParticipationTestRepository studentParticipationRepository; - - @Autowired - private ChannelRepository channelRepository; - - @Autowired - private FileUploadExerciseUtilService fileUploadExerciseUtilService; - - @Autowired - private ExamUtilService examUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private PageableSearchUtilService pageableSearchUtilService; - - @Autowired - private CompetencyUtilService competencyUtilService; - private FileUploadExercise fileUploadExercise; private Course course; diff --git a/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadSubmissionIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadSubmissionIntegrationTest.java index 7d88ad1e0b01..645e472b4672 100644 --- a/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadSubmissionIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/fileupload/FileUploadSubmissionIntegrationTest.java @@ -19,7 +19,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.mock.web.MockMultipartFile; @@ -38,36 +37,15 @@ import de.tum.cit.aet.artemis.exercise.domain.participation.Participation; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationFactory; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.ParticipationTestRepository; import de.tum.cit.aet.artemis.fileupload.domain.FileUploadExercise; import de.tum.cit.aet.artemis.fileupload.domain.FileUploadSubmission; -import de.tum.cit.aet.artemis.fileupload.repository.FileUploadSubmissionRepository; -import de.tum.cit.aet.artemis.fileupload.util.FileUploadExerciseUtilService; import de.tum.cit.aet.artemis.modeling.domain.ModelingExercise; import de.tum.cit.aet.artemis.modeling.domain.ModelingSubmission; -import de.tum.cit.aet.artemis.modeling.util.ModelingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class FileUploadSubmissionIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class FileUploadSubmissionIntegrationTest extends AbstractFileUploadIntegrationTest { private static final String TEST_PREFIX = "fileuploadsubmission"; - @Autowired - private FileUploadSubmissionRepository fileUploadSubmissionRepository; - - @Autowired - private ParticipationTestRepository participationRepository; - - @Autowired - private FileUploadExerciseUtilService fileUploadExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private ModelingExerciseUtilService modelingExerciseUtilService; - private FileUploadExercise releasedFileUploadExercise; private FileUploadExercise finishedFileUploadExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java b/src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java new file mode 100644 index 000000000000..f67db93f311f --- /dev/null +++ b/src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java @@ -0,0 +1,17 @@ +package de.tum.cit.aet.artemis.fileupload.architecture; + +import de.tum.cit.aet.artemis.fileupload.AbstractFileUploadIntegrationTest; +import de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleTestArchitectureTest; + +class FileUploadTestArchitectureTest extends AbstractModuleTestArchitectureTest { + + @Override + public String getModulePackage() { + return ARTEMIS_PACKAGE + ".fileupload"; + } + + @Override + protected Class getAbstractModuleIntegrationTestClass() { + return AbstractFileUploadIntegrationTest.class; + } +} From 1b12f3e4fa844b19109d9b5d8bfcc7368fc67640 Mon Sep 17 00:00:00 2001 From: Patrik Zander <38403547+pzdr7@users.noreply.github.com> Date: Mon, 7 Oct 2024 20:56:41 +0200 Subject: [PATCH 3/4] Development: Migrate the MonacoEditorModule to standalone components (#9407) --- .../git-diff-report/git-diff-report.module.ts | 4 +- .../testwise-coverage-report.module.ts | 4 +- .../programming-exercise-management.module.ts | 4 +- .../programming-exercise-update.module.ts | 4 +- .../shared/code-editor/code-editor.module.ts | 4 +- .../shared/exercise-hint-shared.module.ts | 4 +- .../markdown-editor/markdown-editor.module.ts | 4 +- .../monaco-diff-editor.component.ts | 78 +++------ .../monaco-editor/monaco-editor.component.ts | 157 ++++++++---------- .../monaco-editor/monaco-editor.module.ts | 16 -- .../monaco-editor/monaco-editor.service.ts | 84 ++++++++++ .../code-editor-monaco.component.spec.ts | 10 +- .../git-diff-file.component.spec.ts | 4 +- ...custom-aeolus-build-plan.component.spec.ts | 25 +-- ...ercise-custom-build-plan.component.spec.ts | 24 +-- .../monaco-diff-editor.component.spec.ts | 24 +-- ...aco-editor-action-quiz.integration.spec.ts | 5 +- .../monaco-editor-action.integration.spec.ts | 5 +- ...r-communication-action.integration.spec.ts | 3 +- ...r-grading-instructions.integration.spec.ts | 4 +- .../monaco-editor.component.spec.ts | 59 ++----- .../monaco-editor.service.spec.ts | 69 ++++++++ .../code-editor-container.integration.spec.ts | 7 +- 23 files changed, 308 insertions(+), 294 deletions(-) delete mode 100644 src/main/webapp/app/shared/monaco-editor/monaco-editor.module.ts create mode 100644 src/main/webapp/app/shared/monaco-editor/monaco-editor.service.ts create mode 100644 src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.service.spec.ts diff --git a/src/main/webapp/app/exercises/programming/hestia/git-diff-report/git-diff-report.module.ts b/src/main/webapp/app/exercises/programming/hestia/git-diff-report/git-diff-report.module.ts index d72ed6f72de0..17b5682de4cb 100644 --- a/src/main/webapp/app/exercises/programming/hestia/git-diff-report/git-diff-report.module.ts +++ b/src/main/webapp/app/exercises/programming/hestia/git-diff-report/git-diff-report.module.ts @@ -6,12 +6,12 @@ import { GitDiffFileComponent } from 'app/exercises/programming/hestia/git-diff- import { GitDiffReportModalComponent } from 'app/exercises/programming/hestia/git-diff-report/git-diff-report-modal.component'; import { GitDiffFilePanelComponent } from 'app/exercises/programming/hestia/git-diff-report/git-diff-file-panel.component'; import { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { GitDiffFilePanelTitleComponent } from 'app/exercises/programming/hestia/git-diff-report/git-diff-file-panel-title.component'; import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; +import { MonacoDiffEditorComponent } from 'app/shared/monaco-editor/monaco-diff-editor.component'; @NgModule({ - imports: [ArtemisSharedModule, NgbAccordionModule, MonacoEditorModule, ArtemisSharedComponentModule], + imports: [ArtemisSharedModule, NgbAccordionModule, MonacoDiffEditorComponent, ArtemisSharedComponentModule], declarations: [GitDiffFilePanelComponent, GitDiffFilePanelTitleComponent, GitDiffReportComponent, GitDiffFileComponent, GitDiffReportModalComponent, GitDiffLineStatComponent], exports: [GitDiffReportComponent, GitDiffReportModalComponent, GitDiffLineStatComponent], }) diff --git a/src/main/webapp/app/exercises/programming/hestia/testwise-coverage-report/testwise-coverage-report.module.ts b/src/main/webapp/app/exercises/programming/hestia/testwise-coverage-report/testwise-coverage-report.module.ts index 04e5a60b0ad6..c37bc7a255da 100644 --- a/src/main/webapp/app/exercises/programming/hestia/testwise-coverage-report/testwise-coverage-report.module.ts +++ b/src/main/webapp/app/exercises/programming/hestia/testwise-coverage-report/testwise-coverage-report.module.ts @@ -4,10 +4,10 @@ import { TestwiseCoverageReportModalComponent } from 'app/exercises/programming/ import { TestwiseCoverageReportComponent } from 'app/exercises/programming/hestia/testwise-coverage-report/testwise-coverage-report.component'; import { TestwiseCoverageFileComponent } from 'app/exercises/programming/hestia/testwise-coverage-report/testwise-coverage-file.component'; import { MatExpansionModule } from '@angular/material/expansion'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; +import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; @NgModule({ - imports: [ArtemisSharedModule, MatExpansionModule, MonacoEditorModule], + imports: [ArtemisSharedModule, MatExpansionModule, MonacoEditorComponent], declarations: [TestwiseCoverageFileComponent, TestwiseCoverageReportComponent, TestwiseCoverageReportModalComponent], exports: [TestwiseCoverageFileComponent, TestwiseCoverageReportModalComponent, TestwiseCoverageReportComponent], }) diff --git a/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.module.ts b/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.module.ts index 1cb726111a17..ce2056d24a44 100644 --- a/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.module.ts +++ b/src/main/webapp/app/exercises/programming/manage/programming-exercise-management.module.ts @@ -28,7 +28,7 @@ import { ArtemisCodeEditorModule } from 'app/exercises/programming/shared/code-e import { DetailModule } from 'app/detail-overview-list/detail.module'; import { IrisModule } from 'app/iris/iris.module'; import { ArtemisExerciseModule } from 'app/exercises/shared/exercise/exercise.module'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; +import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; @NgModule({ imports: [ @@ -56,7 +56,7 @@ import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.modul ArtemisExerciseModule, DetailModule, IrisModule, - MonacoEditorModule, + MonacoEditorComponent, ], declarations: [ ProgrammingExerciseDetailComponent, diff --git a/src/main/webapp/app/exercises/programming/manage/update/programming-exercise-update.module.ts b/src/main/webapp/app/exercises/programming/manage/update/programming-exercise-update.module.ts index e3df242248bd..0a2fa9061344 100644 --- a/src/main/webapp/app/exercises/programming/manage/update/programming-exercise-update.module.ts +++ b/src/main/webapp/app/exercises/programming/manage/update/programming-exercise-update.module.ts @@ -32,7 +32,7 @@ import { FormsModule } from 'app/forms/forms.module'; import { ProgrammingExerciseBuildPlanCheckoutDirectoriesComponent } from 'app/exercises/programming/shared/build-details/programming-exercise-build-plan-checkout-directories.component'; import { ProgrammingExerciseRepositoryAndBuildPlanDetailsComponent } from 'app/exercises/programming/shared/build-details/programming-exercise-repository-and-build-plan-details.component'; import { ProgrammingExerciseTheiaComponent } from 'app/exercises/programming/manage/update/update-components/theia/programming-exercise-theia.component'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; +import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; @NgModule({ imports: [ @@ -57,7 +57,7 @@ import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.modul FormsModule, ProgrammingExerciseBuildPlanCheckoutDirectoriesComponent, ProgrammingExerciseRepositoryAndBuildPlanDetailsComponent, - MonacoEditorModule, + MonacoEditorComponent, ProgrammingExerciseTheiaComponent, ], declarations: [ diff --git a/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts b/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts index 7b23b4959793..49583cbc95d4 100644 --- a/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts +++ b/src/main/webapp/app/exercises/programming/shared/code-editor/code-editor.module.ts @@ -21,9 +21,9 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { TreeviewModule } from 'app/exercises/programming/shared/code-editor/treeview/treeview.module'; import { CodeEditorHeaderComponent } from 'app/exercises/programming/shared/code-editor/header/code-editor-header.component'; import { CodeEditorFileBrowserBadgeComponent } from 'app/exercises/programming/shared/code-editor/file-browser/code-editor-file-browser-badge.component'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { CodeEditorMonacoComponent } from 'app/exercises/programming/shared/code-editor/monaco/code-editor-monaco.component'; import { ArtemisSharedComponentModule } from 'app/shared/components/shared-component.module'; +import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; @NgModule({ imports: [ @@ -33,7 +33,7 @@ import { ArtemisSharedComponentModule } from 'app/shared/components/shared-compo TreeviewModule.forRoot(), ArtemisProgrammingExerciseInstructionsEditorModule, ArtemisProgrammingManualAssessmentModule, - MonacoEditorModule, + MonacoEditorComponent, ArtemisSharedComponentModule, ], declarations: [ diff --git a/src/main/webapp/app/exercises/shared/exercise-hint/shared/exercise-hint-shared.module.ts b/src/main/webapp/app/exercises/shared/exercise-hint/shared/exercise-hint-shared.module.ts index ef5dd4dce389..08a2b1c8ee07 100644 --- a/src/main/webapp/app/exercises/shared/exercise-hint/shared/exercise-hint-shared.module.ts +++ b/src/main/webapp/app/exercises/shared/exercise-hint/shared/exercise-hint-shared.module.ts @@ -4,10 +4,10 @@ import { CastToCodeHintPipe } from 'app/exercises/shared/exercise-hint/services/ import { SolutionEntryComponent } from 'app/exercises/shared/exercise-hint/shared/solution-entry.component'; import { CodeHintContainerComponent } from 'app/exercises/shared/exercise-hint/shared/code-hint-container.component'; import { ArtemisMarkdownModule } from 'app/shared/markdown.module'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; +import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; @NgModule({ - imports: [ArtemisSharedModule, ArtemisMarkdownModule, MonacoEditorModule], + imports: [ArtemisSharedModule, ArtemisMarkdownModule, MonacoEditorComponent], declarations: [SolutionEntryComponent, CodeHintContainerComponent, CastToCodeHintPipe], exports: [SolutionEntryComponent, CodeHintContainerComponent, CastToCodeHintPipe], }) diff --git a/src/main/webapp/app/shared/markdown-editor/markdown-editor.module.ts b/src/main/webapp/app/shared/markdown-editor/markdown-editor.module.ts index 198dad328789..a911ddf74ceb 100644 --- a/src/main/webapp/app/shared/markdown-editor/markdown-editor.module.ts +++ b/src/main/webapp/app/shared/markdown-editor/markdown-editor.module.ts @@ -5,11 +5,11 @@ import { ArtemisSharedModule } from 'app/shared/shared.module'; import { MatMenuModule } from '@angular/material/menu'; import { MatButtonModule } from '@angular/material/button'; import { MarkdownEditorMonacoComponent } from 'app/shared/markdown-editor/monaco/markdown-editor-monaco.component'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { DragDropModule } from '@angular/cdk/drag-drop'; +import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; @NgModule({ - imports: [ArtemisSharedModule, MonacoEditorModule, FormsModule, ArtemisColorSelectorModule, MatMenuModule, MatButtonModule, DragDropModule], + imports: [ArtemisSharedModule, MonacoEditorComponent, FormsModule, ArtemisColorSelectorModule, MatMenuModule, MatButtonModule, DragDropModule], declarations: [MarkdownEditorMonacoComponent], exports: [MarkdownEditorMonacoComponent], }) diff --git a/src/main/webapp/app/shared/monaco-editor/monaco-diff-editor.component.ts b/src/main/webapp/app/shared/monaco-editor/monaco-diff-editor.component.ts index dd5b624d6554..8cb86be9a233 100644 --- a/src/main/webapp/app/shared/monaco-editor/monaco-diff-editor.component.ts +++ b/src/main/webapp/app/shared/monaco-editor/monaco-diff-editor.component.ts @@ -1,68 +1,55 @@ -import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation } from '@angular/core'; -import { Theme, ThemeService } from 'app/core/theme/theme.service'; +import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2, ViewEncapsulation, effect, inject, input, output } from '@angular/core'; import * as monaco from 'monaco-editor'; -import { Subscription } from 'rxjs'; import { Disposable } from 'app/shared/monaco-editor/model/actions/monaco-editor.util'; +import { MonacoEditorService } from './monaco-editor.service'; export type MonacoEditorDiffText = { original: string; modified: string }; @Component({ selector: 'jhi-monaco-diff-editor', template: '', + standalone: true, styleUrls: ['monaco-diff-editor.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, }) export class MonacoDiffEditorComponent implements OnInit, OnDestroy { private _editor: monaco.editor.IStandaloneDiffEditor; monacoDiffEditorContainerElement: HTMLElement; - themeSubscription?: Subscription; + + allowSplitView = input(true); + onReadyForDisplayChange = output(); + + /* + * Subscriptions and listeners that need to be disposed of when this component is destroyed. + */ listeners: Disposable[] = []; resizeObserver?: ResizeObserver; - @Input() - set allowSplitView(value: boolean) { - this._editor.updateOptions({ - renderSideBySide: value, - }); - } - - @Output() - onReadyForDisplayChange = new EventEmitter(); + /* + * Injected services and elements. + */ + private readonly elementRef = inject(ElementRef); + private readonly renderer = inject(Renderer2); + private readonly monacoEditorService = inject(MonacoEditorService); - constructor( - private themeService: ThemeService, - elementRef: ElementRef, - renderer: Renderer2, - ) { + constructor() { /* * The constructor injects the editor along with its container into the empty template of this component. * This makes the editor available immediately (not just after ngOnInit), preventing errors when the methods * of this component are called. */ - this.monacoDiffEditorContainerElement = renderer.createElement('div'); - this._editor = monaco.editor.createDiffEditor(this.monacoDiffEditorContainerElement, { - glyphMargin: true, - minimap: { enabled: false }, - readOnly: true, - renderSideBySide: true, - scrollBeyondLastLine: false, - stickyScroll: { - enabled: false, - }, - renderOverviewRuler: false, - scrollbar: { - vertical: 'hidden', - handleMouseWheel: true, - alwaysConsumeMouseWheel: false, - }, - hideUnchangedRegions: { - enabled: true, - }, - fontSize: 12, - }); - renderer.appendChild(elementRef.nativeElement, this.monacoDiffEditorContainerElement); + this.monacoDiffEditorContainerElement = this.renderer.createElement('div'); + this._editor = this.monacoEditorService.createStandaloneDiffEditor(this.monacoDiffEditorContainerElement); + this.renderer.appendChild(this.elementRef.nativeElement, this.monacoDiffEditorContainerElement); this.setupDiffListener(); this.setupContentHeightListeners(); + + effect(() => { + this._editor.updateOptions({ + renderSideBySide: this.allowSplitView(), + }); + }); } ngOnInit(): void { @@ -70,11 +57,9 @@ export class MonacoDiffEditorComponent implements OnInit, OnDestroy { this.layout(); }); this.resizeObserver.observe(this.monacoDiffEditorContainerElement); - this.themeSubscription = this.themeService.getCurrentThemeObservable().subscribe((theme) => this.changeTheme(theme)); } ngOnDestroy(): void { - this.themeSubscription?.unsubscribe(); this.resizeObserver?.disconnect(); this.listeners.forEach((listener) => { listener.dispose(); @@ -137,15 +122,6 @@ export class MonacoDiffEditorComponent implements OnInit, OnDestroy { this._editor.layout({ width, height }); } - /** - * Sets the theme of all Monaco editors according to the Artemis theme. - * As of now, it is not possible to have two editors with different themes. - * @param artemisTheme The active Artemis theme. - */ - changeTheme(artemisTheme: Theme): void { - monaco.editor.setTheme(artemisTheme === Theme.DARK ? 'vs-dark' : 'vs-light'); - } - /** * Updates the files displayed in this editor. When this happens, {@link onReadyForDisplayChange} will signal that the editor is not * ready to display the diff (as it must be computed first). This will later be change by the appropriate listener. diff --git a/src/main/webapp/app/shared/monaco-editor/monaco-editor.component.ts b/src/main/webapp/app/shared/monaco-editor/monaco-editor.component.ts index a0e28544e914..b9138398fcee 100644 --- a/src/main/webapp/app/shared/monaco-editor/monaco-editor.component.ts +++ b/src/main/webapp/app/shared/monaco-editor/monaco-editor.component.ts @@ -1,7 +1,5 @@ -import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewEncapsulation } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2, ViewEncapsulation, effect, inject, input, output } from '@angular/core'; import * as monaco from 'monaco-editor'; -import { Subscription } from 'rxjs'; -import { Theme, ThemeService } from 'app/core/theme/theme.service'; import { MonacoEditorLineWidget } from 'app/shared/monaco-editor/model/monaco-editor-inline-widget.model'; import { MonacoEditorBuildAnnotation, MonacoEditorBuildAnnotationType } from 'app/shared/monaco-editor/model/monaco-editor-build-annotation.model'; import { MonacoEditorLineHighlight } from 'app/shared/monaco-editor/model/monaco-editor-line-highlight.model'; @@ -12,107 +10,98 @@ import { TranslateService } from '@ngx-translate/core'; import { MonacoEditorOptionPreset } from 'app/shared/monaco-editor/model/monaco-editor-option-preset.model'; import { Disposable, EditorPosition, EditorRange, MonacoEditorTextModel } from 'app/shared/monaco-editor/model/actions/monaco-editor.util'; import { MonacoTextEditorAdapter } from 'app/shared/monaco-editor/model/actions/adapter/monaco-text-editor.adapter'; +import { MonacoEditorService } from 'app/shared/monaco-editor/monaco-editor.service'; export const MAX_TAB_SIZE = 8; @Component({ selector: 'jhi-monaco-editor', template: '', + standalone: true, styleUrls: ['monaco-editor.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, }) export class MonacoEditorComponent implements OnInit, OnDestroy { - private _editor: monaco.editor.IStandaloneCodeEditor; - private textEditorAdapter: MonacoTextEditorAdapter; - private monacoEditorContainerElement: HTMLElement; - themeSubscription?: Subscription; + /** + * The default width of the line decoration button in the editor. We use the ch unit to avoid fixed pixel sizes. + * @private + */ + private static readonly DEFAULT_LINE_DECORATION_BUTTON_WIDTH = '2.3ch'; + private static readonly SHRINK_TO_FIT_CLASS = 'monaco-shrink-to-fit'; + + private readonly _editor: monaco.editor.IStandaloneCodeEditor; + private readonly textEditorAdapter: MonacoTextEditorAdapter; + private readonly monacoEditorContainerElement: HTMLElement; + + /* + * Elements, models, and actions of the editor. + */ models: MonacoEditorTextModel[] = []; lineWidgets: MonacoEditorLineWidget[] = []; - editorBuildAnnotations: MonacoEditorBuildAnnotation[] = []; + buildAnnotations: MonacoEditorBuildAnnotation[] = []; lineHighlights: MonacoEditorLineHighlight[] = []; actions: TextEditorAction[] = []; lineDecorationsHoverButton?: MonacoEditorLineDecorationsHoverButton; - /** - * The default width of the line decoration button in the editor. We use the ch unit to avoid fixed pixel sizes. - * @private + /* + * Inputs and outputs. */ - private static readonly DEFAULT_LINE_DECORATION_BUTTON_WIDTH = '2.3ch'; + textChangedEmitDelay = input(); + shrinkToFit = input(true); + stickyScroll = input(false); + readOnly = input(false); - constructor( - private readonly themeService: ThemeService, - elementRef: ElementRef, - private readonly renderer: Renderer2, - private readonly translateService: TranslateService, - ) { + textChanged = output(); + contentHeightChanged = output(); + onBlurEditor = output(); + + /* + * Disposable listeners, subscriptions, and timeouts. + */ + private contentHeightListener?: Disposable; + private textChangedListener?: Disposable; + private blurEditorWidgetListener?: Disposable; + private textChangedEmitTimeout?: NodeJS.Timeout; + + /* + * Injected services and elements. + */ + private readonly renderer = inject(Renderer2); + private readonly translateService = inject(TranslateService); + private readonly elementRef = inject(ElementRef); + private readonly monacoEditorService = inject(MonacoEditorService); + + constructor() { /* * The constructor injects the editor along with its container into the empty template of this component. * This makes the editor available immediately (not just after ngOnInit), preventing errors when the methods * of this component are called. */ - this.monacoEditorContainerElement = renderer.createElement('div'); - renderer.addClass(this.monacoEditorContainerElement, 'monaco-editor-container'); - renderer.addClass(this.monacoEditorContainerElement, 'monaco-shrink-to-fit'); - this._editor = monaco.editor.create(this.monacoEditorContainerElement, { - value: '', - glyphMargin: true, - minimap: { enabled: false }, - readOnly: this._readOnly, - lineNumbersMinChars: 4, - scrollBeyondLastLine: false, - scrollbar: { - alwaysConsumeMouseWheel: false, // Prevents the editor from consuming the mouse wheel event, allowing the parent element to scroll. - }, - }); - this._editor.getModel()?.setEOL(monaco.editor.EndOfLineSequence.LF); + this.monacoEditorContainerElement = this.renderer.createElement('div'); + this.renderer.addClass(this.monacoEditorContainerElement, 'monaco-editor-container'); + this.renderer.addClass(this.monacoEditorContainerElement, MonacoEditorComponent.SHRINK_TO_FIT_CLASS); + this._editor = this.monacoEditorService.createStandaloneCodeEditor(this.monacoEditorContainerElement); this.textEditorAdapter = new MonacoTextEditorAdapter(this._editor); - renderer.appendChild(elementRef.nativeElement, this.monacoEditorContainerElement); - } - - @Input() - textChangedEmitDelay?: number; - - // TODO: The CSS class below allows the editor to shrink in the CodeEditorContainerComponent. We should eventually remove this class and handle the editor size differently in the code editor grid. - @Input() - set shrinkToFit(value: boolean) { - if (value) { - this.renderer.addClass(this.monacoEditorContainerElement, 'monaco-shrink-to-fit'); - } else { - this.renderer.removeClass(this.monacoEditorContainerElement, 'monaco-shrink-to-fit'); - } - } - - @Input() - set stickyScroll(value: boolean) { - this._editor.updateOptions({ - stickyScroll: { enabled: value }, + this.renderer.appendChild(this.elementRef.nativeElement, this.monacoEditorContainerElement); + + effect(() => { + // TODO: The CSS class below allows the editor to shrink in the CodeEditorContainerComponent. We should eventually remove this class and handle the editor size differently in the code editor grid. + if (this.shrinkToFit()) { + this.renderer.addClass(this.monacoEditorContainerElement, MonacoEditorComponent.SHRINK_TO_FIT_CLASS); + } else { + this.renderer.removeClass(this.monacoEditorContainerElement, MonacoEditorComponent.SHRINK_TO_FIT_CLASS); + } }); - } - @Input() - set readOnly(value: boolean) { - this._readOnly = value; - this._editor.updateOptions({ - readOnly: value, + effect(() => { + this._editor.updateOptions({ + stickyScroll: { enabled: this.stickyScroll() }, + readOnly: this.readOnly(), + }); }); } - private _readOnly: boolean = false; - - @Output() - textChanged = new EventEmitter(); - - @Output() - contentHeightChanged = new EventEmitter(); - - @Output() - onBlurEditor = new EventEmitter(); - - private contentHeightListener?: Disposable; - private textChangedListener?: Disposable; - private blurEditorWidgetListener?: Disposable; - private textChangedEmitTimeout?: NodeJS.Timeout; - ngOnInit(): void { const resizeObserver = new ResizeObserver(() => { this._editor.layout(); @@ -132,14 +121,11 @@ export class MonacoEditorComponent implements OnInit, OnDestroy { this.blurEditorWidgetListener = this._editor.onDidBlurEditorWidget(() => { this.onBlurEditor.emit(); }); - - this.themeSubscription = this.themeService.getCurrentThemeObservable().subscribe((theme) => this.changeTheme(theme)); } ngOnDestroy() { this.reset(); this._editor.dispose(); - this.themeSubscription?.unsubscribe(); this.textChangedListener?.dispose(); this.contentHeightListener?.dispose(); this.blurEditorWidgetListener?.dispose(); @@ -147,7 +133,8 @@ export class MonacoEditorComponent implements OnInit, OnDestroy { private emitTextChangeEvent() { const newValue = this.getText(); - if (!this.textChangedEmitDelay) { + const delay = this.textChangedEmitDelay(); + if (!delay) { this.textChanged.emit(newValue); } else { if (this.textChangedEmitTimeout) { @@ -156,7 +143,7 @@ export class MonacoEditorComponent implements OnInit, OnDestroy { } this.textChangedEmitTimeout = setTimeout(() => { this.textChanged.emit(newValue); - }, this.textChangedEmitDelay); + }, delay); } } @@ -268,10 +255,10 @@ export class MonacoEditorComponent implements OnInit, OnDestroy { } disposeAnnotations() { - this.editorBuildAnnotations.forEach((o) => { + this.buildAnnotations.forEach((o) => { o.dispose(); }); - this.editorBuildAnnotations = []; + this.buildAnnotations = []; } disposeLineHighlights(): void { @@ -288,10 +275,6 @@ export class MonacoEditorComponent implements OnInit, OnDestroy { this.actions = []; } - changeTheme(artemisTheme: Theme): void { - monaco.editor.setTheme(artemisTheme === Theme.DARK ? 'vs-dark' : 'vs-light'); - } - layout(): void { this._editor.layout(); } @@ -325,7 +308,7 @@ export class MonacoEditorComponent implements OnInit, OnDestroy { ); editorBuildAnnotation.addToEditor(); editorBuildAnnotation.setOutdatedAndUpdate(outdated); - this.editorBuildAnnotations.push(editorBuildAnnotation); + this.buildAnnotations.push(editorBuildAnnotation); } } diff --git a/src/main/webapp/app/shared/monaco-editor/monaco-editor.module.ts b/src/main/webapp/app/shared/monaco-editor/monaco-editor.module.ts deleted file mode 100644 index 88f841d9407a..000000000000 --- a/src/main/webapp/app/shared/monaco-editor/monaco-editor.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NgModule } from '@angular/core'; -import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; -import { MonacoDiffEditorComponent } from 'app/shared/monaco-editor/monaco-diff-editor.component'; -import { CUSTOM_MARKDOWN_CONFIG, CUSTOM_MARKDOWN_LANGUAGE, CUSTOM_MARKDOWN_LANGUAGE_ID } from 'app/shared/monaco-editor/model/languages/monaco-custom-markdown.language'; - -import * as monaco from 'monaco-editor'; - -monaco.languages.register({ id: CUSTOM_MARKDOWN_LANGUAGE_ID }); -monaco.languages.setLanguageConfiguration(CUSTOM_MARKDOWN_LANGUAGE_ID, CUSTOM_MARKDOWN_CONFIG); -monaco.languages.setMonarchTokensProvider(CUSTOM_MARKDOWN_LANGUAGE_ID, CUSTOM_MARKDOWN_LANGUAGE); - -@NgModule({ - declarations: [MonacoEditorComponent, MonacoDiffEditorComponent], - exports: [MonacoEditorComponent, MonacoDiffEditorComponent], -}) -export class MonacoEditorModule {} diff --git a/src/main/webapp/app/shared/monaco-editor/monaco-editor.service.ts b/src/main/webapp/app/shared/monaco-editor/monaco-editor.service.ts new file mode 100644 index 000000000000..0d00d81300a3 --- /dev/null +++ b/src/main/webapp/app/shared/monaco-editor/monaco-editor.service.ts @@ -0,0 +1,84 @@ +import { Injectable, effect, inject } from '@angular/core'; +import * as monaco from 'monaco-editor'; +import { CUSTOM_MARKDOWN_CONFIG, CUSTOM_MARKDOWN_LANGUAGE, CUSTOM_MARKDOWN_LANGUAGE_ID } from 'app/shared/monaco-editor/model/languages/monaco-custom-markdown.language'; +import { Theme, ThemeService } from 'app/core/theme/theme.service'; +import { toSignal } from '@angular/core/rxjs-interop'; + +/** + * Service providing shared functionality for the Monaco editor. + * This service is intended to be used by components that need to create and manage Monaco editors. + * It also ensures that the editor's theme matches the current theme of Artemis. + */ +@Injectable({ providedIn: 'root' }) +export class MonacoEditorService { + static readonly LIGHT_THEME_ID = 'vs'; + static readonly DARK_THEME_ID = 'vs-dark'; + + private readonly themeService: ThemeService = inject(ThemeService); + private readonly currentTheme = toSignal(this.themeService.getCurrentThemeObservable(), { requireSync: true }); + + constructor() { + monaco.languages.register({ id: CUSTOM_MARKDOWN_LANGUAGE_ID }); + monaco.languages.setLanguageConfiguration(CUSTOM_MARKDOWN_LANGUAGE_ID, CUSTOM_MARKDOWN_CONFIG); + monaco.languages.setMonarchTokensProvider(CUSTOM_MARKDOWN_LANGUAGE_ID, CUSTOM_MARKDOWN_LANGUAGE); + + effect(() => { + this.applyTheme(this.currentTheme()); + }); + } + + /** + * Applies the given theme to the Monaco editor. + * @param artemisTheme The theme to apply. + * @private + */ + private applyTheme(artemisTheme: Theme): void { + monaco.editor.setTheme(artemisTheme === Theme.LIGHT ? MonacoEditorService.LIGHT_THEME_ID : MonacoEditorService.DARK_THEME_ID); + } + + /** + * Creates a standalone code editor (see {@link MonacoEditorComponent}) with sensible default settings and inserts it into the given DOM element. + * @param domElement The DOM element to insert the editor into. + */ + createStandaloneCodeEditor(domElement: HTMLElement): monaco.editor.IStandaloneCodeEditor { + const editor = monaco.editor.create(domElement, { + value: '', + glyphMargin: true, + minimap: { enabled: false }, + lineNumbersMinChars: 4, + scrollBeyondLastLine: false, + scrollbar: { + alwaysConsumeMouseWheel: false, // Prevents the editor from consuming the mouse wheel event, allowing the parent element to scroll. + }, + }); + editor.getModel()?.setEOL(monaco.editor.EndOfLineSequence.LF); + return editor; + } + + /** + * Creates a standalone diff editor (see {@link MonacoDiffEditorComponent}) with sensible default settings and inserts it into the given DOM element. + * @param domElement The DOM element to insert the editor into. + */ + createStandaloneDiffEditor(domElement: HTMLElement): monaco.editor.IStandaloneDiffEditor { + return monaco.editor.createDiffEditor(domElement, { + glyphMargin: true, + minimap: { enabled: false }, + readOnly: true, + renderSideBySide: true, + scrollBeyondLastLine: false, + stickyScroll: { + enabled: false, + }, + renderOverviewRuler: false, + scrollbar: { + vertical: 'hidden', + handleMouseWheel: true, + alwaysConsumeMouseWheel: false, + }, + hideUnchangedRegions: { + enabled: true, + }, + fontSize: 12, + }); + } +} diff --git a/src/test/javascript/spec/component/code-editor/code-editor-monaco.component.spec.ts b/src/test/javascript/spec/component/code-editor/code-editor-monaco.component.spec.ts index e6a35ac15468..df3b885c4a93 100644 --- a/src/test/javascript/spec/component/code-editor/code-editor-monaco.component.spec.ts +++ b/src/test/javascript/spec/component/code-editor/code-editor-monaco.component.spec.ts @@ -4,7 +4,6 @@ import { ArtemisTestModule } from '../../test.module'; import { Annotation, CodeEditorMonacoComponent } from 'app/exercises/programming/shared/code-editor/monaco/code-editor-monaco.component'; import { MockComponent } from 'ng-mocks'; import { CodeEditorTutorAssessmentInlineFeedbackComponent } from 'app/exercises/programming/assess/code-editor-tutor-assessment-inline-feedback.component'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; import { MockResizeObserver } from '../../helpers/mocks/service/mock-resize-observer'; import { CodeEditorFileService } from 'app/exercises/programming/shared/code-editor/service/code-editor-file.service'; @@ -48,13 +47,8 @@ describe('CodeEditorMonacoComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule], - declarations: [ - CodeEditorMonacoComponent, - MockComponent(CodeEditorTutorAssessmentInlineFeedbackComponent), - MockComponent(CodeEditorHeaderComponent), - MonacoEditorComponent, - ], + imports: [ArtemisTestModule, MonacoEditorComponent], + declarations: [CodeEditorMonacoComponent, MockComponent(CodeEditorTutorAssessmentInlineFeedbackComponent), MockComponent(CodeEditorHeaderComponent)], providers: [ CodeEditorFileService, { provide: CodeEditorRepositoryFileService, useClass: MockCodeEditorRepositoryFileService }, diff --git a/src/test/javascript/spec/component/hestia/git-diff-report/git-diff-file.component.spec.ts b/src/test/javascript/spec/component/hestia/git-diff-report/git-diff-file.component.spec.ts index dbef6bd7eb72..47d3e75710b4 100644 --- a/src/test/javascript/spec/component/hestia/git-diff-report/git-diff-file.component.spec.ts +++ b/src/test/javascript/spec/component/hestia/git-diff-report/git-diff-file.component.spec.ts @@ -1,8 +1,8 @@ import { ArtemisTestModule } from '../../../test.module'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { GitDiffFileComponent } from 'app/exercises/programming/hestia/git-diff-report/git-diff-file.component'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { MockResizeObserver } from '../../../helpers/mocks/service/mock-resize-observer'; +import { MonacoDiffEditorComponent } from '../../../../../../main/webapp/app/shared/monaco-editor/monaco-diff-editor.component'; function getDiffEntryWithPaths(previousFilePath?: string, filePath?: string) { return { @@ -17,7 +17,7 @@ describe('GitDiffFileComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule], + imports: [ArtemisTestModule, MonacoDiffEditorComponent], declarations: [GitDiffFileComponent], providers: [], }).compileComponents(); diff --git a/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-aeolus-build-plan.component.spec.ts b/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-aeolus-build-plan.component.spec.ts index 8b59cc5e8c6b..005fa8fdd41a 100644 --- a/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-aeolus-build-plan.component.spec.ts +++ b/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-aeolus-build-plan.component.spec.ts @@ -8,8 +8,6 @@ import { ProgrammingExercise, ProgrammingLanguage, ProjectType } from 'app/entit import { ActivatedRoute, convertToParamMap } from '@angular/router'; import { Course } from 'app/entities/course.model'; import { ProgrammingExerciseCustomAeolusBuildPlanComponent } from 'app/exercises/programming/manage/update/update-components/custom-build-plans/programming-exercise-custom-aeolus-build-plan.component'; -import { ElementRef, Renderer2 } from '@angular/core'; -import { ThemeService } from 'app/core/theme/theme.service'; import { MockComponent } from 'ng-mocks'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { HelpIconComponent } from 'app/shared/components/help-icon.component'; @@ -18,10 +16,8 @@ import { AeolusService } from 'app/exercises/programming/shared/service/aeolus.s import { PROFILE_AEOLUS } from 'app/app.constants'; import { Observable } from 'rxjs'; import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; -import { TranslateService } from '@ngx-translate/core'; describe('ProgrammingExercise Aeolus Custom Build Plan', () => { - let mockThemeService: ThemeService; let comp: ProgrammingExerciseCustomAeolusBuildPlanComponent; const course = { id: 123 } as Course; @@ -33,8 +29,7 @@ describe('ProgrammingExercise Aeolus Custom Build Plan', () => { let cleanBuildAction: ScriptAction = new ScriptAction(); let platformAction: PlatformAction = new PlatformAction(); let mockAeolusService: AeolusService; - let renderer2: Renderer2; - let translateService: TranslateService; + let monacoEditorComponent: MonacoEditorComponent; beforeEach(() => { programmingExercise = new ProgrammingExercise(course, undefined); @@ -75,16 +70,13 @@ describe('ProgrammingExercise Aeolus Custom Build Plan', () => { .compileComponents() .then(() => { mockAeolusService = TestBed.inject(AeolusService); - mockThemeService = TestBed.inject(ThemeService); }); const fixture = TestBed.createComponent(ProgrammingExerciseCustomAeolusBuildPlanComponent); - // These are not directly injected into the component, but are needed for the tests. - renderer2 = fixture.debugElement.injector.get(Renderer2); - translateService = fixture.debugElement.injector.get(TranslateService); comp = fixture.componentInstance; comp.programmingExercise = programmingExercise; + monacoEditorComponent = TestBed.createComponent(MonacoEditorComponent).componentInstance; }); afterEach(() => { @@ -123,11 +115,13 @@ describe('ProgrammingExercise Aeolus Custom Build Plan', () => { expect(programmingExercise.buildConfig?.windfile?.actions.length).toBe(size! + 1); }); - it('should accept editor', () => { - const elementRef: ElementRef = new ElementRef(document.createElement('div')); + it('should accept and setup editor', () => { + const setTextStub = jest.spyOn(monacoEditorComponent, 'setText').mockImplementation(); + comp.code = 'void'; expect(comp.editor).toBeUndefined(); - comp.editor = new MonacoEditorComponent(mockThemeService, elementRef, renderer2, translateService); - expect(comp.editor).toBeDefined(); + comp.editor = monacoEditorComponent; + expect(comp.editor).toBe(monacoEditorComponent); + expect(setTextStub).toHaveBeenCalledExactlyOnceWith(comp.code); }); it('should change code of active action', () => { @@ -175,8 +169,7 @@ describe('ProgrammingExercise Aeolus Custom Build Plan', () => { }); it('should set editor text', () => { - const elementRef: ElementRef = new ElementRef(document.createElement('div')); - comp.editor = new MonacoEditorComponent(mockThemeService, elementRef, renderer2, translateService); + comp.editor = monacoEditorComponent; comp.changeActiveAction('gradle'); expect(comp.editor?.getText()).toBe(gradleBuildAction.script); }); diff --git a/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-build-plan.component.spec.ts b/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-build-plan.component.spec.ts index b2ec21d46f82..7637950ee528 100644 --- a/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-build-plan.component.spec.ts +++ b/src/test/javascript/spec/component/programming-exercise/programming-exercise-custom-build-plan.component.spec.ts @@ -1,4 +1,4 @@ -import { TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { BuildAction, PlatformAction, ScriptAction } from 'app/entities/programming/build.action'; import { DockerConfiguration } from 'app/entities/programming/docker.configuration'; import { WindFile } from 'app/entities/programming/wind.file'; @@ -7,8 +7,7 @@ import { ArtemisTestModule } from '../../test.module'; import { ProgrammingExercise, ProgrammingLanguage, ProjectType } from 'app/entities/programming/programming-exercise.model'; import { ActivatedRoute, convertToParamMap } from '@angular/router'; import { Course } from 'app/entities/course.model'; -import { ElementRef, Renderer2 } from '@angular/core'; -import { ThemeService } from 'app/core/theme/theme.service'; +import { Renderer2 } from '@angular/core'; import { MockComponent } from 'ng-mocks'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { HelpIconComponent } from 'app/shared/components/help-icon.component'; @@ -18,10 +17,9 @@ import { ProgrammingExerciseCustomBuildPlanComponent } from 'app/exercises/progr import { PROFILE_LOCALCI } from 'app/app.constants'; import { Observable } from 'rxjs'; import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; -import { TranslateService } from '@ngx-translate/core'; describe('ProgrammingExercise Custom Build Plan', () => { - let mockThemeService: ThemeService; + let fixture: ComponentFixture; let comp: ProgrammingExerciseCustomBuildPlanComponent; const course = { id: 123 } as Course; @@ -33,8 +31,6 @@ describe('ProgrammingExercise Custom Build Plan', () => { let cleanBuildAction: ScriptAction = new ScriptAction(); let platformAction: PlatformAction = new PlatformAction(); let mockAeolusService: AeolusService; - let renderer2: Renderer2; - let translateService: TranslateService; beforeEach(() => { programmingExercise = new ProgrammingExercise(course, undefined); @@ -68,14 +64,10 @@ describe('ProgrammingExercise Custom Build Plan', () => { .compileComponents() .then(() => { mockAeolusService = TestBed.inject(AeolusService); - mockThemeService = TestBed.inject(ThemeService); }); - const fixture = TestBed.createComponent(ProgrammingExerciseCustomBuildPlanComponent); + fixture = TestBed.createComponent(ProgrammingExerciseCustomBuildPlanComponent); comp = fixture.componentInstance; - // These are not directly injected into the component, but are needed for the tests. - renderer2 = fixture.debugElement.injector.get(Renderer2); - translateService = fixture.debugElement.injector.get(TranslateService); comp.programmingExercise = programmingExercise; }); @@ -92,9 +84,8 @@ describe('ProgrammingExercise Custom Build Plan', () => { }); it('should accept editor', () => { - const elementRef: ElementRef = new ElementRef(document.createElement('div')); expect(comp.editor).toBeUndefined(); - comp.editor = new MonacoEditorComponent(mockThemeService, elementRef, renderer2, translateService); + comp.editor = TestBed.createComponent(MonacoEditorComponent).componentInstance; expect(comp.editor).toBeDefined(); }); @@ -224,15 +215,14 @@ describe('ProgrammingExercise Custom Build Plan', () => { it('should accept editor for existing exercise', () => { comp.programmingExercise.id = 1; - const elementRef: ElementRef = new ElementRef(document.createElement('div')); comp.programmingExercise.buildConfig!.buildScript = 'buildscript'; - const editor = new MonacoEditorComponent(mockThemeService, elementRef, renderer2, translateService); + const editor = TestBed.createComponent(MonacoEditorComponent).componentInstance; expect(comp.editor).toBeUndefined(); comp.editor = editor; expect(comp.code).toBe('buildscript'); expect(comp.editor).toBeDefined(); comp.programmingExercise.buildConfig!.buildScript = undefined; - comp.editor = new MonacoEditorComponent(mockThemeService, elementRef, renderer2, translateService); + comp.editor = TestBed.createComponent(MonacoEditorComponent).componentInstance; expect(comp.code).toBe(''); }); diff --git a/src/test/javascript/spec/component/shared/monaco-editor/monaco-diff-editor.component.spec.ts b/src/test/javascript/spec/component/shared/monaco-editor/monaco-diff-editor.component.spec.ts index 350a6ed235d3..459c093e3896 100644 --- a/src/test/javascript/spec/component/shared/monaco-editor/monaco-diff-editor.component.spec.ts +++ b/src/test/javascript/spec/component/shared/monaco-editor/monaco-diff-editor.component.spec.ts @@ -1,28 +1,21 @@ -import { Theme, ThemeService } from 'app/core/theme/theme.service'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ArtemisTestModule } from '../../../test.module'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { MockResizeObserver } from '../../../helpers/mocks/service/mock-resize-observer'; import { MonacoDiffEditorComponent } from 'app/shared/monaco-editor/monaco-diff-editor.component'; -import { BehaviorSubject } from 'rxjs'; describe('MonacoDiffEditorComponent', () => { let fixture: ComponentFixture; let comp: MonacoDiffEditorComponent; - let mockThemeService: ThemeService; beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule], - declarations: [MonacoDiffEditorComponent], - providers: [], + imports: [ArtemisTestModule, MonacoDiffEditorComponent], }) .compileComponents() .then(() => { global.ResizeObserver = jest.fn().mockImplementation((callback: ResizeObserverCallback) => { return new MockResizeObserver(callback); }); - mockThemeService = TestBed.inject(ThemeService); fixture = TestBed.createComponent(MonacoDiffEditorComponent); comp = fixture.componentInstance; }); @@ -32,25 +25,12 @@ describe('MonacoDiffEditorComponent', () => { jest.restoreAllMocks(); }); - it('should adjust its theme to the global theme', () => { - const themeSubject = new BehaviorSubject(Theme.LIGHT); - const subscribeStub = jest.spyOn(mockThemeService, 'getCurrentThemeObservable').mockReturnValue(themeSubject.asObservable()); - const changeThemeSpy = jest.spyOn(comp, 'changeTheme'); - fixture.detectChanges(); - themeSubject.next(Theme.DARK); - expect(subscribeStub).toHaveBeenCalledOnce(); - expect(changeThemeSpy).toHaveBeenCalledTimes(2); - expect(changeThemeSpy).toHaveBeenNthCalledWith(1, Theme.LIGHT); - expect(changeThemeSpy).toHaveBeenNthCalledWith(2, Theme.DARK); - }); - it('should dispose its listeners and subscriptions when destroyed', () => { fixture.detectChanges(); const resizeObserverDisconnectSpy = jest.spyOn(comp.resizeObserver!, 'disconnect'); - const themeSubscriptionUnsubscribeSpy = jest.spyOn(comp.themeSubscription!, 'unsubscribe'); const listenerDisposeSpies = comp.listeners.map((listener) => jest.spyOn(listener, 'dispose')); comp.ngOnDestroy(); - for (const spy of [resizeObserverDisconnectSpy, themeSubscriptionUnsubscribeSpy, ...listenerDisposeSpies]) { + for (const spy of [resizeObserverDisconnectSpy, ...listenerDisposeSpies]) { expect(spy).toHaveBeenCalledOnce(); } }); diff --git a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action-quiz.integration.spec.ts b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action-quiz.integration.spec.ts index 06d99f3ae996..a759b1da24fc 100644 --- a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action-quiz.integration.spec.ts +++ b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action-quiz.integration.spec.ts @@ -1,7 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; import { ArtemisTestModule } from '../../../test.module'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { MockResizeObserver } from '../../../helpers/mocks/service/mock-resize-observer'; import { InsertShortAnswerOptionAction } from 'app/shared/monaco-editor/model/actions/quiz/insert-short-answer-option.action'; import { InsertShortAnswerSpotAction } from 'app/shared/monaco-editor/model/actions/quiz/insert-short-answer-spot.action'; @@ -20,9 +19,7 @@ describe('MonacoEditorActionQuizIntegration', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule], - declarations: [MonacoEditorComponent], - providers: [], + imports: [ArtemisTestModule, MonacoEditorComponent], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action.integration.spec.ts b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action.integration.spec.ts index 730f84f110f1..f4fe90f07a2c 100644 --- a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action.integration.spec.ts +++ b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-action.integration.spec.ts @@ -1,7 +1,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; import { ArtemisTestModule } from '../../../test.module'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { MockResizeObserver } from '../../../helpers/mocks/service/mock-resize-observer'; import { BoldAction } from 'app/shared/monaco-editor/model/actions/bold.action'; import { TextEditorAction } from 'app/shared/monaco-editor/model/actions/text-editor-action.model'; @@ -29,9 +28,7 @@ describe('MonacoEditorActionIntegration', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule], - declarations: [MonacoEditorComponent], - providers: [], + imports: [ArtemisTestModule, MonacoEditorComponent], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-communication-action.integration.spec.ts b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-communication-action.integration.spec.ts index 9fa5c2b391c5..862de1bdc8a7 100644 --- a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-communication-action.integration.spec.ts +++ b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-communication-action.integration.spec.ts @@ -43,6 +43,7 @@ describe('MonacoEditorCommunicationActionIntegration', () => { beforeEach(() => { return TestBed.configureTestingModule({ + imports: [MonacoEditorComponent], providers: [ { provide: MetisService, useClass: MockMetisService }, { provide: TranslateService, useClass: MockTranslateService }, @@ -51,7 +52,6 @@ describe('MonacoEditorCommunicationActionIntegration', () => { MockProvider(CourseManagementService), MockProvider(ChannelService), ], - declarations: [MonacoEditorComponent], }) .compileComponents() .then(() => { @@ -60,7 +60,6 @@ describe('MonacoEditorCommunicationActionIntegration', () => { }); fixture = TestBed.createComponent(MonacoEditorComponent); comp = fixture.componentInstance; - // debugElement = fixture.debugElement; metisService = TestBed.inject(MetisService); courseManagementService = TestBed.inject(CourseManagementService); lectureService = TestBed.inject(LectureService); diff --git a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-grading-instructions.integration.spec.ts b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-grading-instructions.integration.spec.ts index 8d608dc314b6..ab99555cc7d6 100644 --- a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-grading-instructions.integration.spec.ts +++ b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor-grading-instructions.integration.spec.ts @@ -1,6 +1,5 @@ import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; import { ArtemisTestModule } from '../../../test.module'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { MockResizeObserver } from '../../../helpers/mocks/service/mock-resize-observer'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { GradingInstructionAction } from 'app/shared/monaco-editor/model/actions/grading-criteria/grading-instruction.action'; @@ -17,8 +16,7 @@ describe('MonacoEditorActionGradingInstructionsIntegration', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule], - declarations: [MonacoEditorComponent], + imports: [ArtemisTestModule, MonacoEditorComponent], providers: [], }) .compileComponents() diff --git a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.component.spec.ts b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.component.spec.ts index ae34f743a3a7..df228c9b340c 100644 --- a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.component.spec.ts +++ b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.component.spec.ts @@ -1,10 +1,7 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { ArtemisTestModule } from '../../../test.module'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { MonacoEditorComponent } from 'app/shared/monaco-editor/monaco-editor.component'; import { MockResizeObserver } from '../../../helpers/mocks/service/mock-resize-observer'; -import { Theme, ThemeService } from 'app/core/theme/theme.service'; -import { BehaviorSubject } from 'rxjs'; import { MonacoEditorBuildAnnotationType } from 'app/shared/monaco-editor/model/monaco-editor-build-annotation.model'; import { MonacoCodeEditorElement } from 'app/shared/monaco-editor/model/monaco-code-editor-element.model'; import { MonacoEditorLineDecorationsHoverButton } from 'app/shared/monaco-editor/model/monaco-editor-line-decorations-hover-button.model'; @@ -14,7 +11,6 @@ import { MonacoEditorOptionPreset } from 'app/shared/monaco-editor/model/monaco- describe('MonacoEditorComponent', () => { let fixture: ComponentFixture; let comp: MonacoEditorComponent; - let mockThemeService: ThemeService; const singleLineText = 'public class Main { }'; const multiLineText = ['public class Main {', 'static void main() {', 'foo();', '}', '}'].join('\n'); @@ -23,13 +19,10 @@ describe('MonacoEditorComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule], - declarations: [MonacoEditorComponent], - providers: [], + imports: [ArtemisTestModule, MonacoEditorComponent], }) .compileComponents() .then(() => { - mockThemeService = TestBed.inject(ThemeService); fixture = TestBed.createComponent(MonacoEditorComponent); comp = fixture.componentInstance; global.ResizeObserver = jest.fn().mockImplementation((callback: ResizeObserverCallback) => { @@ -59,7 +52,7 @@ describe('MonacoEditorComponent', () => { it('should only send a notification once per delay interval', fakeAsync(() => { const delay = 1000; const valueCallbackStub = jest.fn(); - comp.textChangedEmitDelay = delay; + fixture.componentRef.setInput('textChangedEmitDelay', delay); fixture.detectChanges(); comp.textChanged.subscribe(valueCallbackStub); comp.setText('too early'); @@ -70,36 +63,14 @@ describe('MonacoEditorComponent', () => { })); it('should be set to readOnly depending on the input', () => { - comp.readOnly = true; + fixture.componentRef.setInput('readOnly', true); fixture.detectChanges(); expect(comp.isReadOnly()).toBeTrue(); - comp.readOnly = false; + fixture.componentRef.setInput('readOnly', false); fixture.detectChanges(); expect(comp.isReadOnly()).toBeFalse(); }); - it('should adjust its theme to the global theme', () => { - const themeSubject = new BehaviorSubject(Theme.LIGHT); - const subscribeStub = jest.spyOn(mockThemeService, 'getCurrentThemeObservable').mockReturnValue(themeSubject.asObservable()); - const changeThemeSpy = jest.spyOn(comp, 'changeTheme'); - fixture.detectChanges(); - themeSubject.next(Theme.DARK); - expect(subscribeStub).toHaveBeenCalledOnce(); - expect(changeThemeSpy).toHaveBeenCalledTimes(2); - expect(changeThemeSpy).toHaveBeenNthCalledWith(1, Theme.LIGHT); - expect(changeThemeSpy).toHaveBeenNthCalledWith(2, Theme.DARK); - }); - - it('should unsubscribe from the global theme when destroyed', () => { - const themeSubject = new BehaviorSubject(Theme.LIGHT); - const subscribeStub = jest.spyOn(mockThemeService, 'getCurrentThemeObservable').mockReturnValue(themeSubject.asObservable()); - fixture.detectChanges(); - const unsubscribeStub = jest.spyOn(comp.themeSubscription!, 'unsubscribe').mockImplementation(); - comp.ngOnDestroy(); - expect(subscribeStub).toHaveBeenCalledOnce(); - expect(unsubscribeStub).toHaveBeenCalledOnce(); - }); - it('should display hidden line widgets', () => { const lineWidgetDiv = document.createElement('div'); // This is the case e.g. for feedback items. @@ -118,9 +89,9 @@ describe('MonacoEditorComponent', () => { comp.setAnnotations(buildAnnotationArray, false); comp.setText(multiLineText); const element = document.getElementById(buildAnnotationId); - expect(comp.editorBuildAnnotations).toHaveLength(1); + expect(comp.buildAnnotations).toHaveLength(1); expect(element).not.toBeNull(); - expect(element).toEqual(comp.editorBuildAnnotations[0].getGlyphMarginDomNode()); + expect(element).toEqual(comp.buildAnnotations[0].getGlyphMarginDomNode()); }); it('should not display build annotations that are out of bounds', () => { @@ -130,28 +101,28 @@ describe('MonacoEditorComponent', () => { comp.setAnnotations(buildAnnotationArray, false); comp.setText(singleLineText); const element = document.getElementById(buildAnnotationId); - expect(comp.editorBuildAnnotations).toHaveLength(1); + expect(comp.buildAnnotations).toHaveLength(1); // Ensure that the element is actually there, but not displayed in the DOM. expect(element).toBeNull(); - expect(comp.editorBuildAnnotations[0].getGlyphMarginDomNode().id).toBe(buildAnnotationId); + expect(comp.buildAnnotations[0].getGlyphMarginDomNode().id).toBe(buildAnnotationId); }); it('should mark build annotations as outdated if specified', () => { fixture.detectChanges(); comp.setText(multiLineText); comp.setAnnotations(buildAnnotationArray, true); - expect(comp.editorBuildAnnotations).toHaveLength(1); - expect(comp.editorBuildAnnotations[0].isOutdated()).toBeTrue(); + expect(comp.buildAnnotations).toHaveLength(1); + expect(comp.buildAnnotations[0].isOutdated()).toBeTrue(); }); it('should mark build annotations as outdated when a keyboard input is made', () => { fixture.detectChanges(); comp.setText(multiLineText); comp.setAnnotations(buildAnnotationArray, false); - expect(comp.editorBuildAnnotations).toHaveLength(1); - expect(comp.editorBuildAnnotations[0].isOutdated()).toBeFalse(); + expect(comp.buildAnnotations).toHaveLength(1); + expect(comp.buildAnnotations[0].isOutdated()).toBeFalse(); comp.triggerKeySequence('typing'); - expect(comp.editorBuildAnnotations[0].isOutdated()).toBeTrue(); + expect(comp.buildAnnotations[0].isOutdated()).toBeTrue(); }); it('should highlight line ranges with the specified classnames', () => { @@ -205,7 +176,7 @@ describe('MonacoEditorComponent', () => { }); it('should not allow editing in readonly mode', () => { - comp.readOnly = true; + fixture.componentRef.setInput('readOnly', true); fixture.detectChanges(); comp.setText(singleLineText); comp.triggerKeySequence('some ignored input'); @@ -218,7 +189,7 @@ describe('MonacoEditorComponent', () => { comp.addLineWidget(1, 'widget', document.createElement('div')); comp.setLineDecorationsHoverButton('testClass', jest.fn()); comp.highlightLines(1, 1); - const disposeAnnotationSpy = jest.spyOn(comp.editorBuildAnnotations[0], 'dispose'); + const disposeAnnotationSpy = jest.spyOn(comp.buildAnnotations[0], 'dispose'); const disposeWidgetSpy = jest.spyOn(comp.lineWidgets[0], 'dispose'); const disposeHoverButtonSpy = jest.spyOn(comp.lineDecorationsHoverButton!, 'dispose'); const disposeLineHighlightSpy = jest.spyOn(comp.lineHighlights[0], 'dispose'); diff --git a/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.service.spec.ts b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.service.spec.ts new file mode 100644 index 000000000000..82ffd4e2b8b3 --- /dev/null +++ b/src/test/javascript/spec/component/shared/monaco-editor/monaco-editor.service.spec.ts @@ -0,0 +1,69 @@ +import { TestBed } from '@angular/core/testing'; +import * as monaco from 'monaco-editor'; +import { Theme, ThemeService } from 'app/core/theme/theme.service'; +import { MonacoEditorService } from '../../../../../../main/webapp/app/shared/monaco-editor/monaco-editor.service'; +import { ArtemisTestModule } from '../../../test.module'; +import { CUSTOM_MARKDOWN_LANGUAGE_ID } from 'app/shared/monaco-editor/model/languages/monaco-custom-markdown.language'; +import { BehaviorSubject } from 'rxjs'; +import { MockResizeObserver } from '../../../helpers/mocks/service/mock-resize-observer'; + +describe('MonacoEditorService', () => { + let monacoEditorService: MonacoEditorService; + let setThemeSpy: jest.SpyInstance; + let registerLanguageSpy: jest.SpyInstance; + const themeSubject = new BehaviorSubject(Theme.LIGHT); + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ArtemisTestModule], + }); + // Avoids an error with the diff editor, which uses a ResizeObserver. + global.ResizeObserver = jest.fn().mockImplementation((callback: ResizeObserverCallback) => { + return new MockResizeObserver(callback); + }); + registerLanguageSpy = jest.spyOn(monaco.languages, 'register'); + setThemeSpy = jest.spyOn(monaco.editor, 'setTheme'); + const themeService = TestBed.inject(ThemeService); + jest.spyOn(themeService, 'getCurrentThemeObservable').mockReturnValue(themeSubject.asObservable()); + monacoEditorService = TestBed.inject(MonacoEditorService); + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it('should register the custom markdown language', () => { + const customMarkdownLanguage = monaco.languages.getLanguages().find((l) => l.id === CUSTOM_MARKDOWN_LANGUAGE_ID); + expect(customMarkdownLanguage).toBeDefined(); + expect(registerLanguageSpy).toHaveBeenCalledExactlyOnceWith({ id: customMarkdownLanguage!.id }); + }); + + it('should correctly handle themes', () => { + // Initialization: The editor should be in light mode since that is what we initialized the themeSubject with + expect(setThemeSpy).toHaveBeenCalledExactlyOnceWith(MonacoEditorService.LIGHT_THEME_ID); + // Switch to dark theme + themeSubject.next(Theme.DARK); + TestBed.flushEffects(); + expect(setThemeSpy).toHaveBeenCalledTimes(2); + expect(setThemeSpy).toHaveBeenNthCalledWith(2, MonacoEditorService.DARK_THEME_ID); + // Switch back to light theme + themeSubject.next(Theme.LIGHT); + TestBed.flushEffects(); + expect(setThemeSpy).toHaveBeenCalledTimes(3); + expect(setThemeSpy).toHaveBeenNthCalledWith(3, MonacoEditorService.LIGHT_THEME_ID); + }); + + it.each([ + { className: 'monaco-editor', createFn: (element: HTMLElement) => monacoEditorService.createStandaloneCodeEditor(element) }, + { className: 'monaco-diff-editor', createFn: (element: HTMLElement) => monacoEditorService.createStandaloneDiffEditor(element) }, + ])( + 'should insert an editor ($className) into the provided DOM element', + ({ className, createFn }: { className: string; createFn: (element: HTMLElement) => monaco.editor.IStandaloneCodeEditor | monaco.editor.IStandaloneDiffEditor }) => { + const element = document.createElement('div'); + const editor = createFn(element); + expect(editor.getContainerDomNode()).toBe(element); + expect(element.children).toHaveLength(1); + expect(element.children.item(0)!.classList).toContain(className); + }, + ); +}); diff --git a/src/test/javascript/spec/integration/code-editor/code-editor-container.integration.spec.ts b/src/test/javascript/spec/integration/code-editor/code-editor-container.integration.spec.ts index d8f9e0bb8126..406dce4f6a5c 100644 --- a/src/test/javascript/spec/integration/code-editor/code-editor-container.integration.spec.ts +++ b/src/test/javascript/spec/integration/code-editor/code-editor-container.integration.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, TestBed, discardPeriodicTasks, fakeAsync, flush, tick } from '@angular/core/testing'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import dayjs from 'dayjs/esm'; -import { ChangeDetectorRef, DebugElement } from '@angular/core'; +import { DebugElement } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { NgModel } from '@angular/forms'; import { NgbDropdown, NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; @@ -73,8 +73,8 @@ import { TreeviewItemComponent } from 'app/exercises/programming/shared/code-edi import { CodeEditorHeaderComponent } from 'app/exercises/programming/shared/code-editor/header/code-editor-header.component'; import { AlertService } from 'app/core/util/alert.service'; import { MockResizeObserver } from '../../helpers/mocks/service/mock-resize-observer'; -import { MonacoEditorModule } from 'app/shared/monaco-editor/monaco-editor.module'; import { CodeEditorMonacoComponent } from 'app/exercises/programming/shared/code-editor/monaco/code-editor-monaco.component'; +import { MonacoEditorComponent } from '../../../../../main/webapp/app/shared/monaco-editor/monaco-editor.component'; describe('CodeEditorContainerIntegration', () => { let container: CodeEditorContainerComponent; @@ -100,7 +100,7 @@ describe('CodeEditorContainerIntegration', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MonacoEditorModule, MockDirective(NgbDropdown), MockModule(NgbTooltipModule)], + imports: [ArtemisTestModule, MonacoEditorComponent, MockDirective(NgbDropdown), MockModule(NgbTooltipModule)], declarations: [ CodeEditorContainerComponent, MockComponent(CodeEditorGridComponent), @@ -125,7 +125,6 @@ describe('CodeEditorContainerIntegration', () => { MockComponent(CodeEditorTutorAssessmentInlineFeedbackComponent), ], providers: [ - ChangeDetectorRef, CodeEditorConflictStateService, MockProvider(AlertService), { provide: ActivatedRoute, useClass: MockActivatedRouteWithSubjects }, From 3779e88aa36dd8f103f38d3adbb7404d40ebf68c Mon Sep 17 00:00:00 2001 From: Johannes Wiest Date: Mon, 7 Oct 2024 20:58:03 +0200 Subject: [PATCH 4/4] Development: Remove HttpClientTestingModule as it is deprecated (#9435) --- .../admin/configuration.component.spec.ts | 7 +++-- .../admin/legal-document-service.spec.ts | 6 ++-- .../component/admin/logs.component.spec.ts | 7 +++-- .../admin/user-management.component.spec.ts | 8 ++++-- ...llon-diagram-create-form.component.spec.ts | 8 ++++-- .../apollon-diagram-list.component.spec.ts | 8 ++++-- .../quiz-exercise-generator.spec.ts | 8 ++++-- .../assessment-locks.component.spec.ts | 7 +++-- .../competencies/competency.service.spec.ts | 8 ++++-- .../course-competencies.component.spec.ts | 8 ++++-- .../competencies/prerequisite.service.spec.ts | 8 ++++-- .../complaint-response.service.spec.ts | 8 +++--- .../complaints/complaint.service.spec.ts | 7 +++-- .../course/course-admin.service.spec.ts | 7 +++-- ...urse-for-import-dto-paging-service.spec.ts | 7 +++-- ...ourse-management-tab-bar.component.spec.ts | 8 ++++-- .../course/course-management.service.spec.ts | 7 +++-- .../course/course-overview.service.spec.ts | 7 +++-- .../course/course-update.component.spec.ts | 28 ++++++------------- .../manage/exam-management.service.spec.ts | 7 +++-- ...list-exercisegroup-table.component.spec.ts | 6 ++-- .../exams/exam-detail.component.spec.ts | 7 +++-- .../student-exam-detail.component.spec.ts | 16 ++++------- .../suspicious-sessions.service.spec.ts | 6 ++-- ...file-upload-exam-summary.component.spec.ts | 6 ++-- .../quiz-exam-summary.component.spec.ts | 7 +++-- .../exam-result-overview.component.spec.ts | 7 +++-- ...ol-mapping-question-list.component.spec.ts | 7 +++-- .../quiz-pool-mapping.component.spec.ts | 7 +++-- .../quiz/manage/quiz-pool.component.spec.ts | 8 +++--- ...stion-list-edit-existing.component.spec.ts | 8 +++--- .../quiz-question-list-edit.component.spec.ts | 7 +++-- .../quiz/quiz-participation.component.spec.ts | 20 +++++++++---- .../quiz/quiz-participation.service.spec.ts | 7 +++-- .../iris/iris-chat-http.service.spec.ts | 7 +++-- .../iris/iris-status.service.spec.ts | 7 +++-- .../settings/iris-settings.service.spec.ts | 7 +++-- .../exercise-chatbot-button.component.spec.ts | 7 +++-- .../component/iris/websocket.service.spec.ts | 13 +++++++-- .../attachment-unit.service.spec.ts | 8 ++++-- .../exercise-unit.service.spec.ts | 8 ++++-- .../lecture-unit/lecture-unit.service.spec.ts | 7 +++-- .../online-unit/online-unit.service.spec.ts | 8 ++++-- .../text-unit/text-unit.service.spec.ts | 8 ++++-- .../video-unit/video-unit.service.spec.ts | 8 ++++-- .../lecture/lecture-detail.component.spec.ts | 8 ++++-- .../link-preview/link-preview.service.spec.ts | 7 +++-- .../build-agents/build-agents.service.spec.ts | 7 +++-- .../build-queue/build-queue.service.spec.ts | 7 +++-- ...i13-dynamic-registration.component.spec.ts | 11 +++----- .../lti13-exercise-launch.component.spec.ts | 8 ++++-- .../manage/exercise-paging.service.spec.ts | 8 ++++-- .../modeling-editor.component.spec.ts | 7 +++-- .../organization-management.service.spec.ts | 10 ++++--- ...rse-competencies-details.component.spec.ts | 8 ++++-- .../services/channel.service.spec.ts | 7 +++-- .../services/conversation.service.spec.ts | 7 +++-- .../services/group-chat.service.spec.ts | 7 +++-- .../services/one-to-one-chat.service.spec.ts | 7 +++-- .../presentation-score.component.spec.ts | 7 +++-- .../feedback-analysis.service.spec.ts | 7 +++-- .../ide/ide-settings.component.spec.ts | 7 +++-- .../shared/http/file.service.spec.ts | 7 +++-- .../message-inline-input.component.spec.ts | 13 +++++++-- ...ssage-reply-inline-input.component.spec.ts | 13 +++++++-- .../posting-content.component.spec.ts | 7 +++-- .../post-create-edit-modal.component.spec.ts | 13 +++++++-- ...nswer-post-reactions-bar.component.spec.ts | 7 +++-- .../post-reactions-bar.component.spec.ts | 7 +++-- .../component/shared/navbar.component.spec.ts | 8 ++++-- .../notification-settings.service.spec.ts | 7 +++-- .../science-settings.service.spec.ts | 8 +++--- .../user-settings.directive.spec.ts | 8 ++++-- .../user-settings.service.spec.ts | 7 +++-- ...in-standardized-competency.service.spec.ts | 8 +++--- .../standardized-competency.service.spec.ts | 8 +++--- .../tutor-effort-statistics.component.spec.ts | 7 +++-- ...tutorial-group-free-period.service.spec.ts | 6 ++-- .../tutorial-group-session.service.spec.ts | 6 ++-- .../services/tutorial-group.service.spec.ts | 7 +++-- ...orial-groups-configuration.service.spec.ts | 6 ++-- .../services/tutorial-groups.service.spec.ts | 6 ++-- .../tutorial-group-detail.component.spec.ts | 10 ++++--- ...l-group-management-resolve.service.spec.ts | 8 ++++-- .../spec/service/admin-user.service.spec.ts | 6 ++-- .../service/apollon-diagram.service.spec.ts | 8 +++--- .../spec/service/athena.service.spec.ts | 7 +++-- .../spec/service/attachment.service.spec.ts | 8 ++++-- .../spec/service/audits.service.spec.ts | 6 ++-- .../spec/service/auth-jwt.service.spec.ts | 7 +++-- .../spec/service/bonus.service.spec.ts | 6 ++-- .../spec/service/build-log.service.spec.ts | 6 ++-- .../service/configuration.service.spec.ts | 6 ++-- .../service/course-exercise.service.spec.ts | 7 +++-- .../spec/service/data-export.service.spec.ts | 7 +++-- .../exam-import-paging.service.spec.ts | 7 +++-- ...-participation-live-events.service.spec.ts | 7 +++-- .../exam-participation.service.spec.ts | 7 +++-- ...e-submission-import-paging.service.spec.ts | 7 +++-- .../example-submission.service.spec.ts | 8 +++--- .../service/exercise-hint.service.spec.ts | 8 +++--- .../exercise-scores-chart.service.spec.ts | 7 +++-- .../spec/service/exercise.service.spec.ts | 7 +++-- .../external-submission.service.spec.ts | 6 ++-- .../spec/service/faq.service.spec.ts | 8 ++++-- .../spec/service/file-type.service.spec.ts | 6 ++-- .../file-upload-assessment.service.spec.ts | 7 +++-- .../file-upload-exercise.service.spec.ts | 7 +++-- .../file-upload-submission.service.spec.ts | 7 +++-- .../service/grading-system.service.spec.ts | 7 +++-- .../spec/service/lecture.service.spec.ts | 8 ++++-- .../spec/service/logs.service.spec.ts | 6 ++-- .../service/lti-configuration.service.spec.ts | 8 +++--- .../service/metis/answer-post.service.spec.ts | 6 ++-- .../spec/service/metis/metis.service.spec.ts | 8 ++++-- .../spec/service/metis/post.service.spec.ts | 6 ++-- .../service/metis/reaction.service.spec.ts | 6 ++-- .../modeling-assessment.service.spec.ts | 8 ++++-- .../service/modeling-exercise.service.spec.ts | 7 +++-- .../modeling-submission.service.spec.ts | 7 +++-- .../spec/service/notification.service.spec.ts | 7 +++-- .../service/participation.service.spec.ts | 8 ++++-- .../service/plagiarism-cases.service.spec.ts | 6 ++-- .../plagiarism-results.service.spec.ts | 6 ++-- .../spec/service/profile.service.spec.ts | 7 +++-- ...ing-exercise-participation.service.spec.ts | 7 +++-- .../programming-exercise-task.service.spec.ts | 7 +++-- .../programming-exercise.service.spec.ts | 7 +++-- .../programming-submission.service.spec.ts | 8 ++++-- .../service/quiz-exercise.service.spec.ts | 8 ++++-- .../spec/service/quiz-pool.service.spec.ts | 7 +++-- .../service/quiz-re-evaluate.service.spec.ts | 7 +++-- .../spec/service/rating.service.spec.ts | 6 ++-- .../spec/service/result.service.spec.ts | 8 ++++-- .../settings/ide-settings.service.spec.ts | 7 +++-- ...ructured-grading-criterion.service.spec.ts | 6 ++-- .../service/submission-export.service.spec.ts | 6 ++-- .../service/submission-policy.service.spec.ts | 7 +++-- .../submission-version.service.spec.ts | 6 ++-- .../spec/service/submission.service.spec.ts | 8 ++++-- .../text-assessment-analytics.service.spec.ts | 7 +++-- .../service/text-assessment.service.spec.ts | 7 +++-- .../service/text-exercise.service.spec.ts | 8 ++++-- .../service/text-submission.service.spec.ts | 7 +++-- .../tutor-participation.service.spec.ts | 7 +++-- .../service/user-route-access.service.spec.ts | 6 ++-- .../spec/service/user.service.spec.ts | 6 ++-- 147 files changed, 692 insertions(+), 428 deletions(-) diff --git a/src/test/javascript/spec/component/admin/configuration.component.spec.ts b/src/test/javascript/spec/component/admin/configuration.component.spec.ts index 5ff61e9b6d3d..3f3780774ef9 100644 --- a/src/test/javascript/spec/component/admin/configuration.component.spec.ts +++ b/src/test/javascript/spec/component/admin/configuration.component.spec.ts @@ -1,9 +1,10 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { of } from 'rxjs'; import { ConfigurationComponent } from 'app/admin/configuration/configuration.component'; import { ConfigurationService } from 'app/admin/configuration/configuration.service'; import { Bean, PropertySource } from 'app/admin/configuration/configuration.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Component Tests', () => { describe('ConfigurationComponent', () => { @@ -13,9 +14,9 @@ describe('Component Tests', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], declarations: [ConfigurationComponent], - providers: [ConfigurationService], + providers: [provideHttpClient(), provideHttpClientTesting(), ConfigurationService], }) .overrideTemplate(ConfigurationComponent, '') .compileComponents(); diff --git a/src/test/javascript/spec/component/admin/legal-document-service.spec.ts b/src/test/javascript/spec/component/admin/legal-document-service.spec.ts index afb6366af5f1..7fba2b5b2227 100644 --- a/src/test/javascript/spec/component/admin/legal-document-service.spec.ts +++ b/src/test/javascript/spec/component/admin/legal-document-service.spec.ts @@ -1,10 +1,11 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { LegalDocumentService } from 'app/shared/service/legal-document.service'; import { LegalDocument, LegalDocumentLanguage, LegalDocumentType } from 'app/entities/legal-document.model'; import { PrivacyStatement } from 'app/entities/privacy-statement.model'; import { Imprint } from 'app/entities/imprint.model'; +import { provideHttpClient } from '@angular/common/http'; describe('LegalDocumentService', () => { let service: LegalDocumentService; @@ -12,7 +13,8 @@ describe('LegalDocumentService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(LegalDocumentService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/admin/logs.component.spec.ts b/src/test/javascript/spec/component/admin/logs.component.spec.ts index 5ec0637f63e5..28f7b0ca00fe 100644 --- a/src/test/javascript/spec/component/admin/logs.component.spec.ts +++ b/src/test/javascript/spec/component/admin/logs.component.spec.ts @@ -1,10 +1,11 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { of } from 'rxjs'; import { LogsComponent } from 'app/admin/logs/logs.component'; import { LogsService } from 'app/admin/logs/logs.service'; import { Log, LoggersResponse } from 'app/admin/logs/log.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Component Tests', () => { describe('LogsComponent', () => { @@ -14,9 +15,9 @@ describe('Component Tests', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], declarations: [LogsComponent], - providers: [LogsService], + providers: [provideHttpClient(), provideHttpClientTesting(), LogsService], }).compileComponents(); })); diff --git a/src/test/javascript/spec/component/admin/user-management.component.spec.ts b/src/test/javascript/spec/component/admin/user-management.component.spec.ts index 29189fad046b..4b2ee62e13a4 100644 --- a/src/test/javascript/spec/component/admin/user-management.component.spec.ts +++ b/src/test/javascript/spec/component/admin/user-management.component.spec.ts @@ -11,7 +11,7 @@ import { import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../../helpers/mocks/service/mock-account.service'; import { ActivatedRoute, Router } from '@angular/router'; -import { HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http'; +import { HttpHeaders, HttpParams, HttpResponse, provideHttpClient } from '@angular/common/http'; import { User } from 'app/core/user/user.model'; import { Subscription, of } from 'rxjs'; import { AbstractControl, ReactiveFormsModule } from '@angular/forms'; @@ -25,7 +25,7 @@ import { ArtemisTestModule } from '../../test.module'; import { MockRouter } from '../../helpers/mocks/mock-router'; import { MockRouterLinkDirective } from '../../helpers/mocks/directive/mock-router-link.directive'; import { EventManager } from 'app/core/util/event-manager.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { CourseManagementService } from 'app/course/manage/course-management.service'; import { MockLocalStorageService } from '../../helpers/mocks/service/mock-local-storage.service'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; @@ -62,7 +62,7 @@ describe('UserManagementComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, MockModule(ReactiveFormsModule), MockModule(NgbModule), HttpClientTestingModule], + imports: [ArtemisTestModule, MockModule(ReactiveFormsModule), MockModule(NgbModule)], declarations: [ UserManagementComponent, MockRouterLinkDirective, @@ -73,6 +73,8 @@ describe('UserManagementComponent', () => { MockDirective(SortDirective), ], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: route, diff --git a/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-create-form.component.spec.ts b/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-create-form.component.spec.ts index eabecfa7deb0..cb7c1fc68ee7 100644 --- a/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-create-form.component.spec.ts +++ b/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-create-form.component.spec.ts @@ -2,7 +2,7 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testin import { Router } from '@angular/router'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { ApollonDiagram } from 'app/entities/apollon-diagram.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TranslateService } from '@ngx-translate/core'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { ApollonDiagramCreateFormComponent } from 'app/exercises/quiz/manage/apollon-diagrams/apollon-diagram-create-form.component'; @@ -10,7 +10,7 @@ import { ApollonDiagramService } from 'app/exercises/quiz/manage/apollon-diagram import { MockSyncStorage } from '../../helpers/mocks/service/mock-sync-storage.service'; import { MockTranslateService } from '../../helpers/mocks/service/mock-translate.service'; import { MockRouter } from '../../helpers/mocks/mock-router'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { of } from 'rxjs'; import { UMLDiagramType } from '@ls1intum/apollon'; @@ -25,9 +25,11 @@ describe('ApollonDiagramCreateForm Component', () => { diagram.id = 1; TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], declarations: [ApollonDiagramCreateFormComponent], providers: [ + provideHttpClient(), + provideHttpClientTesting(), ApollonDiagramService, NgbActiveModal, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-list.component.spec.ts b/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-list.component.spec.ts index 624d432837f2..eed0f095cb77 100644 --- a/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-list.component.spec.ts +++ b/src/test/javascript/spec/component/apollon-diagrams/apollon-diagram-list.component.spec.ts @@ -10,8 +10,8 @@ import { AlertService } from 'app/core/util/alert.service'; import { SortService } from 'app/shared/service/sort.service'; import { ApollonDiagramListComponent } from 'app/exercises/quiz/manage/apollon-diagrams/apollon-diagram-list.component'; import { ApollonDiagram } from 'app/entities/apollon-diagram.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { CourseManagementService } from 'app/course/manage/course-management.service'; import { AccountService } from 'app/core/auth/account.service'; import { MockTranslateService } from '../../helpers/mocks/service/mock-translate.service'; @@ -31,9 +31,11 @@ describe('ApollonDiagramList Component', () => { const route = { params: of({ courseId: 123 }), snapshot: { paramMap: convertToParamMap({ courseId: course.id }) } } as any as ActivatedRoute; TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], declarations: [ApollonDiagramListComponent], providers: [ + provideHttpClient(), + provideHttpClientTesting(), AlertService, ApollonDiagramService, MockProvider(SortService), diff --git a/src/test/javascript/spec/component/apollon-diagrams/exercise-generation/quiz-exercise-generator.spec.ts b/src/test/javascript/spec/component/apollon-diagrams/exercise-generation/quiz-exercise-generator.spec.ts index aa864fb5cc72..7ab39cb856d3 100644 --- a/src/test/javascript/spec/component/apollon-diagrams/exercise-generation/quiz-exercise-generator.spec.ts +++ b/src/test/javascript/spec/component/apollon-diagrams/exercise-generation/quiz-exercise-generator.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { Router } from '@angular/router'; import { Selection, UMLModel, UMLModelElement, findElement } from '@ls1intum/apollon'; @@ -40,9 +40,11 @@ describe('QuizExercise Generator', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], declarations: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(TranslateService), { provide: SessionStorageService, diff --git a/src/test/javascript/spec/component/assessment-shared/assessment-locks.component.spec.ts b/src/test/javascript/spec/component/assessment-shared/assessment-locks.component.spec.ts index 54ebbc921892..f63d14776140 100644 --- a/src/test/javascript/spec/component/assessment-shared/assessment-locks.component.spec.ts +++ b/src/test/javascript/spec/component/assessment-shared/assessment-locks.component.spec.ts @@ -19,8 +19,9 @@ import { of } from 'rxjs'; import { CourseManagementService } from 'app/course/manage/course-management.service'; import { MockActivatedRoute } from '../../helpers/mocks/activated-route/mock-activated-route'; import { ActivatedRoute } from '@angular/router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ExamManagementService } from 'app/exam/manage/exam-management.service'; +import { provideHttpClient } from '@angular/common/http'; describe('AssessmentLocksComponent', () => { let component: AssessmentLocksComponent; @@ -39,9 +40,11 @@ describe('AssessmentLocksComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [TranslateModule.forRoot(), HttpClientTestingModule], + imports: [TranslateModule.forRoot()], declarations: [AssessmentLocksComponent, MockPipe(ArtemisTranslatePipe), MockRouterLinkDirective, MockHasAnyAuthorityDirective, MockPipe(ArtemisDatePipe)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(TextAssessmentService), MockProvider(CourseManagementService), MockProvider(ModelingAssessmentService), diff --git a/src/test/javascript/spec/component/competencies/competency.service.spec.ts b/src/test/javascript/spec/component/competencies/competency.service.spec.ts index 2d0bc277e85b..0b88bd1810ff 100644 --- a/src/test/javascript/spec/component/competencies/competency.service.spec.ts +++ b/src/test/javascript/spec/component/competencies/competency.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; import { MockProvider } from 'ng-mocks'; @@ -43,8 +43,10 @@ describe('CompetencyService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService, { convertLectureUnitArrayDatesFromServer(res: T[]): T[] { return res; diff --git a/src/test/javascript/spec/component/competencies/course-competencies.component.spec.ts b/src/test/javascript/spec/component/competencies/course-competencies.component.spec.ts index 623244fb77f9..5f9f93ad370b 100644 --- a/src/test/javascript/spec/component/competencies/course-competencies.component.spec.ts +++ b/src/test/javascript/spec/component/competencies/course-competencies.component.spec.ts @@ -7,12 +7,12 @@ import { Competency, CompetencyProgress, CourseCompetencyType } from 'app/entiti import { ActivatedRoute } from '@angular/router'; import { AlertService } from 'app/core/util/alert.service'; import { CourseCompetenciesComponent } from 'app/overview/course-competencies/course-competencies.component'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { TextUnit } from 'app/entities/lecture-unit/textUnit.model'; import { AccountService } from 'app/core/auth/account.service'; import { User } from 'app/core/user/user.model'; import { CourseStorageService } from 'app/course/manage/course-storage.service'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ArtemisTestModule } from '../../test.module'; import { CompetencyCardStubComponent } from './competency-card-stub.component'; import { FeatureToggleService } from 'app/shared/feature-toggle/feature-toggle.service'; @@ -50,9 +50,11 @@ describe('CourseCompetencies', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], declarations: [CourseCompetenciesComponent, CompetencyCardStubComponent, MockPipe(ArtemisTranslatePipe)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(AlertService), { provide: CourseStorageService, useValue: mockCourseStorageService }, MockProvider(CompetencyService), diff --git a/src/test/javascript/spec/component/competencies/prerequisite.service.spec.ts b/src/test/javascript/spec/component/competencies/prerequisite.service.spec.ts index 3911a601d7df..c3c69d7980d2 100644 --- a/src/test/javascript/spec/component/competencies/prerequisite.service.spec.ts +++ b/src/test/javascript/spec/component/competencies/prerequisite.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; import { MockProvider } from 'ng-mocks'; @@ -44,8 +44,10 @@ describe('PrerequisiteService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService, { convertLectureUnitArrayDatesFromServer(res: T[]): T[] { return res; diff --git a/src/test/javascript/spec/component/complaints/complaint-response.service.spec.ts b/src/test/javascript/spec/component/complaints/complaint-response.service.spec.ts index 5d93f7870fa0..0031fb3bb60c 100644 --- a/src/test/javascript/spec/component/complaints/complaint-response.service.spec.ts +++ b/src/test/javascript/spec/component/complaints/complaint-response.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { ComplaintResponseService } from 'app/complaints/complaint-response.service'; @@ -23,8 +23,8 @@ describe('ComplaintResponseService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [MockProvider(AccountService)], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), MockProvider(AccountService)], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/complaints/complaint.service.spec.ts b/src/test/javascript/spec/component/complaints/complaint.service.spec.ts index 959355b8d92a..a4c2f8dbc2b3 100644 --- a/src/test/javascript/spec/component/complaints/complaint.service.spec.ts +++ b/src/test/javascript/spec/component/complaints/complaint.service.spec.ts @@ -6,13 +6,14 @@ import { ComplaintResponse } from 'app/entities/complaint-response.model'; import { User } from 'app/core/user/user.model'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../../helpers/mocks/service/mock-account.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import dayjs from 'dayjs/esm'; import { Result } from 'app/entities/result.model'; import { Exercise, ExerciseType } from 'app/entities/exercise.model'; import { Course } from 'app/entities/course.model'; import { AssessmentType } from 'app/entities/assessment-type.model'; import { ComplaintRequestDTO } from 'app/entities/complaint-request-dto.model'; +import { provideHttpClient } from '@angular/common/http'; describe('ComplaintService', () => { let complaintService: ComplaintService; @@ -57,8 +58,8 @@ describe('ComplaintService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/course/course-admin.service.spec.ts b/src/test/javascript/spec/component/course/course-admin.service.spec.ts index 23cfe17745f6..49e455d54a72 100644 --- a/src/test/javascript/spec/component/course/course-admin.service.spec.ts +++ b/src/test/javascript/spec/component/course/course-admin.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; @@ -12,6 +12,7 @@ import { MockSyncStorage } from '../../helpers/mocks/service/mock-sync-storage.s import { MockTranslateService } from '../../helpers/mocks/service/mock-translate.service'; import { CourseAdminService } from 'app/course/manage/course-admin.service'; import { UMLDiagramType } from '@ls1intum/apollon'; +import { provideHttpClient } from '@angular/common/http'; describe('Course Admin Service', () => { let courseAdminService: CourseAdminService; @@ -23,8 +24,10 @@ describe('Course Admin Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/component/course/course-for-import-dto-paging-service.spec.ts b/src/test/javascript/spec/component/course/course-for-import-dto-paging-service.spec.ts index ab3bac8da196..2df37d2275b2 100644 --- a/src/test/javascript/spec/component/course/course-for-import-dto-paging-service.spec.ts +++ b/src/test/javascript/spec/component/course/course-for-import-dto-paging-service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { AccountService } from 'app/core/auth/account.service'; @@ -6,6 +6,7 @@ import { MockAccountService } from '../../helpers/mocks/service/mock-account.ser import { CourseForImportDTOPagingService } from 'app/course/course-for-import-dto-paging-service'; import { CourseForImportDTO } from 'app/entities/course.model'; import { SortingOrder } from 'app/shared/table/pageable-table'; +import { provideHttpClient } from '@angular/common/http'; describe('CourseForImportDtoPagingService', () => { let pagingService: CourseForImportDTOPagingService; @@ -14,8 +15,8 @@ describe('CourseForImportDtoPagingService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }); pagingService = TestBed.inject(CourseForImportDTOPagingService); diff --git a/src/test/javascript/spec/component/course/course-management-tab-bar.component.spec.ts b/src/test/javascript/spec/component/course/course-management-tab-bar.component.spec.ts index 035b50fc9ad1..f65329c2fd1b 100644 --- a/src/test/javascript/spec/component/course/course-management-tab-bar.component.spec.ts +++ b/src/test/javascript/spec/component/course/course-management-tab-bar.component.spec.ts @@ -2,13 +2,13 @@ import { ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; import { Course } from 'app/entities/course.model'; import { MockComponent, MockDirective, MockProvider } from 'ng-mocks'; import { CourseManagementTabBarComponent } from 'app/course/manage/course-management-tab-bar/course-management-tab-bar.component'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { of } from 'rxjs'; import { CourseManagementService } from 'app/course/manage/course-management.service'; import { CourseAdminService } from 'app/course/manage/course-admin.service'; import { EventManager } from 'app/core/util/event-manager.service'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { HeaderCourseComponent } from 'app/overview/header-course.component'; import { ArtemisTestModule } from '../../test.module'; import { CourseExamArchiveButtonComponent } from 'app/shared/components/course-exam-archive-button/course-exam-archive-button.component'; @@ -50,8 +50,10 @@ describe('Course Management Tab Bar Component', () => { MockDirective(FeatureToggleLinkDirective), MockDirective(FeatureToggleHideDirective), ], - imports: [HttpClientTestingModule, RouterModule, ArtemisTestModule], + imports: [RouterModule, ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: { diff --git a/src/test/javascript/spec/component/course/course-management.service.spec.ts b/src/test/javascript/spec/component/course/course-management.service.spec.ts index 5dd0dd4f48de..475e1ebe2eea 100644 --- a/src/test/javascript/spec/component/course/course-management.service.spec.ts +++ b/src/test/javascript/spec/component/course/course-management.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; @@ -28,6 +28,7 @@ import { CourseStorageService } from 'app/course/manage/course-storage.service'; import { OnlineCourseDtoModel } from 'app/lti/online-course-dto.model'; import { CoursesForDashboardDTO } from 'app/course/manage/courses-for-dashboard-dto'; import { UMLDiagramType } from '@ls1intum/apollon'; +import { provideHttpClient } from '@angular/common/http'; describe('Course Management Service', () => { let courseManagementService: CourseManagementService; @@ -59,8 +60,10 @@ describe('Course Management Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/component/course/course-overview.service.spec.ts b/src/test/javascript/spec/component/course/course-overview.service.spec.ts index 7dbc94aabaea..728d0fb269a8 100644 --- a/src/test/javascript/spec/component/course/course-overview.service.spec.ts +++ b/src/test/javascript/spec/component/course/course-overview.service.spec.ts @@ -6,7 +6,7 @@ import { UMLDiagramType } from '@ls1intum/apollon'; import { Course } from 'app/entities/course.model'; import dayjs from 'dayjs/esm'; import { Lecture } from 'app/entities/lecture.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TranslateService } from '@ngx-translate/core'; import { MockTranslateService } from '../../helpers/mocks/service/mock-translate.service'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; @@ -14,6 +14,7 @@ import { MockSyncStorage } from '../../helpers/mocks/service/mock-sync-storage.s import { TextExercise } from 'app/entities/text/text-exercise.model'; import { Exam } from 'app/entities/exam/exam.model'; import { ChannelDTO, ChannelSubType, getAsChannelDTO } from 'app/entities/metis/conversation/channel.model'; +import { provideHttpClient } from '@angular/common/http'; describe('CourseOverviewService', () => { let service: CourseOverviewService; @@ -36,8 +37,10 @@ describe('CourseOverviewService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), CourseOverviewService, { provide: TranslateService, useClass: MockTranslateService }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/component/course/course-update.component.spec.ts b/src/test/javascript/spec/component/course/course-update.component.spec.ts index 289e91dbd948..9a8d29a1b1fd 100644 --- a/src/test/javascript/spec/component/course/course-update.component.spec.ts +++ b/src/test/javascript/spec/component/course/course-update.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { ComponentFixture, TestBed, fakeAsync, flush, tick } from '@angular/core/testing'; import { FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; @@ -37,7 +37,7 @@ import { By } from '@angular/platform-browser'; import { EventManager } from 'app/core/util/event-manager.service'; import { cloneDeep } from 'lodash-es'; import { FeatureToggleHideDirective } from 'app/shared/feature-toggle/feature-toggle-hide.directive'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { MockNgbModalService } from '../../helpers/mocks/service/mock-ngb-modal.service'; import { ImageCropperModalComponent } from 'app/course/manage/image-cropper-modal.component'; import { FeatureToggle, FeatureToggleService } from 'app/shared/feature-toggle/feature-toggle.service'; @@ -840,16 +840,10 @@ describe('Course Management Student Course Analytics Dashboard Update', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ - ArtemisTestModule, - HttpClientTestingModule, - MockModule(ReactiveFormsModule), - MockModule(FormsModule), - ImageCropperModule, - MockDirective(NgbTypeahead), - MockModule(NgbTooltipModule), - ], + imports: [ArtemisTestModule, MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperModule, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: AccountService, useClass: MockAccountService }, @@ -960,16 +954,10 @@ describe('Course Management Update Component Create', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ - ArtemisTestModule, - HttpClientTestingModule, - MockModule(ReactiveFormsModule), - MockModule(FormsModule), - ImageCropperModule, - MockDirective(NgbTypeahead), - MockModule(NgbTooltipModule), - ], + imports: [ArtemisTestModule, MockModule(ReactiveFormsModule), MockModule(FormsModule), ImageCropperModule, MockDirective(NgbTypeahead), MockModule(NgbTooltipModule)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: AccountService, useClass: MockAccountService }, diff --git a/src/test/javascript/spec/component/exam/manage/exam-management.service.spec.ts b/src/test/javascript/spec/component/exam/manage/exam-management.service.spec.ts index 8ece0517debd..e7ba34a33bb2 100644 --- a/src/test/javascript/spec/component/exam/manage/exam-management.service.spec.ts +++ b/src/test/javascript/spec/component/exam/manage/exam-management.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { Course } from 'app/entities/course.model'; import { ArtemisTestModule } from '../../../test.module'; import { ExamManagementService } from 'app/exam/manage/exam-management.service'; @@ -17,6 +17,7 @@ import { TextExercise } from 'app/entities/text/text-exercise.model'; import { ModelingExercise } from 'app/entities/modeling-exercise.model'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; import { UMLDiagramType } from '@ls1intum/apollon'; +import { provideHttpClient } from '@angular/common/http'; describe('Exam Management Service Tests', () => { let service: ExamManagementService; @@ -35,8 +36,8 @@ describe('Exam Management Service Tests', () => { beforeEach(() => { TestBed.configureTestingModule({ - providers: [ExamManagementService], - imports: [ArtemisTestModule, HttpClientTestingModule], + providers: [provideHttpClient(), provideHttpClientTesting(), ExamManagementService], + imports: [ArtemisTestModule], }); service = TestBed.inject(ExamManagementService); diff --git a/src/test/javascript/spec/component/exam/manage/exams/exam-checklist-exercisegroup-table.component.spec.ts b/src/test/javascript/spec/component/exam/manage/exams/exam-checklist-exercisegroup-table.component.spec.ts index da54d7079565..99af4dd418ad 100644 --- a/src/test/javascript/spec/component/exam/manage/exams/exam-checklist-exercisegroup-table.component.spec.ts +++ b/src/test/javascript/spec/component/exam/manage/exams/exam-checklist-exercisegroup-table.component.spec.ts @@ -6,12 +6,13 @@ import { Component } from '@angular/core'; import { HasAnyAuthorityDirective } from 'app/shared/auth/has-any-authority.directive'; import { ChecklistCheckComponent } from 'app/shared/components/checklist-check/checklist-check.component'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ProgressBarComponent } from 'app/shared/dashboards/tutor-participation-graph/progress-bar/progress-bar.component'; import { ExamChecklistExerciseGroupTableComponent } from 'app/exam/manage/exams/exam-checklist-component/exam-checklist-exercisegroup-table/exam-checklist-exercisegroup-table.component'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { TranslateDirective } from 'app/shared/language/translate.directive'; import { ExerciseGroupVariantColumn } from 'app/entities/exercise-group-variant-column.model'; +import { provideHttpClient } from '@angular/common/http'; @Component({ template: '', @@ -67,7 +68,6 @@ describe('ExamChecklistExerciseGroupTableComponent', () => { { path: 'course-management/:courseId/exams/:examId/test-runs', component: DummyComponent }, { path: 'course-management/:courseId/exams/:examId/students', component: DummyComponent }, ]), - HttpClientTestingModule, ], declarations: [ DummyComponent, @@ -80,7 +80,7 @@ describe('ExamChecklistExerciseGroupTableComponent', () => { ProgressBarComponent, MockComponent(FaIconComponent), ], - providers: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exam/manage/exams/exam-detail.component.spec.ts b/src/test/javascript/spec/component/exam/manage/exams/exam-detail.component.spec.ts index 4abd8b00e497..9cfa217a8c51 100644 --- a/src/test/javascript/spec/component/exam/manage/exams/exam-detail.component.spec.ts +++ b/src/test/javascript/spec/component/exam/manage/exams/exam-detail.component.spec.ts @@ -1,5 +1,5 @@ import { Location } from '@angular/common'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { Component } from '@angular/core'; import { ComponentFixture, TestBed, discardPeriodicTasks, fakeAsync } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; @@ -23,7 +23,7 @@ import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { CourseExamArchiveButtonComponent } from 'app/shared/components/course-exam-archive-button/course-exam-archive-button.component'; import { TranslateDirective } from 'app/shared/language/translate.directive'; import { ExamManagementService } from 'app/exam/manage/exam-management.service'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { of } from 'rxjs'; import { DeleteButtonDirective } from 'app/shared/delete-dialog/delete-button.directive'; import { MockAccountService } from '../../../../helpers/mocks/service/mock-account.service'; @@ -75,7 +75,6 @@ describe('ExamDetailComponent', () => { { path: 'course-management/:courseId/exams/:examId/students', component: DummyComponent }, { path: 'course-management/:courseId/exams', component: DummyComponent }, ]), - HttpClientTestingModule, ExerciseDetailDirective, MockComponent(NoDataComponent), ], @@ -101,6 +100,8 @@ describe('ExamDetailComponent', () => { MockDirective(ExerciseDetailDirective), ], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: { diff --git a/src/test/javascript/spec/component/exam/manage/student-exams/student-exam-detail.component.spec.ts b/src/test/javascript/spec/component/exam/manage/student-exams/student-exam-detail.component.spec.ts index 7f2a3e46ff70..4ec566ca9d4f 100644 --- a/src/test/javascript/spec/component/exam/manage/student-exams/student-exam-detail.component.spec.ts +++ b/src/test/javascript/spec/component/exam/manage/student-exams/student-exam-detail.component.spec.ts @@ -6,7 +6,7 @@ import { StudentExam } from 'app/entities/student-exam.model'; import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; import { MockComponent, MockDirective, MockPipe, MockProvider } from 'ng-mocks'; import { StudentExamService } from 'app/exam/manage/student-exams/student-exam.service'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { of } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; import { NgbModal, NgbModalRef, NgbModule } from '@ng-bootstrap/ng-bootstrap'; @@ -24,7 +24,7 @@ import { ParticipationType } from 'app/entities/participation/participation.mode import { Result } from 'app/entities/result.model'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { StudentExamDetailTableRowComponent } from 'app/exam/manage/student-exams/student-exam-detail-table-row/student-exam-detail-table-row.component'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { DataTableComponent } from 'app/shared/data-table/data-table.component'; import { AlertService } from 'app/core/util/alert.service'; import { TranslateDirective } from 'app/shared/language/translate.directive'; @@ -128,15 +128,7 @@ describe('StudentExamDetailComponent', () => { } as StudentExamWithGradeDTO; await TestBed.configureTestingModule({ - imports: [ - ArtemisTestModule, - RouterTestingModule.withRoutes([]), - NgbModule, - NgxDatatableModule, - ReactiveFormsModule, - TranslateModule.forRoot(), - HttpClientTestingModule, - ], + imports: [ArtemisTestModule, RouterTestingModule.withRoutes([]), NgbModule, NgxDatatableModule, ReactiveFormsModule, TranslateModule.forRoot()], declarations: [ StudentExamDetailComponent, MockComponent(DataTableComponent), @@ -150,6 +142,8 @@ describe('StudentExamDetailComponent', () => { StudentExamDetailTableRowComponent, ], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(StudentExamService, { updateWorkingTime: () => { return of( diff --git a/src/test/javascript/spec/component/exam/manage/suspicious-behavior/suspicious-sessions.service.spec.ts b/src/test/javascript/spec/component/exam/manage/suspicious-behavior/suspicious-sessions.service.spec.ts index 0760f147551b..d49930cd7a21 100644 --- a/src/test/javascript/spec/component/exam/manage/suspicious-behavior/suspicious-sessions.service.spec.ts +++ b/src/test/javascript/spec/component/exam/manage/suspicious-behavior/suspicious-sessions.service.spec.ts @@ -1,8 +1,9 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { SuspiciousSessionsService } from 'app/exam/manage/suspicious-behavior/suspicious-sessions.service'; import { SuspiciousExamSessions, SuspiciousSessionReason, SuspiciousSessionsAnalysisOptions } from 'app/entities/exam/exam-session.model'; +import { provideHttpClient } from '@angular/common/http'; describe('SuspiciousSessionsService', () => { let service: SuspiciousSessionsService; @@ -34,7 +35,8 @@ describe('SuspiciousSessionsService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(SuspiciousSessionsService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/exam/participate/summary/exercises/file-upload-exam-summary.component.spec.ts b/src/test/javascript/spec/component/exam/participate/summary/exercises/file-upload-exam-summary.component.spec.ts index 37611dc202f5..f06a761ea035 100644 --- a/src/test/javascript/spec/component/exam/participate/summary/exercises/file-upload-exam-summary.component.spec.ts +++ b/src/test/javascript/spec/component/exam/participate/summary/exercises/file-upload-exam-summary.component.spec.ts @@ -2,11 +2,12 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FileUploadExamSummaryComponent } from 'app/exam/participate/summary/exercises/file-upload-exam-summary/file-upload-exam-summary.component'; import { MockComponent, MockPipe } from 'ng-mocks'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { FileUploadSubmission } from 'app/entities/file-upload-submission.model'; import { By } from '@angular/platform-browser'; import { FileUploadSubmissionComponent } from 'app/exercises/file-upload/participate/file-upload-submission.component'; import { FileUploadExercise } from 'app/entities/file-upload-exercise.model'; +import { provideHttpClient } from '@angular/common/http'; describe('FileUploadExamSummaryComponent', () => { let fixture: ComponentFixture; @@ -16,8 +17,9 @@ describe('FileUploadExamSummaryComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], declarations: [FileUploadExamSummaryComponent, MockPipe(ArtemisTranslatePipe), MockComponent(FileUploadSubmissionComponent)], + providers: [provideHttpClient(), provideHttpClientTesting()], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exam/participate/summary/exercises/quiz-exam-summary.component.spec.ts b/src/test/javascript/spec/component/exam/participate/summary/exercises/quiz-exam-summary.component.spec.ts index 6dc458e8d548..aa873e10d504 100644 --- a/src/test/javascript/spec/component/exam/participate/summary/exercises/quiz-exam-summary.component.spec.ts +++ b/src/test/javascript/spec/component/exam/participate/summary/exercises/quiz-exam-summary.component.spec.ts @@ -1,4 +1,5 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { TranslateService } from '@ngx-translate/core'; import { Exam } from 'app/entities/exam/exam.model'; @@ -77,9 +78,9 @@ describe('QuizExamSummaryComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, MockModule(ArtemisQuizQuestionTypesModule)], + imports: [MockModule(ArtemisQuizQuestionTypesModule)], declarations: [QuizExamSummaryComponent, MockPipe(ArtemisTranslatePipe)], - providers: [MockProvider(TranslateService), MockProvider(QuizExerciseService), MockProvider(ArtemisServerDateService)], + providers: [provideHttpClient(), provideHttpClientTesting(), MockProvider(TranslateService), MockProvider(QuizExerciseService), MockProvider(ArtemisServerDateService)], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exam/participate/summary/result-overview/exam-result-overview.component.spec.ts b/src/test/javascript/spec/component/exam/participate/summary/result-overview/exam-result-overview.component.spec.ts index 836d997c7530..f6e001ff7ff1 100644 --- a/src/test/javascript/spec/component/exam/participate/summary/result-overview/exam-result-overview.component.spec.ts +++ b/src/test/javascript/spec/component/exam/participate/summary/result-overview/exam-result-overview.component.spec.ts @@ -13,7 +13,7 @@ import { QuizExercise } from 'app/entities/quiz/quiz-exercise.model'; import { ModelingExercise } from 'app/entities/modeling-exercise.model'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { Result } from 'app/entities/result.model'; import { ExerciseService } from 'app/exercises/shared/exercise/exercise.service'; import { GradeType } from 'app/entities/grading-scale.model'; @@ -22,6 +22,7 @@ import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { ExerciseResult, StudentExamWithGradeDTO } from 'app/exam/exam-scores/exam-score-dtos.model'; import { GradingKeyTableComponent } from 'app/grading-system/grading-key-overview/grading-key/grading-key-table.component'; import { CollapsibleCardComponent } from 'app/exam/participate/summary/collapsible-card.component'; +import { provideHttpClient } from '@angular/common/http'; let fixture: ComponentFixture; let component: ExamResultOverviewComponent; @@ -128,7 +129,7 @@ const textExerciseResult = { describe('ExamResultOverviewComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [RouterTestingModule.withRoutes([]), MockModule(NgbModule), HttpClientTestingModule], + imports: [RouterTestingModule.withRoutes([]), MockModule(NgbModule)], declarations: [ ExamResultOverviewComponent, MockComponent(FaIconComponent), @@ -136,7 +137,7 @@ describe('ExamResultOverviewComponent', () => { MockComponent(GradingKeyTableComponent), MockComponent(CollapsibleCardComponent), ], - providers: [MockProvider(ExerciseService)], + providers: [provideHttpClient(), provideHttpClientTesting(), MockProvider(ExerciseService)], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping-question-list.component.spec.ts b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping-question-list.component.spec.ts index 00839b99c1c7..e4d6fe61cc0d 100644 --- a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping-question-list.component.spec.ts +++ b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping-question-list.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; @@ -18,6 +18,7 @@ jest.mock('@angular/cdk/drag-drop', () => { }); import * as DragDrop from '@angular/cdk/drag-drop'; import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop'; +import { provideHttpClient } from '@angular/common/http'; describe('QuizPoolMappingQuestionListComponent', () => { let fixture: ComponentFixture; @@ -25,9 +26,9 @@ describe('QuizPoolMappingQuestionListComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, DragDrop.DragDropModule, HttpClientTestingModule], + imports: [ArtemisTestModule, DragDrop.DragDropModule], declarations: [QuizPoolMappingQuestionListComponent, MockPipe(ArtemisTranslatePipe), MockPipe(ArtemisDatePipe), MockDirective(TranslateDirective)], - providers: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping.component.spec.ts b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping.component.spec.ts index 595a8cb073a1..8c0c3e6c9cd8 100644 --- a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping.component.spec.ts +++ b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool-mapping.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ButtonComponent } from 'app/shared/components/button.component'; import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; @@ -13,6 +13,7 @@ import { QuizPoolMappingComponent } from 'app/exercises/quiz/manage/quiz-pool-ma import { QuizGroup } from 'app/entities/quiz/quiz-group.model'; import { MultipleChoiceQuestion } from 'app/entities/quiz/multiple-choice-question.model'; import { DeleteButtonDirective } from 'app/shared/delete-dialog/delete-button.directive'; +import { provideHttpClient } from '@angular/common/http'; describe('QuizPoolMappingComponent', () => { let fixture: ComponentFixture; @@ -20,7 +21,7 @@ describe('QuizPoolMappingComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockDirective(NgbTooltip)], + imports: [ArtemisTestModule, MockDirective(NgbTooltip)], declarations: [ QuizPoolMappingComponent, ButtonComponent, @@ -31,7 +32,7 @@ describe('QuizPoolMappingComponent', () => { MockDirective(NgModel), MockDirective(DeleteButtonDirective), ], - providers: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool.component.spec.ts b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool.component.spec.ts index c3c268ae9481..de726ad5d815 100644 --- a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool.component.spec.ts +++ b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-pool.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; @@ -9,7 +9,7 @@ import { QuizPoolComponent } from 'app/exercises/quiz/manage/quiz-pool.component import { ActivatedRoute, convertToParamMap } from '@angular/router'; import { QuizPoolService } from 'app/exercises/quiz/manage/quiz-pool.service'; import { of } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { QuizPool } from 'app/entities/quiz/quiz-pool.model'; import { MultipleChoiceQuestion } from 'app/entities/quiz/multiple-choice-question.model'; import { QuizGroup } from 'app/entities/quiz/quiz-group.model'; @@ -39,7 +39,7 @@ describe('QuizPoolComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, NgbModule, FormsModule], + imports: [ArtemisTestModule, NgbModule, FormsModule], declarations: [ QuizPoolComponent, MockComponent(QuizPoolMappingComponent), @@ -48,7 +48,7 @@ describe('QuizPoolComponent', () => { MockPipe(ArtemisDatePipe), MockDirective(TranslateDirective), ], - providers: [{ provide: ActivatedRoute, useValue: route }, MockProvider(ChangeDetectorRef), MockProvider(AlertService)], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: ActivatedRoute, useValue: route }, MockProvider(ChangeDetectorRef), MockProvider(AlertService)], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit-existing.component.spec.ts b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit-existing.component.spec.ts index cac2387f7258..c4584c18ccee 100644 --- a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit-existing.component.spec.ts +++ b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit-existing.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; @@ -9,7 +9,7 @@ import { CommonModule } from '@angular/common'; import { QuizQuestionListEditExistingComponent, State } from 'app/exercises/quiz/manage/quiz-question-list-edit-existing.component'; import { ExamManagementService } from 'app/exam/manage/exam-management.service'; import { of } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { Exam } from 'app/entities/exam/exam.model'; import { CourseManagementService } from 'app/course/manage/course-management.service'; import { Course } from 'app/entities/course.model'; @@ -106,9 +106,9 @@ describe('QuizQuestionListEditExistingComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [CommonModule, ArtemisTestModule, HttpClientTestingModule, FormsModule], + imports: [CommonModule, ArtemisTestModule, FormsModule], declarations: [QuizQuestionListEditExistingComponent, MockPipe(ArtemisTranslatePipe), MockPipe(ArtemisDatePipe), MockDirective(TranslateDirective)], - providers: [MockProvider(NgbModal), MockProvider(ChangeDetectorRef)], + providers: [provideHttpClient(), provideHttpClientTesting(), MockProvider(NgbModal), MockProvider(ChangeDetectorRef)], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit.component.spec.ts b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit.component.spec.ts index b596c65ce5b0..8c3f31495bed 100644 --- a/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit.component.spec.ts +++ b/src/test/javascript/spec/component/exercises/quiz/manage/quiz-question-list-edit.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ArtemisDatePipe } from 'app/shared/pipes/artemis-date.pipe'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; @@ -10,6 +10,7 @@ import { CommonModule } from '@angular/common'; import { QuizQuestionListEditExistingComponent } from 'app/exercises/quiz/manage/quiz-question-list-edit-existing.component'; import { MultipleChoiceQuestion } from 'app/entities/quiz/multiple-choice-question.model'; import { ShortAnswerQuestion } from 'app/entities/quiz/short-answer-question.model'; +import { provideHttpClient } from '@angular/common/http'; describe('QuizQuestionListEditComponent', () => { let fixture: ComponentFixture; @@ -24,7 +25,7 @@ describe('QuizQuestionListEditComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [CommonModule, ArtemisTestModule, HttpClientTestingModule], + imports: [CommonModule, ArtemisTestModule], declarations: [ QuizQuestionListEditComponent, MockComponent(QuizQuestionListEditExistingComponent), @@ -32,7 +33,7 @@ describe('QuizQuestionListEditComponent', () => { MockPipe(ArtemisDatePipe), MockDirective(TranslateDirective), ], - providers: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/exercises/quiz/quiz-participation.component.spec.ts b/src/test/javascript/spec/component/exercises/quiz/quiz-participation.component.spec.ts index fcd06811ac07..ad730e43b55d 100644 --- a/src/test/javascript/spec/component/exercises/quiz/quiz-participation.component.spec.ts +++ b/src/test/javascript/spec/component/exercises/quiz/quiz-participation.component.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed, discardPeriodicTasks, fakeAsync, tick } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; @@ -139,9 +139,11 @@ describe('QuizParticipationComponent', () => { describe('live mode', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockDirective(NgbTooltip)], + imports: [ArtemisTestModule, MockDirective(NgbTooltip)], declarations: [testBedDeclarations, MockDirective(NgModel)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: { @@ -498,9 +500,11 @@ describe('QuizParticipationComponent', () => { describe('preview mode', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockDirective(NgbTooltip)], + imports: [ArtemisTestModule, MockDirective(NgbTooltip)], declarations: testBedDeclarations, providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: { @@ -577,9 +581,11 @@ describe('QuizParticipationComponent', () => { describe('practice mode', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockDirective(NgbTooltip)], + imports: [ArtemisTestModule, MockDirective(NgbTooltip)], declarations: testBedDeclarations, providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: { @@ -658,9 +664,11 @@ describe('QuizParticipationComponent', () => { describe('solution mode', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockDirective(NgbTooltip)], + imports: [ArtemisTestModule, MockDirective(NgbTooltip)], declarations: testBedDeclarations, providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: { diff --git a/src/test/javascript/spec/component/exercises/quiz/quiz-participation.service.spec.ts b/src/test/javascript/spec/component/exercises/quiz/quiz-participation.service.spec.ts index c374cbe6de55..59ba0f36dc58 100644 --- a/src/test/javascript/spec/component/exercises/quiz/quiz-participation.service.spec.ts +++ b/src/test/javascript/spec/component/exercises/quiz/quiz-participation.service.spec.ts @@ -1,10 +1,11 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { QuizParticipationService } from 'app/exercises/quiz/participate/quiz-participation.service'; import { QuizSubmission } from 'app/entities/quiz/quiz-submission.model'; import { Result } from 'app/entities/result.model'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../../../helpers/mocks/service/mock-account.service'; +import { provideHttpClient } from '@angular/common/http'; describe('Quiz Participation Service', () => { let service: QuizParticipationService; @@ -12,8 +13,8 @@ describe('Quiz Participation Service', () => { let exerciseId: number; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }); service = TestBed.inject(QuizParticipationService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/iris/iris-chat-http.service.spec.ts b/src/test/javascript/spec/component/iris/iris-chat-http.service.spec.ts index 28608a069935..8ca9b6a23024 100644 --- a/src/test/javascript/spec/component/iris/iris-chat-http.service.spec.ts +++ b/src/test/javascript/spec/component/iris/iris-chat-http.service.spec.ts @@ -1,10 +1,11 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { irisExercise, mockClientMessage, mockConversation, mockServerMessage } from '../../helpers/sample/iris-sample-data'; import { IrisUserMessage } from 'app/entities/iris/iris-message.model'; import { IrisChatHttpService } from 'app/iris/iris-chat-http.service'; import { ChatServiceMode } from 'app/iris/iris-chat.service'; +import { provideHttpClient } from '@angular/common/http'; describe('Iris Chat Http Service', () => { let service: IrisChatHttpService; @@ -12,8 +13,8 @@ describe('Iris Chat Http Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [IrisChatHttpService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), IrisChatHttpService], }); service = TestBed.inject(IrisChatHttpService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/iris/iris-status.service.spec.ts b/src/test/javascript/spec/component/iris/iris-status.service.spec.ts index d1971823407c..54f7ee7ced58 100644 --- a/src/test/javascript/spec/component/iris/iris-status.service.spec.ts +++ b/src/test/javascript/spec/component/iris/iris-status.service.spec.ts @@ -1,9 +1,10 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { JhiWebsocketService } from 'app/core/websocket/websocket.service'; import { of } from 'rxjs'; import { IrisStatusService } from 'app/iris/iris-status.service'; import { IrisRateLimitInformation } from 'app/entities/iris/iris-ratelimit-info.model'; +import { provideHttpClient } from '@angular/common/http'; describe('IrisStatusService', () => { let service: IrisStatusService; @@ -11,8 +12,10 @@ describe('IrisStatusService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), IrisStatusService, { provide: JhiWebsocketService, useValue: { connectionState: of({ connected: true, intendedDisconnect: false, wasEverConnectedBefore: true }) } }, ], diff --git a/src/test/javascript/spec/component/iris/settings/iris-settings.service.spec.ts b/src/test/javascript/spec/component/iris/settings/iris-settings.service.spec.ts index 4a181b852a84..0be52f134f7b 100644 --- a/src/test/javascript/spec/component/iris/settings/iris-settings.service.spec.ts +++ b/src/test/javascript/spec/component/iris/settings/iris-settings.service.spec.ts @@ -1,8 +1,9 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { IrisSettingsService } from 'app/iris/settings/shared/iris-settings.service'; import { mockSettings } from './mock-settings'; +import { provideHttpClient } from '@angular/common/http'; describe('Iris Settings Service', () => { let service: IrisSettingsService; @@ -10,8 +11,8 @@ describe('Iris Settings Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [IrisSettingsService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), IrisSettingsService], }); service = TestBed.inject(IrisSettingsService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/iris/ui/exercise-chatbot-button.component.spec.ts b/src/test/javascript/spec/component/iris/ui/exercise-chatbot-button.component.spec.ts index 8980bc1e35f7..f26a10d679ca 100644 --- a/src/test/javascript/spec/component/iris/ui/exercise-chatbot-button.component.spec.ts +++ b/src/test/javascript/spec/component/iris/ui/exercise-chatbot-button.component.spec.ts @@ -7,7 +7,7 @@ import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { MockComponent, MockPipe, MockProvider } from 'ng-mocks'; import { AccountService } from 'app/core/auth/account.service'; import { Subject, of } from 'rxjs'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { MockAccountService } from '../../../helpers/mocks/service/mock-account.service'; import { ActivatedRoute } from '@angular/router'; import { mockServerSessionHttpResponseWithId, mockWebsocketServerMessage } from '../../../helpers/sample/iris-sample-data'; @@ -19,6 +19,7 @@ import { IrisWebsocketService } from 'app/iris/iris-websocket.service'; import { IrisStatusService } from 'app/iris/iris-status.service'; import { UserService } from 'app/core/user/user.service'; import dayjs from 'dayjs/esm'; +import { provideHttpClient } from '@angular/common/http'; describe('ExerciseChatbotButtonComponent', () => { let component: IrisExerciseChatbotButtonComponent; @@ -68,9 +69,11 @@ describe('ExerciseChatbotButtonComponent', () => { } as unknown as Overlay; await TestBed.configureTestingModule({ - imports: [FormsModule, FontAwesomeModule, HttpClientTestingModule], + imports: [FormsModule, FontAwesomeModule], declarations: [IrisExerciseChatbotButtonComponent, MockComponent(IrisLogoComponent), MockPipe(ArtemisTranslatePipe)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), IrisChatService, MockProvider(IrisChatHttpService), MockProvider(IrisWebsocketService), diff --git a/src/test/javascript/spec/component/iris/websocket.service.spec.ts b/src/test/javascript/spec/component/iris/websocket.service.spec.ts index 3ddc00ce2c7c..b1f317220d9c 100644 --- a/src/test/javascript/spec/component/iris/websocket.service.spec.ts +++ b/src/test/javascript/spec/component/iris/websocket.service.spec.ts @@ -1,11 +1,12 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { JhiWebsocketService } from 'app/core/websocket/websocket.service'; import { MockProvider } from 'ng-mocks'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../../helpers/mocks/service/mock-account.service'; import { IrisWebsocketService } from 'app/iris/iris-websocket.service'; import { defer, of } from 'rxjs'; +import { provideHttpClient } from '@angular/common/http'; describe('IrisWebsocketService', () => { let irisWebsocketService: IrisWebsocketService; @@ -16,8 +17,14 @@ describe('IrisWebsocketService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [IrisWebsocketService, MockProvider(JhiWebsocketService), { provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [ + provideHttpClient(), + provideHttpClientTesting(), + IrisWebsocketService, + MockProvider(JhiWebsocketService), + { provide: AccountService, useClass: MockAccountService }, + ], }); irisWebsocketService = TestBed.inject(IrisWebsocketService); jhiWebsocketService = TestBed.inject(JhiWebsocketService); diff --git a/src/test/javascript/spec/component/lecture-unit/attachment-unit/attachment-unit.service.spec.ts b/src/test/javascript/spec/component/lecture-unit/attachment-unit/attachment-unit.service.spec.ts index 504f8ffd3903..81d65f9709f1 100644 --- a/src/test/javascript/spec/component/lecture-unit/attachment-unit/attachment-unit.service.spec.ts +++ b/src/test/javascript/spec/component/lecture-unit/attachment-unit/attachment-unit.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync } from '@angular/core/testing'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; import { MockProvider } from 'ng-mocks'; @@ -20,8 +20,10 @@ describe('AttachmentUnitService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService, { convertLectureUnitResponseDatesFromServer(res: HttpResponse): HttpResponse { return res; diff --git a/src/test/javascript/spec/component/lecture-unit/exercise-unit/exercise-unit.service.spec.ts b/src/test/javascript/spec/component/lecture-unit/exercise-unit/exercise-unit.service.spec.ts index 61d60ac7d907..546e72b4d087 100644 --- a/src/test/javascript/spec/component/lecture-unit/exercise-unit/exercise-unit.service.spec.ts +++ b/src/test/javascript/spec/component/lecture-unit/exercise-unit/exercise-unit.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; import { MockProvider } from 'ng-mocks'; @@ -20,8 +20,10 @@ describe('ExerciseUnitService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService, { convertLectureUnitResponseDatesFromServer(res: HttpResponse): HttpResponse { return res; diff --git a/src/test/javascript/spec/component/lecture-unit/lecture-unit.service.spec.ts b/src/test/javascript/spec/component/lecture-unit/lecture-unit.service.spec.ts index 9195af36b64b..df7b3e171889 100644 --- a/src/test/javascript/spec/component/lecture-unit/lecture-unit.service.spec.ts +++ b/src/test/javascript/spec/component/lecture-unit/lecture-unit.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync } from '@angular/core/testing'; import { Lecture } from 'app/entities/lecture.model'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; @@ -27,7 +27,8 @@ describe('LectureUnitService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }); expectedResultArray = {} as HttpResponse; service = TestBed.inject(LectureUnitService); diff --git a/src/test/javascript/spec/component/lecture-unit/online-unit/online-unit.service.spec.ts b/src/test/javascript/spec/component/lecture-unit/online-unit/online-unit.service.spec.ts index 9b546b390b60..24be38f98865 100644 --- a/src/test/javascript/spec/component/lecture-unit/online-unit/online-unit.service.spec.ts +++ b/src/test/javascript/spec/component/lecture-unit/online-unit/online-unit.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync } from '@angular/core/testing'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; import { MockProvider } from 'ng-mocks'; @@ -18,8 +18,10 @@ describe('OnlineUnitService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService, { convertLectureUnitResponseDatesFromServer(res: HttpResponse): HttpResponse { if (res.body) { diff --git a/src/test/javascript/spec/component/lecture-unit/text-unit/text-unit.service.spec.ts b/src/test/javascript/spec/component/lecture-unit/text-unit/text-unit.service.spec.ts index 206c1cb3effb..b3c958e5e9f6 100644 --- a/src/test/javascript/spec/component/lecture-unit/text-unit/text-unit.service.spec.ts +++ b/src/test/javascript/spec/component/lecture-unit/text-unit/text-unit.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync } from '@angular/core/testing'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; import { MockProvider } from 'ng-mocks'; @@ -17,8 +17,10 @@ describe('TextUnitService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService, { convertLectureUnitResponseDatesFromServer(res: HttpResponse): HttpResponse { if (res.body) { diff --git a/src/test/javascript/spec/component/lecture-unit/video-unit/video-unit.service.spec.ts b/src/test/javascript/spec/component/lecture-unit/video-unit/video-unit.service.spec.ts index 29142772bdb2..1ef5b4d43f75 100644 --- a/src/test/javascript/spec/component/lecture-unit/video-unit/video-unit.service.spec.ts +++ b/src/test/javascript/spec/component/lecture-unit/video-unit/video-unit.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync } from '@angular/core/testing'; import { LectureUnitService } from 'app/lecture/lecture-unit/lecture-unit-management/lectureUnit.service'; import { MockProvider } from 'ng-mocks'; @@ -17,8 +17,10 @@ describe('VideoUnitService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService, { convertLectureUnitResponseDatesFromServer(res: HttpResponse): HttpResponse { if (res.body) { diff --git a/src/test/javascript/spec/component/lecture/lecture-detail.component.spec.ts b/src/test/javascript/spec/component/lecture/lecture-detail.component.spec.ts index 35e529ded700..367f3d916eff 100644 --- a/src/test/javascript/spec/component/lecture/lecture-detail.component.spec.ts +++ b/src/test/javascript/spec/component/lecture/lecture-detail.component.spec.ts @@ -13,9 +13,9 @@ import { MockTranslateService } from '../../helpers/mocks/service/mock-translate import { MockLocalStorageService } from '../../helpers/mocks/service/mock-local-storage.service'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { TranslateService } from '@ngx-translate/core'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { LectureService } from 'app/lecture/lecture.service'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { IrisSettingsService } from 'app/iris/settings/shared/iris-settings.service'; import { ProfileService } from 'app/shared/layouts/profiles/profile.service'; import { PROFILE_IRIS } from 'app/app.constants'; @@ -49,8 +49,10 @@ describe('LectureDetailComponent', () => { }; await TestBed.configureTestingModule({ - declarations: [LectureDetailComponent, HtmlForMarkdownPipe, MockPipe(ArtemisDatePipe), MockModule(RouterModule), DetailOverviewListComponent, HttpClientTestingModule], + declarations: [LectureDetailComponent, HtmlForMarkdownPipe, MockPipe(ArtemisDatePipe), MockModule(RouterModule), DetailOverviewListComponent], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: mockActivatedRoute }, MockProvider(SessionStorageService), { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/component/link-preview/link-preview.service.spec.ts b/src/test/javascript/spec/component/link-preview/link-preview.service.spec.ts index 9b494f35a8c3..450cc228053a 100644 --- a/src/test/javascript/spec/component/link-preview/link-preview.service.spec.ts +++ b/src/test/javascript/spec/component/link-preview/link-preview.service.spec.ts @@ -1,4 +1,5 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { LinkPreviewService } from 'app/shared/link-preview/services/link-preview.service'; @@ -8,8 +9,8 @@ describe('LinkPreviewService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [LinkPreviewService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), LinkPreviewService], }); service = TestBed.inject(LinkPreviewService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/localci/build-agents/build-agents.service.spec.ts b/src/test/javascript/spec/component/localci/build-agents/build-agents.service.spec.ts index 494f211ee2b3..421b868c03fe 100644 --- a/src/test/javascript/spec/component/localci/build-agents/build-agents.service.spec.ts +++ b/src/test/javascript/spec/component/localci/build-agents/build-agents.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { MockTranslateService } from '../../../helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; import { BuildJob } from 'app/entities/programming/build-job.model'; @@ -10,6 +10,7 @@ import { BuildAgent } from 'app/entities/programming/build-agent.model'; import { RepositoryInfo, TriggeredByPushTo } from 'app/entities/programming/repository-info.model'; import { JobTimingInfo } from 'app/entities/job-timing-info.model'; import { BuildConfig } from 'app/entities/programming/build-config.model'; +import { provideHttpClient } from '@angular/common/http'; describe('BuildAgentsService', () => { let service: BuildAgentsService; @@ -75,8 +76,8 @@ describe('BuildAgentsService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: TranslateService, useClass: MockTranslateService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }], }); service = TestBed.inject(BuildAgentsService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/localci/build-queue/build-queue.service.spec.ts b/src/test/javascript/spec/component/localci/build-queue/build-queue.service.spec.ts index e762ed0d878b..73b4ac460f63 100644 --- a/src/test/javascript/spec/component/localci/build-queue/build-queue.service.spec.ts +++ b/src/test/javascript/spec/component/localci/build-queue/build-queue.service.spec.ts @@ -1,7 +1,7 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { BuildQueueService } from 'app/localci/build-queue/build-queue.service'; -import { HttpClientTestingModule, HttpTestingController, TestRequest } from '@angular/common/http/testing'; +import { HttpTestingController, TestRequest, provideHttpClientTesting } from '@angular/common/http/testing'; import { Router } from '@angular/router'; import { MockRouter } from '../../../helpers/mocks/mock-router'; import { MockSyncStorage } from '../../../helpers/mocks/service/mock-sync-storage.service'; @@ -14,6 +14,7 @@ import { RepositoryInfo, TriggeredByPushTo } from 'app/entities/programming/repo import { JobTimingInfo } from 'app/entities/job-timing-info.model'; import { BuildConfig } from 'app/entities/programming/build-config.model'; import { FinishedBuildJobFilter } from 'app/localci/build-queue/build-queue.component'; +import { provideHttpClient } from '@angular/common/http'; describe('BuildQueueService', () => { let service: BuildQueueService; @@ -42,8 +43,10 @@ describe('BuildQueueService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/component/lti/lti13-dynamic-registration.component.spec.ts b/src/test/javascript/spec/component/lti/lti13-dynamic-registration.component.spec.ts index 4aa1669fb065..56175d76c661 100644 --- a/src/test/javascript/spec/component/lti/lti13-dynamic-registration.component.spec.ts +++ b/src/test/javascript/spec/component/lti/lti13-dynamic-registration.component.spec.ts @@ -2,8 +2,8 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ArtemisTestModule } from '../../test.module'; import { Lti13DynamicRegistrationComponent } from 'app/lti/lti13-dynamic-registration.component'; import { ActivatedRoute, ActivatedRouteSnapshot, Params, Router, convertToParamMap } from '@angular/router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { HttpClient } from '@angular/common/http'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpClient, provideHttpClient } from '@angular/common/http'; import { MockRouter } from '../../helpers/mocks/mock-router'; import { of, throwError } from 'rxjs'; @@ -20,11 +20,8 @@ describe('Lti13DynamicRegistrationComponentTest', () => { } as ActivatedRoute; TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], - providers: [ - { provide: ActivatedRoute, useValue: route }, - { provide: Router, useClass: MockRouter }, - ], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: ActivatedRoute, useValue: route }, { provide: Router, useClass: MockRouter }], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/lti/lti13-exercise-launch.component.spec.ts b/src/test/javascript/spec/component/lti/lti13-exercise-launch.component.spec.ts index a7c2acd4db34..9b4cf223fe7a 100644 --- a/src/test/javascript/spec/component/lti/lti13-exercise-launch.component.spec.ts +++ b/src/test/javascript/spec/component/lti/lti13-exercise-launch.component.spec.ts @@ -2,8 +2,8 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testin import { ArtemisTestModule } from '../../test.module'; import { Lti13ExerciseLaunchComponent } from 'app/lti/lti13-exercise-launch.component'; import { ActivatedRoute, ActivatedRouteSnapshot, Router, convertToParamMap } from '@angular/router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { HttpClient } from '@angular/common/http'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpClient, provideHttpClient } from '@angular/common/http'; import { of, throwError } from 'rxjs'; import { LoginService } from 'app/core/login/login.service'; import { AccountService } from 'app/core/auth/account.service'; @@ -32,8 +32,10 @@ describe('Lti13ExerciseLaunchComponent', () => { window.sessionStorage.setItem('state', 'state'); TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: ActivatedRoute, useValue: route }, { provide: LoginService, useValue: loginService }, { provide: AccountService, useClass: MockAccountService }, diff --git a/src/test/javascript/spec/component/manage/exercise-paging.service.spec.ts b/src/test/javascript/spec/component/manage/exercise-paging.service.spec.ts index 7acce4232953..b778b3a8a490 100644 --- a/src/test/javascript/spec/component/manage/exercise-paging.service.spec.ts +++ b/src/test/javascript/spec/component/manage/exercise-paging.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpClient } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpClient, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { TranslateService } from '@ngx-translate/core'; import { QuizExercise } from 'app/entities/quiz/quiz-exercise.model'; @@ -17,8 +17,10 @@ describe('Exercise Paging Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: LocalStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/component/modeling-editor/modeling-editor.component.spec.ts b/src/test/javascript/spec/component/modeling-editor/modeling-editor.component.spec.ts index 5fcb6a63a1ee..b340821a8a37 100644 --- a/src/test/javascript/spec/component/modeling-editor/modeling-editor.component.spec.ts +++ b/src/test/javascript/spec/component/modeling-editor/modeling-editor.component.spec.ts @@ -4,7 +4,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ActivatedRoute, convertToParamMap } from '@angular/router'; import { Subject, of } from 'rxjs'; import { ApollonDiagram } from 'app/entities/apollon-diagram.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ApollonEditor, Patch, UMLDiagramType, UMLModel } from '@ls1intum/apollon'; import { Text } from '@ls1intum/apollon/lib/es5/utils/svg/text'; import { ModelingEditorComponent } from 'app/exercises/modeling/shared/modeling-editor.component'; @@ -16,6 +16,7 @@ import { SimpleChange } from '@angular/core'; import { MockComponent, MockProvider } from 'ng-mocks'; import { ModelingExplanationEditorComponent } from 'app/exercises/modeling/shared/modeling-explanation-editor.component'; import { associationUML, personUML, studentUML } from 'app/guided-tour/guided-tour-task.model'; +import { provideHttpClient } from '@angular/common/http'; // has to be overridden, because jsdom does not provide a getBBox() function for SVGTextElements Text.size = () => { @@ -35,9 +36,9 @@ describe('ModelingEditorComponent', () => { diagram.jsonRepresentation = JSON.stringify(classDiagram); TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, ArtemisTestModule], + imports: [ArtemisTestModule], declarations: [ModelingEditorComponent, MockComponent(ModelingExplanationEditorComponent)], - providers: [MockProvider(GuidedTourService), { provide: ActivatedRoute, useValue: route }], + providers: [provideHttpClient(), provideHttpClientTesting(), MockProvider(GuidedTourService), { provide: ActivatedRoute, useValue: route }], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/organization/organization-management.service.spec.ts b/src/test/javascript/spec/component/organization/organization-management.service.spec.ts index 7185b111d553..e3bd38c76f91 100644 --- a/src/test/javascript/spec/component/organization/organization-management.service.spec.ts +++ b/src/test/javascript/spec/component/organization/organization-management.service.spec.ts @@ -3,14 +3,14 @@ import { Organization } from 'app/entities/organization.model'; import { MockRouter } from '../../helpers/mocks/mock-router'; import { MockSyncStorage } from '../../helpers/mocks/service/mock-sync-storage.service'; import { MockTranslateService } from '../../helpers/mocks/service/mock-translate.service'; -import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { Router } from '@angular/router'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { TranslateService } from '@ngx-translate/core'; import { User } from 'app/core/user/user.model'; -import { fakeAsync, tick } from '@angular/core/testing'; import { OrganizationCountDto } from 'app/admin/organization-management/organization-count-dto.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Organization Service', () => { let service: OrganizationManagementService; @@ -19,8 +19,10 @@ describe('Organization Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/component/overview/course-competencies/course-competencies-details.component.spec.ts b/src/test/javascript/spec/component/overview/course-competencies/course-competencies-details.component.spec.ts index 658cc5b4f7ae..4fbb28e42077 100644 --- a/src/test/javascript/spec/component/overview/course-competencies/course-competencies-details.component.spec.ts +++ b/src/test/javascript/spec/component/overview/course-competencies/course-competencies-details.component.spec.ts @@ -18,11 +18,11 @@ import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { FireworksComponent } from 'app/shared/fireworks/fireworks.component'; import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; import { MockRouter } from '../../../helpers/mocks/mock-router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { Competency, CompetencyProgress } from 'app/entities/competency.model'; import { TextExercise } from 'app/entities/text/text-exercise.model'; import { TextUnit } from 'app/entities/lecture-unit/textUnit.model'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { MockHasAnyAuthorityDirective } from '../../../helpers/mocks/directive/mock-has-any-authority.directive'; import { By } from '@angular/platform-browser'; import { HelpIconComponent } from 'app/shared/components/help-icon.component'; @@ -51,7 +51,7 @@ describe('CourseCompetenciesDetails', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockModule(NgbTooltipModule)], + imports: [ArtemisTestModule, MockModule(NgbTooltipModule)], declarations: [ CourseCompetenciesDetailsComponent, MockPipe(ArtemisTranslatePipe), @@ -70,6 +70,8 @@ describe('CourseCompetenciesDetails', () => { MockPipe(HtmlForMarkdownPipe), ], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(LectureUnitService), MockProvider(AlertService), MockProvider(FeatureToggleService), diff --git a/src/test/javascript/spec/component/overview/course-conversations/services/channel.service.spec.ts b/src/test/javascript/spec/component/overview/course-conversations/services/channel.service.spec.ts index 80790eeb2382..a3ab41a7c960 100644 --- a/src/test/javascript/spec/component/overview/course-conversations/services/channel.service.spec.ts +++ b/src/test/javascript/spec/component/overview/course-conversations/services/channel.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { map, take } from 'rxjs/operators'; import { ChannelService } from 'app/shared/metis/conversations/channel.service'; @@ -10,6 +10,7 @@ import { MockTranslateService } from '../../../../helpers/mocks/service/mock-tra import { AccountService } from 'app/core/auth/account.service'; import { NotificationService } from 'app/shared/notification/notification.service'; import { MockNotificationService } from '../../../../helpers/mocks/service/mock-notification.service'; +import { provideHttpClient } from '@angular/common/http'; describe('ChannelService', () => { let service: ChannelService; @@ -18,8 +19,10 @@ describe('ChannelService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: AccountService, useClass: MockAccountService }, { provide: NotificationService, useClass: MockNotificationService }, diff --git a/src/test/javascript/spec/component/overview/course-conversations/services/conversation.service.spec.ts b/src/test/javascript/spec/component/overview/course-conversations/services/conversation.service.spec.ts index 3ed5a45c550b..dc0096d3303e 100644 --- a/src/test/javascript/spec/component/overview/course-conversations/services/conversation.service.spec.ts +++ b/src/test/javascript/spec/component/overview/course-conversations/services/conversation.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { map, take } from 'rxjs/operators'; import { TranslateService } from '@ngx-translate/core'; @@ -10,6 +10,7 @@ import { ConversationUserDTO } from 'app/entities/metis/conversation/conversatio import { generateExampleChannelDTO, generateExampleGroupChatDTO, generateOneToOneChatDTO } from '../helpers/conversationExampleModels'; import { NotificationService } from 'app/shared/notification/notification.service'; import { MockNotificationService } from '../../../../helpers/mocks/service/mock-notification.service'; +import { provideHttpClient } from '@angular/common/http'; describe('ConversationService', () => { let service: ConversationService; @@ -17,8 +18,10 @@ describe('ConversationService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: AccountService, useClass: MockAccountService }, { provide: NotificationService, useClass: MockNotificationService }, diff --git a/src/test/javascript/spec/component/overview/course-conversations/services/group-chat.service.spec.ts b/src/test/javascript/spec/component/overview/course-conversations/services/group-chat.service.spec.ts index 59b1f540c0e2..d2604ab58d07 100644 --- a/src/test/javascript/spec/component/overview/course-conversations/services/group-chat.service.spec.ts +++ b/src/test/javascript/spec/component/overview/course-conversations/services/group-chat.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { generateExampleGroupChatDTO } from '../helpers/conversationExampleModels'; @@ -10,6 +10,7 @@ import { GroupChatService } from 'app/shared/metis/conversations/group-chat.serv import { GroupChatDTO } from 'app/entities/metis/conversation/group-chat.model'; import { NotificationService } from 'app/shared/notification/notification.service'; import { MockNotificationService } from '../../../../helpers/mocks/service/mock-notification.service'; +import { provideHttpClient } from '@angular/common/http'; describe('GroupChatService', () => { let service: GroupChatService; @@ -18,8 +19,10 @@ describe('GroupChatService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: AccountService, useClass: MockAccountService }, { provide: NotificationService, useClass: MockNotificationService }, diff --git a/src/test/javascript/spec/component/overview/course-conversations/services/one-to-one-chat.service.spec.ts b/src/test/javascript/spec/component/overview/course-conversations/services/one-to-one-chat.service.spec.ts index aa8d8da3ace7..6514ba2c0458 100644 --- a/src/test/javascript/spec/component/overview/course-conversations/services/one-to-one-chat.service.spec.ts +++ b/src/test/javascript/spec/component/overview/course-conversations/services/one-to-one-chat.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { generateOneToOneChatDTO } from '../helpers/conversationExampleModels'; @@ -10,6 +10,7 @@ import { OneToOneChatService } from 'app/shared/metis/conversations/one-to-one-c import { OneToOneChatDTO } from 'app/entities/metis/conversation/one-to-one-chat.model'; import { NotificationService } from 'app/shared/notification/notification.service'; import { MockNotificationService } from '../../../../helpers/mocks/service/mock-notification.service'; +import { provideHttpClient } from '@angular/common/http'; describe('OneToOneChatService', () => { let service: OneToOneChatService; @@ -18,8 +19,10 @@ describe('OneToOneChatService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: AccountService, useClass: MockAccountService }, { provide: NotificationService, useClass: MockNotificationService }, diff --git a/src/test/javascript/spec/component/presentation-score/presentation-score.component.spec.ts b/src/test/javascript/spec/component/presentation-score/presentation-score.component.spec.ts index 7afff6254c85..79767df891e3 100644 --- a/src/test/javascript/spec/component/presentation-score/presentation-score.component.spec.ts +++ b/src/test/javascript/spec/component/presentation-score/presentation-score.component.spec.ts @@ -3,7 +3,8 @@ import { PresentationScoreComponent } from 'app/exercises/shared/presentation-sc import { Course } from 'app/entities/course.model'; import { Exercise } from 'app/entities/exercise.model'; import { GradingSystemService } from 'app/grading-system/grading-system.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; describe('PresentationScoreComponent', () => { let component: PresentationScoreComponent; @@ -38,8 +39,8 @@ describe('PresentationScoreComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ declarations: [PresentationScoreComponent], - imports: [HttpClientTestingModule], - providers: [GradingSystemService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), GradingSystemService], }) .overrideTemplate(PresentationScoreComponent, '') .compileComponents() diff --git a/src/test/javascript/spec/component/programming-exercise/feedback-analysis/feedback-analysis.service.spec.ts b/src/test/javascript/spec/component/programming-exercise/feedback-analysis/feedback-analysis.service.spec.ts index f6dfc18f0dfd..893d3e598b2f 100644 --- a/src/test/javascript/spec/component/programming-exercise/feedback-analysis/feedback-analysis.service.spec.ts +++ b/src/test/javascript/spec/component/programming-exercise/feedback-analysis/feedback-analysis.service.spec.ts @@ -1,6 +1,7 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { FeedbackAnalysisService, FeedbackDetail } from 'app/exercises/programming/manage/grading/feedback-analysis/feedback-analysis.service'; +import { provideHttpClient } from '@angular/common/http'; describe('FeedbackAnalysisService', () => { let service: FeedbackAnalysisService; @@ -13,8 +14,8 @@ describe('FeedbackAnalysisService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [FeedbackAnalysisService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), FeedbackAnalysisService], }); service = TestBed.inject(FeedbackAnalysisService); diff --git a/src/test/javascript/spec/component/settings/ide/ide-settings.component.spec.ts b/src/test/javascript/spec/component/settings/ide/ide-settings.component.spec.ts index 6d739c583751..87b1a505980e 100644 --- a/src/test/javascript/spec/component/settings/ide/ide-settings.component.spec.ts +++ b/src/test/javascript/spec/component/settings/ide/ide-settings.component.spec.ts @@ -4,7 +4,8 @@ import { of } from 'rxjs'; import { IdeSettingsComponent } from 'app/shared/user-settings/ide-preferences/ide-settings.component'; import { IdeSettingsService } from 'app/shared/user-settings/ide-preferences/ide-settings.service'; import { ProgrammingLanguage } from 'app/entities/programming/programming-exercise.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; describe('IdeSettingsComponent', () => { let component: IdeSettingsComponent; @@ -19,9 +20,9 @@ describe('IdeSettingsComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], declarations: [IdeSettingsComponent], - providers: [{ provide: IdeSettingsService, useValue: mockIdeSettingsService }], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: IdeSettingsService, useValue: mockIdeSettingsService }], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); diff --git a/src/test/javascript/spec/component/shared/http/file.service.spec.ts b/src/test/javascript/spec/component/shared/http/file.service.spec.ts index c504ac111084..68a2b56a7faf 100644 --- a/src/test/javascript/spec/component/shared/http/file.service.spec.ts +++ b/src/test/javascript/spec/component/shared/http/file.service.spec.ts @@ -1,7 +1,8 @@ import { FileService } from 'app/shared/http/file.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { v4 as uuid } from 'uuid'; +import { provideHttpClient } from '@angular/common/http'; jest.mock('uuid', () => ({ v4: jest.fn(), @@ -18,8 +19,8 @@ describe('FileService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [FileService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), FileService], }); fileService = TestBed.inject(FileService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/shared/metis/message-inline-input-component/message-inline-input.component.spec.ts b/src/test/javascript/spec/component/shared/metis/message-inline-input-component/message-inline-input.component.spec.ts index ce4c15b9f1da..2a0b89b17f77 100644 --- a/src/test/javascript/spec/component/shared/metis/message-inline-input-component/message-inline-input.component.spec.ts +++ b/src/test/javascript/spec/component/shared/metis/message-inline-input-component/message-inline-input.component.spec.ts @@ -2,7 +2,7 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testin import { MetisService } from 'app/shared/metis/metis.service'; import { MockModule, MockPipe } from 'ng-mocks'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { MessageInlineInputComponent } from 'app/shared/metis/message/message-inline-input/message-inline-input.component'; import { MockMetisService } from '../../../../helpers/mocks/service/mock-metis-service.service'; import { directMessageUser1, metisPostToCreateUser1 } from '../../../../helpers/sample/metis-sample-data'; @@ -10,6 +10,7 @@ import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { throwError } from 'rxjs'; import { MockSyncStorage } from '../../../../helpers/mocks/service/mock-sync-storage.service'; import { LocalStorageService } from 'ngx-webstorage'; +import { provideHttpClient } from '@angular/common/http'; describe('MessageInlineInputComponent', () => { let component: MessageInlineInputComponent; @@ -20,9 +21,15 @@ describe('MessageInlineInputComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, MockModule(FormsModule), MockModule(ReactiveFormsModule)], + imports: [MockModule(FormsModule), MockModule(ReactiveFormsModule)], declarations: [MessageInlineInputComponent, MockPipe(ArtemisTranslatePipe)], - providers: [FormBuilder, { provide: MetisService, useClass: MockMetisService }, { provide: LocalStorageService, useClass: MockSyncStorage }], + providers: [ + provideHttpClient(), + provideHttpClientTesting(), + FormBuilder, + { provide: MetisService, useClass: MockMetisService }, + { provide: LocalStorageService, useClass: MockSyncStorage }, + ], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/shared/metis/message-reply-inline-input/message-reply-inline-input.component.spec.ts b/src/test/javascript/spec/component/shared/metis/message-reply-inline-input/message-reply-inline-input.component.spec.ts index 9870eab289c9..ab90976788fc 100644 --- a/src/test/javascript/spec/component/shared/metis/message-reply-inline-input/message-reply-inline-input.component.spec.ts +++ b/src/test/javascript/spec/component/shared/metis/message-reply-inline-input/message-reply-inline-input.component.spec.ts @@ -2,7 +2,7 @@ import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testin import { MetisService } from 'app/shared/metis/metis.service'; import { MockModule, MockPipe } from 'ng-mocks'; import { FormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { MockMetisService } from '../../../../helpers/mocks/service/mock-metis-service.service'; import { directMessageUser1, metisPostToCreateUser1 } from '../../../../helpers/sample/metis-sample-data'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; @@ -10,6 +10,7 @@ import { MessageReplyInlineInputComponent } from 'app/shared/metis/message/messa import { throwError } from 'rxjs'; import { MockSyncStorage } from '../../../../helpers/mocks/service/mock-sync-storage.service'; import { LocalStorageService } from 'ngx-webstorage'; +import { provideHttpClient } from '@angular/common/http'; describe('MessageReplyInlineInputComponent', () => { let component: MessageReplyInlineInputComponent; @@ -20,9 +21,15 @@ describe('MessageReplyInlineInputComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, MockModule(FormsModule), MockModule(ReactiveFormsModule)], + imports: [MockModule(FormsModule), MockModule(ReactiveFormsModule)], declarations: [MessageReplyInlineInputComponent, MockPipe(ArtemisTranslatePipe)], - providers: [FormBuilder, { provide: MetisService, useClass: MockMetisService }, { provide: LocalStorageService, useClass: MockSyncStorage }], + providers: [ + provideHttpClient(), + provideHttpClientTesting(), + FormBuilder, + { provide: MetisService, useClass: MockMetisService }, + { provide: LocalStorageService, useClass: MockSyncStorage }, + ], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/shared/metis/posting-content/posting-content.component.spec.ts b/src/test/javascript/spec/component/shared/metis/posting-content/posting-content.component.spec.ts index 503ed6f20634..d3b874b1c8d4 100644 --- a/src/test/javascript/spec/component/shared/metis/posting-content/posting-content.component.spec.ts +++ b/src/test/javascript/spec/component/shared/metis/posting-content/posting-content.component.spec.ts @@ -3,7 +3,7 @@ import { PostingContentPartComponent } from 'app/shared/metis/posting-content/po import { MockComponent, MockPipe } from 'ng-mocks'; import { PostingContentComponent } from 'app/shared/metis/posting-content/posting-content.components'; import { MetisService } from 'app/shared/metis/metis.service'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { MockMetisService } from '../../../../helpers/mocks/service/mock-metis-service.service'; import { PatternMatch, PostingContentPart, ReferenceType } from 'app/shared/metis/metis.util'; import { Observable, of } from 'rxjs'; @@ -12,6 +12,7 @@ import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { metisCourse, metisCoursePosts, metisExercisePosts, metisGeneralCourseWidePosts, metisLecturePosts } from '../../../../helpers/sample/metis-sample-data'; import { Params } from '@angular/router'; +import { provideHttpClient } from '@angular/common/http'; describe('PostingContentComponent', () => { let component: PostingContentComponent; @@ -20,8 +21,8 @@ describe('PostingContentComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: MetisService, useClass: MockMetisService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: MetisService, useClass: MockMetisService }], declarations: [PostingContentComponent, MockComponent(PostingContentPartComponent), MockComponent(FaIconComponent), MockPipe(ArtemisTranslatePipe)], }) .compileComponents() diff --git a/src/test/javascript/spec/component/shared/metis/postings-create-edit-modal/post-create-edit-modal/post-create-edit-modal.component.spec.ts b/src/test/javascript/spec/component/shared/metis/postings-create-edit-modal/post-create-edit-modal/post-create-edit-modal.component.spec.ts index 692f9af19423..4c75746e2bbe 100644 --- a/src/test/javascript/spec/component/shared/metis/postings-create-edit-modal/post-create-edit-modal/post-create-edit-modal.component.spec.ts +++ b/src/test/javascript/spec/component/shared/metis/postings-create-edit-modal/post-create-edit-modal/post-create-edit-modal.component.spec.ts @@ -11,12 +11,13 @@ import { HelpIconComponent } from 'app/shared/components/help-icon.component'; import { PostTagSelectorComponent } from 'app/shared/metis/posting-create-edit-modal/post-create-edit-modal/post-tag-selector/post-tag-selector.component'; import { PageType } from 'app/shared/metis/metis.util'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ArtemisTestModule } from '../../../../../test.module'; import { PostComponent } from 'app/shared/metis/post/post.component'; import { metisCourse, metisExercise, metisPostLectureUser1, metisPostTechSupport, metisPostToCreateUser1 } from '../../../../../helpers/sample/metis-sample-data'; import { MockNgbModalService } from '../../../../../helpers/mocks/service/mock-ngb-modal.service'; import { Channel } from 'app/entities/metis/conversation/channel.model'; +import { provideHttpClient } from '@angular/common/http'; describe('PostCreateEditModalComponent', () => { let component: PostCreateEditModalComponent; @@ -30,7 +31,7 @@ describe('PostCreateEditModalComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockModule(FormsModule), MockModule(ReactiveFormsModule)], + imports: [ArtemisTestModule, MockModule(FormsModule), MockModule(ReactiveFormsModule)], declarations: [ PostCreateEditModalComponent, MockPipe(ArtemisTranslatePipe), @@ -40,7 +41,13 @@ describe('PostCreateEditModalComponent', () => { MockComponent(HelpIconComponent), MockComponent(PostTagSelectorComponent), ], - providers: [FormBuilder, { provide: MetisService, useClass: MockMetisService }, { provide: NgbModal, useClass: MockNgbModalService }], + providers: [ + provideHttpClient(), + provideHttpClientTesting(), + FormBuilder, + { provide: MetisService, useClass: MockMetisService }, + { provide: NgbModal, useClass: MockNgbModalService }, + ], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/answer-post-reactions-bar/answer-post-reactions-bar.component.spec.ts b/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/answer-post-reactions-bar/answer-post-reactions-bar.component.spec.ts index 3b42c92afbdd..0557ae671297 100644 --- a/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/answer-post-reactions-bar/answer-post-reactions-bar.component.spec.ts +++ b/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/answer-post-reactions-bar/answer-post-reactions-bar.component.spec.ts @@ -4,7 +4,7 @@ import { MetisService } from 'app/shared/metis/metis.service'; import { MockComponent, MockModule, MockPipe, MockProvider } from 'ng-mocks'; import { OverlayModule } from '@angular/cdk/overlay'; import { Reaction } from 'app/entities/metis/reaction.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ReactionService } from 'app/shared/metis/reaction.service'; import { MockReactionService } from '../../../../../helpers/mocks/service/mock-reaction.service'; import { AccountService } from 'app/core/auth/account.service'; @@ -26,6 +26,7 @@ import { metisCourse, metisUser1, post } from '../../../../../helpers/sample/met import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; import { NotificationService } from 'app/shared/notification/notification.service'; import { MockNotificationService } from '../../../../../helpers/mocks/service/mock-notification.service'; +import { provideHttpClient } from '@angular/common/http'; describe('AnswerPostReactionsBarComponent', () => { let component: AnswerPostReactionsBarComponent; @@ -37,9 +38,11 @@ describe('AnswerPostReactionsBarComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, MockModule(OverlayModule), MockModule(EmojiModule), MockModule(PickerModule), MockModule(NgbTooltipModule)], + imports: [MockModule(OverlayModule), MockModule(EmojiModule), MockModule(PickerModule), MockModule(NgbTooltipModule)], declarations: [AnswerPostReactionsBarComponent, TranslatePipeMock, MockPipe(ReactingUsersOnPostingPipe), MockComponent(FaIconComponent), MockComponent(EmojiComponent)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(SessionStorageService), { provide: NotificationService, useClass: MockNotificationService }, { provide: MetisService, useClass: MetisService }, diff --git a/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/post-reactions-bar/post-reactions-bar.component.spec.ts b/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/post-reactions-bar/post-reactions-bar.component.spec.ts index baa72c2c00f8..ac6dd8bcbd9c 100644 --- a/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/post-reactions-bar/post-reactions-bar.component.spec.ts +++ b/src/test/javascript/spec/component/shared/metis/postings-reactions-bar/post-reactions-bar/post-reactions-bar.component.spec.ts @@ -7,7 +7,7 @@ import { getElement, getElements } from '../../../../../helpers/utils/general.ut import { PostReactionsBarComponent } from 'app/shared/metis/posting-reactions-bar/post-reactions-bar/post-reactions-bar.component'; import { OverlayModule } from '@angular/cdk/overlay'; import { Reaction } from 'app/entities/metis/reaction.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { ReactionService } from 'app/shared/metis/reaction.service'; import { MockReactionService } from '../../../../../helpers/mocks/service/mock-reaction.service'; import { AccountService } from 'app/core/auth/account.service'; @@ -32,6 +32,7 @@ import { MockNotificationService } from '../../../../../helpers/mocks/service/mo import { ConversationDTO, ConversationType } from 'app/entities/metis/conversation/conversation.model'; import { ChannelDTO } from 'app/entities/metis/conversation/channel.model'; import { User } from 'app/core/user/user.model'; +import { provideHttpClient } from '@angular/common/http'; describe('PostReactionsBarComponent', () => { let component: PostReactionsBarComponent; @@ -51,9 +52,11 @@ describe('PostReactionsBarComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, MockModule(OverlayModule), MockModule(EmojiModule), MockModule(PickerModule), MockDirective(NgbTooltip)], + imports: [MockModule(OverlayModule), MockModule(EmojiModule), MockModule(PickerModule), MockDirective(NgbTooltip)], declarations: [PostReactionsBarComponent, TranslatePipeMock, MockPipe(ReactingUsersOnPostingPipe), MockComponent(FaIconComponent), EmojiComponent], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(SessionStorageService), { provide: MetisService, useClass: MetisService }, { provide: ReactionService, useClass: MockReactionService }, diff --git a/src/test/javascript/spec/component/shared/navbar.component.spec.ts b/src/test/javascript/spec/component/shared/navbar.component.spec.ts index b02e161d1f22..8b37f25b6f19 100644 --- a/src/test/javascript/spec/component/shared/navbar.component.spec.ts +++ b/src/test/javascript/spec/component/shared/navbar.component.spec.ts @@ -1,4 +1,4 @@ -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { ActivatedRoute, Router, UrlSerializer } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; @@ -37,7 +37,7 @@ import { SystemNotificationComponent } from 'app/shared/notification/system-noti import { NgbTooltipMocksModule } from '../../helpers/mocks/directive/ngbTooltipMocks.module'; import { NgbCollapseMocksModule } from '../../helpers/mocks/directive/ngbCollapseMocks.module'; import { NgbDropdownMocksModule } from '../../helpers/mocks/directive/ngbDropdownMocks.module'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; class MockBreadcrumb { @@ -93,7 +93,7 @@ describe('NavbarComponent', () => { beforeEach(() => { return TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, NgbTooltipMocksModule, NgbCollapseMocksModule, NgbDropdownMocksModule], + imports: [NgbTooltipMocksModule, NgbCollapseMocksModule, NgbDropdownMocksModule], declarations: [ NavbarComponent, MockDirective(HasAnyAuthorityDirective), @@ -112,6 +112,8 @@ describe('NavbarComponent', () => { MockComponent(FaIconComponent), ], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(UrlSerializer), { provide: AccountService, diff --git a/src/test/javascript/spec/component/shared/user-settings/notification-settings.service.spec.ts b/src/test/javascript/spec/component/shared/user-settings/notification-settings.service.spec.ts index 541a09f6a565..8632f04491e9 100644 --- a/src/test/javascript/spec/component/shared/user-settings/notification-settings.service.spec.ts +++ b/src/test/javascript/spec/component/shared/user-settings/notification-settings.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { NotificationSetting } from 'app/shared/user-settings/notification-settings/notification-settings-structure'; import { NotificationSettingsService, reloadNotificationSideBarMessage } from 'app/shared/user-settings/notification-settings/notification-settings.service'; @@ -6,7 +6,7 @@ import { COURSE_ARCHIVE_STARTED_TITLE, EXAM_ARCHIVE_STARTED_TITLE, EXERCISE_PRAC import { SettingId } from 'app/shared/constants/user-settings.constants'; import { UserSettingsService } from 'app/shared/user-settings/user-settings.service'; import { of } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { Setting } from 'app/shared/user-settings/user-settings.model'; const notificationSettingA: NotificationSetting = { @@ -28,7 +28,8 @@ describe('User Settings Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/shared/user-settings/science-settings.service.spec.ts b/src/test/javascript/spec/component/shared/user-settings/science-settings.service.spec.ts index c084b70e876c..16f4318fb82a 100644 --- a/src/test/javascript/spec/component/shared/user-settings/science-settings.service.spec.ts +++ b/src/test/javascript/spec/component/shared/user-settings/science-settings.service.spec.ts @@ -1,9 +1,9 @@ -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { SettingId } from 'app/shared/constants/user-settings.constants'; import { UserSettingsService } from 'app/shared/user-settings/user-settings.service'; import { of } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { Setting } from 'app/shared/user-settings/user-settings.model'; import { ScienceSetting } from 'app/shared/user-settings/science-settings/science-settings-structure'; import { ScienceSettingsService } from 'app/shared/user-settings/science-settings/science-settings.service'; @@ -26,8 +26,8 @@ describe('ScienceSettingsService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: LocalStorageService, useClass: MockLocalStorageService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockLocalStorageService }], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/component/shared/user-settings/user-settings.directive.spec.ts b/src/test/javascript/spec/component/shared/user-settings/user-settings.directive.spec.ts index a4dcae96918f..bce6f3acfcbc 100644 --- a/src/test/javascript/spec/component/shared/user-settings/user-settings.directive.spec.ts +++ b/src/test/javascript/spec/component/shared/user-settings/user-settings.directive.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { AccountService } from 'app/core/auth/account.service'; import { JhiWebsocketService } from 'app/core/websocket/websocket.service'; @@ -13,7 +13,7 @@ import { UserSettingsDirective } from 'app/shared/user-settings/user-settings.di import { MockRouter } from '../../../helpers/mocks/mock-router'; import { Router } from '@angular/router'; import { of, throwError } from 'rxjs'; -import { HttpErrorResponse, HttpResponse } from '@angular/common/http'; +import { HttpErrorResponse, HttpResponse, provideHttpClient } from '@angular/common/http'; import { MockProvider } from 'ng-mocks'; import { MockUserSettingsService } from '../../../helpers/mocks/service/mock-user-settings.service'; import { AlertService } from 'app/core/util/alert.service'; @@ -62,9 +62,11 @@ describe('User Settings Directive', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, TranslateTestingModule], + imports: [TranslateTestingModule], declarations: [UserSettingsMockComponent], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(ChangeDetectorRef), { provide: JhiWebsocketService, useClass: MockWebsocketService }, { provide: AccountService, useClass: MockAccountService }, diff --git a/src/test/javascript/spec/component/shared/user-settings/user-settings.service.spec.ts b/src/test/javascript/spec/component/shared/user-settings/user-settings.service.spec.ts index 3ee3131e380c..d52dd09a8b2c 100644 --- a/src/test/javascript/spec/component/shared/user-settings/user-settings.service.spec.ts +++ b/src/test/javascript/spec/component/shared/user-settings/user-settings.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { AccountService } from 'app/core/auth/account.service'; import { JhiWebsocketService } from 'app/core/websocket/websocket.service'; @@ -9,6 +9,7 @@ import { MockAccountService } from '../../../helpers/mocks/service/mock-account. import { TranslateTestingModule } from '../../../helpers/mocks/service/mock-translate.service'; import { Setting, UserSettingsStructure } from 'app/shared/user-settings/user-settings.model'; import { NotificationSetting, notificationSettingsStructure } from 'app/shared/user-settings/notification-settings/notification-settings-structure'; +import { provideHttpClient } from '@angular/common/http'; const notificationSettingA: NotificationSetting = { settingId: SettingId.NOTIFICATION__EXERCISE_NOTIFICATION__EXERCISE_OPEN_FOR_PRACTICE, @@ -123,8 +124,10 @@ describe('User Settings Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, TranslateTestingModule], + imports: [TranslateTestingModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: JhiWebsocketService, useClass: MockWebsocketService }, { provide: AccountService, useClass: MockAccountService }, ], diff --git a/src/test/javascript/spec/component/standardized-competencies/admin-standardized-competency.service.spec.ts b/src/test/javascript/spec/component/standardized-competencies/admin-standardized-competency.service.spec.ts index deddba28f58e..6b9f73c07ba5 100644 --- a/src/test/javascript/spec/component/standardized-competencies/admin-standardized-competency.service.spec.ts +++ b/src/test/javascript/spec/component/standardized-competencies/admin-standardized-competency.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { AdminStandardizedCompetencyService } from 'app/admin/standardized-competencies/admin-standardized-competency.service'; import { KnowledgeAreaDTO, KnowledgeAreasForImportDTO, StandardizedCompetencyDTO } from 'app/entities/competency/standardized-competency.model'; @@ -14,8 +14,8 @@ describe('AdminStandardizedCompetencyService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); adminStandardizedCompetencyService = TestBed.inject(AdminStandardizedCompetencyService); diff --git a/src/test/javascript/spec/component/standardized-competencies/standardized-competency.service.spec.ts b/src/test/javascript/spec/component/standardized-competencies/standardized-competency.service.spec.ts index a36ff6f9389d..d9867dc66ab1 100644 --- a/src/test/javascript/spec/component/standardized-competencies/standardized-competency.service.spec.ts +++ b/src/test/javascript/spec/component/standardized-competencies/standardized-competency.service.spec.ts @@ -1,5 +1,5 @@ -import { HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { KnowledgeArea, KnowledgeAreaDTO, Source, StandardizedCompetency } from 'app/entities/competency/standardized-competency.model'; import { take } from 'rxjs'; @@ -14,8 +14,8 @@ describe('StandardizedCompetencyService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); standardizedCompetencyService = TestBed.inject(StandardizedCompetencyService); diff --git a/src/test/javascript/spec/component/text-exercise/tutor-effort-statistics.component.spec.ts b/src/test/javascript/spec/component/text-exercise/tutor-effort-statistics.component.spec.ts index 628acbaaa880..b8cac8be2db1 100644 --- a/src/test/javascript/spec/component/text-exercise/tutor-effort-statistics.component.spec.ts +++ b/src/test/javascript/spec/component/text-exercise/tutor-effort-statistics.component.spec.ts @@ -3,7 +3,7 @@ import { MockComponent, MockDirective, MockModule, MockPipe } from 'ng-mocks'; import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { MockTranslateService } from '../../helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { TutorEffortStatisticsComponent } from 'app/exercises/text/manage/tutor-effort/tutor-effort-statistics.component'; import { ArtemisTestModule } from '../../test.module'; import { MockHasAnyAuthorityDirective } from '../../helpers/mocks/directive/mock-has-any-authority.directive'; @@ -16,6 +16,7 @@ import { BarChartModule } from '@swimlane/ngx-charts'; import { HelpIconComponent } from 'app/shared/components/help-icon.component'; import { MockRouter } from '../../helpers/mocks/mock-router'; import { of } from 'rxjs'; +import { provideHttpClient } from '@angular/common/http'; describe('TutorEffortStatisticsComponent', () => { let fixture: ComponentFixture; @@ -49,9 +50,11 @@ describe('TutorEffortStatisticsComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule, MockModule(BarChartModule)], + imports: [ArtemisTestModule, MockModule(BarChartModule)], declarations: [TutorEffortStatisticsComponent, MockPipe(ArtemisTranslatePipe), MockDirective(MockHasAnyAuthorityDirective), MockComponent(HelpIconComponent)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: ActivatedRoute, diff --git a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-free-period.service.spec.ts b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-free-period.service.spec.ts index 9db5612b487f..12f338cf6b48 100644 --- a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-free-period.service.spec.ts +++ b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-free-period.service.spec.ts @@ -1,9 +1,10 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { TutorialGroupFreePeriodDTO, TutorialGroupFreePeriodService } from 'app/course/tutorial-groups/services/tutorial-group-free-period.service'; import { generateExampleTutorialGroupFreePeriod } from '../helpers/tutorialGroupFreePeriodExampleModel'; import { TutorialGroupFreePeriod } from 'app/entities/tutorial-group/tutorial-group-free-day.model'; +import { provideHttpClient } from '@angular/common/http'; describe('TutorialGroupFreePeriodService', () => { let service: TutorialGroupFreePeriodService; @@ -12,7 +13,8 @@ describe('TutorialGroupFreePeriodService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(TutorialGroupFreePeriodService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-session.service.spec.ts b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-session.service.spec.ts index 42a959420fa6..3767e48293f7 100644 --- a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-session.service.spec.ts +++ b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group-session.service.spec.ts @@ -1,9 +1,10 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { TutorialGroupSessionDTO, TutorialGroupSessionService } from 'app/course/tutorial-groups/services/tutorial-group-session.service'; import { TutorialGroupSession } from 'app/entities/tutorial-group/tutorial-group-session.model'; import { generateExampleTutorialGroupSession } from '../helpers/tutorialGroupSessionExampleModels'; +import { provideHttpClient } from '@angular/common/http'; describe('TutorialGroupSessionService', () => { let service: TutorialGroupSessionService; @@ -12,7 +13,8 @@ describe('TutorialGroupSessionService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(TutorialGroupSessionService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group.service.spec.ts b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group.service.spec.ts index 2644fc2117c5..fe362b0267d2 100644 --- a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group.service.spec.ts +++ b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-group.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { map, take } from 'rxjs/operators'; import { TutorialGroupsService } from 'app/course/tutorial-groups/services/tutorial-groups.service'; @@ -8,6 +8,7 @@ import { TutorialGroupSessionService } from 'app/course/tutorial-groups/services import { TutorialGroupsConfigurationService } from 'app/course/tutorial-groups/services/tutorial-groups-configuration.service'; import { TutorialGroupSession } from 'app/entities/tutorial-group/tutorial-group-session.model'; import { TutorialGroupRegistrationImportDTO } from 'app/entities/tutorial-group/tutorial-group-import-dto.model'; +import { provideHttpClient } from '@angular/common/http'; describe('TutorialGroupService', () => { let service: TutorialGroupsService; @@ -28,8 +29,10 @@ describe('TutorialGroupService', () => { }; TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TutorialGroupSessionService, useValue: spySessionService }, { provide: TutorialGroupsConfigurationService, useValue: spyConfigService }, ], diff --git a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups-configuration.service.spec.ts b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups-configuration.service.spec.ts index 5c6248037b7b..37e11af2fcf8 100644 --- a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups-configuration.service.spec.ts +++ b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups-configuration.service.spec.ts @@ -1,10 +1,11 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { TutorialGroupSession } from 'app/entities/tutorial-group/tutorial-group-session.model'; import { generateExampleTutorialGroupsConfiguration } from '../helpers/tutorialGroupsConfigurationExampleModels'; import { TutorialGroupsConfigurationService } from 'app/course/tutorial-groups/services/tutorial-groups-configuration.service'; import { TutorialGroupsConfiguration } from 'app/entities/tutorial-group/tutorial-groups-configuration.model'; +import { provideHttpClient } from '@angular/common/http'; describe('TutorialGroupsConfigurationService', () => { let service: TutorialGroupsConfigurationService; @@ -13,7 +14,8 @@ describe('TutorialGroupsConfigurationService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(TutorialGroupsConfigurationService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups.service.spec.ts b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups.service.spec.ts index 7f674a9d052a..79159be61cbe 100644 --- a/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups.service.spec.ts +++ b/src/test/javascript/spec/component/tutorial-groups/services/tutorial-groups.service.spec.ts @@ -1,10 +1,11 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { map, take } from 'rxjs/operators'; import { TutorialGroupsService } from 'app/course/tutorial-groups/services/tutorial-groups.service'; import { TutorialGroup } from 'app/entities/tutorial-group/tutorial-group.model'; import { StudentDTO } from 'app/entities/student-dto.model'; import { generateExampleTutorialGroup } from '../helpers/tutorialGroupExampleModels'; +import { provideHttpClient } from '@angular/common/http'; describe('TutorialGroupService', () => { let service: TutorialGroupsService; @@ -13,7 +14,8 @@ describe('TutorialGroupService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(TutorialGroupsService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/component/tutorial-groups/shared/tutorial-group-detail.component.spec.ts b/src/test/javascript/spec/component/tutorial-groups/shared/tutorial-group-detail.component.spec.ts index a997564fe086..1981fa850091 100644 --- a/src/test/javascript/spec/component/tutorial-groups/shared/tutorial-group-detail.component.spec.ts +++ b/src/test/javascript/spec/component/tutorial-groups/shared/tutorial-group-detail.component.spec.ts @@ -5,7 +5,7 @@ import { ArtemisTranslatePipe } from 'app/shared/pipes/artemis-translate.pipe'; import { MockComponent, MockPipe, MockProvider } from 'ng-mocks'; import { ArtemisMarkdownService } from 'app/shared/markdown.service'; import { generateExampleTutorialGroup } from '../helpers/tutorialGroupExampleModels'; -import { Component, Input, ViewChild } from '@angular/core'; +import { ChangeDetectorRef, Component, Input, ViewChild } from '@angular/core'; import { TutorialGroup } from 'app/entities/tutorial-group/tutorial-group.model'; import { SortService } from 'app/shared/service/sort.service'; import { FaIconComponent } from '@fortawesome/angular-fontawesome'; @@ -15,12 +15,12 @@ import { RemoveSecondsPipe } from 'app/course/tutorial-groups/shared/remove-seco import { DetailOverviewListComponent } from 'app/detail-overview-list/detail-overview-list.component'; import { MockTranslateService } from '../../../helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { MockLocalStorageService } from '../../../helpers/mocks/service/mock-local-storage.service'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import dayjs from 'dayjs/esm'; import { TutorialGroupSessionStatus } from 'app/entities/tutorial-group/tutorial-group-session.model'; -import { ChangeDetectorRef } from '@angular/core'; +import { provideHttpClient } from '@angular/common/http'; @Component({ selector: 'jhi-mock-header', template: '
' }) class MockHeaderComponent { @@ -57,7 +57,7 @@ describe('TutorialGroupDetailWrapperTest', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [NgbTooltipMocksModule, RouterTestingModule.withRoutes([]), HttpClientTestingModule], + imports: [NgbTooltipMocksModule, RouterTestingModule.withRoutes([])], declarations: [ TutorialGroupDetailComponent, DetailOverviewListComponent, @@ -69,6 +69,8 @@ describe('TutorialGroupDetailWrapperTest', () => { MockComponent(TutorialGroupUtilizationIndicatorComponent), ], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(ArtemisMarkdownService), MockProvider(SortService), MockProvider(SessionStorageService), diff --git a/src/test/javascript/spec/component/tutorial-groups/tutorial-groups-management/tutorial-group-management-resolve.service.spec.ts b/src/test/javascript/spec/component/tutorial-groups/tutorial-groups-management/tutorial-group-management-resolve.service.spec.ts index 8fdf395b38ce..ebdcbe69938e 100644 --- a/src/test/javascript/spec/component/tutorial-groups/tutorial-groups-management/tutorial-group-management-resolve.service.spec.ts +++ b/src/test/javascript/spec/component/tutorial-groups/tutorial-groups-management/tutorial-group-management-resolve.service.spec.ts @@ -1,8 +1,8 @@ import { TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { of } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { CourseManagementService } from 'app/course/manage/course-management.service'; import { Course } from 'app/entities/course.model'; @@ -20,8 +20,10 @@ describe('TutorialGroupManagementResolve', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule, HttpClientTestingModule], + imports: [RouterTestingModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), TutorialGroupManagementResolve, { provide: Router, useClass: MockRouter }, { diff --git a/src/test/javascript/spec/service/admin-user.service.spec.ts b/src/test/javascript/spec/service/admin-user.service.spec.ts index 0704851a32d5..88d0c2aad627 100644 --- a/src/test/javascript/spec/service/admin-user.service.spec.ts +++ b/src/test/javascript/spec/service/admin-user.service.spec.ts @@ -1,7 +1,8 @@ import { TestBed } from '@angular/core/testing'; import { User } from 'app/core/user/user.model'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { AdminUserService } from 'app/core/user/admin-user.service'; +import { provideHttpClient } from '@angular/common/http'; describe('User Service', () => { let adminService: AdminUserService; @@ -9,7 +10,8 @@ describe('User Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); adminService = TestBed.inject(AdminUserService); diff --git a/src/test/javascript/spec/service/apollon-diagram.service.spec.ts b/src/test/javascript/spec/service/apollon-diagram.service.spec.ts index b539a8cfdb3f..a4a46d41b9fc 100644 --- a/src/test/javascript/spec/service/apollon-diagram.service.spec.ts +++ b/src/test/javascript/spec/service/apollon-diagram.service.spec.ts @@ -1,8 +1,8 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { ApollonDiagramService } from 'app/exercises/quiz/manage/apollon-diagrams/apollon-diagram.service'; import { ApollonDiagram } from 'app/entities/apollon-diagram.model'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { UMLDiagramType } from '@ls1intum/apollon'; const resourceUrl = 'api'; @@ -14,8 +14,8 @@ describe('ApollonDiagramService', () => { let httpTestingController: HttpTestingController; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [ApollonDiagramService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), ApollonDiagramService], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/service/athena.service.spec.ts b/src/test/javascript/spec/service/athena.service.spec.ts index 099b679ee249..27350c4c20b5 100644 --- a/src/test/javascript/spec/service/athena.service.spec.ts +++ b/src/test/javascript/spec/service/athena.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { AthenaService } from 'app/assessment/athena.service'; import { ArtemisTestModule } from '../test.module'; @@ -12,6 +12,7 @@ import { TextSubmission } from 'app/entities/text/text-submission.model'; import { TextBlockRef } from 'app/entities/text/text-block-ref.model'; import { Feedback, FeedbackType } from 'app/entities/feedback.model'; import { ModelingSubmission } from 'app/entities/modeling-submission.model'; +import { provideHttpClient } from '@angular/common/http'; describe('AthenaService', () => { let athenaService: AthenaService; @@ -51,8 +52,8 @@ describe('AthenaService', () => { } as Exercise; beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], - providers: [{ provide: ProfileService, useClass: MockProfileService }], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: ProfileService, useClass: MockProfileService }], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/service/attachment.service.spec.ts b/src/test/javascript/spec/service/attachment.service.spec.ts index 77356f0aa445..96cf5e563860 100644 --- a/src/test/javascript/spec/service/attachment.service.spec.ts +++ b/src/test/javascript/spec/service/attachment.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; @@ -21,8 +21,10 @@ describe('Attachment Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/audits.service.spec.ts b/src/test/javascript/spec/service/audits.service.spec.ts index 0e42d66b6944..1f161bda6389 100644 --- a/src/test/javascript/spec/service/audits.service.spec.ts +++ b/src/test/javascript/spec/service/audits.service.spec.ts @@ -2,7 +2,8 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { AuditsService } from 'app/admin/audits/audits.service'; import { Audit } from 'app/admin/audits/audit.model'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; describe('Audits Service', () => { let service: AuditsService; @@ -10,7 +11,8 @@ describe('Audits Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(AuditsService); diff --git a/src/test/javascript/spec/service/auth-jwt.service.spec.ts b/src/test/javascript/spec/service/auth-jwt.service.spec.ts index 1a24e7eabbdf..d1d2cf688adc 100644 --- a/src/test/javascript/spec/service/auth-jwt.service.spec.ts +++ b/src/test/javascript/spec/service/auth-jwt.service.spec.ts @@ -1,9 +1,10 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { AuthServerProvider, Credentials } from 'app/core/auth/auth-jwt.service'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { MockSyncStorage } from '../helpers/mocks/service/mock-sync-storage.service'; import { MockLocalStorageService } from '../helpers/mocks/service/mock-local-storage.service'; +import { provideHttpClient } from '@angular/common/http'; describe('AuthServerProvider', () => { let service: AuthServerProvider; @@ -19,8 +20,10 @@ describe('AuthServerProvider', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockLocalStorageService }, { provide: SessionStorageService, useClass: MockSyncStorage }, ], diff --git a/src/test/javascript/spec/service/bonus.service.spec.ts b/src/test/javascript/spec/service/bonus.service.spec.ts index 94feb314508a..f3886fe5f197 100644 --- a/src/test/javascript/spec/service/bonus.service.spec.ts +++ b/src/test/javascript/spec/service/bonus.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { GradeType, GradingScale } from 'app/entities/grading-scale.model'; import { take } from 'rxjs/operators'; import { RouterTestingModule } from '@angular/router/testing'; @@ -8,6 +8,7 @@ import { BonusService } from 'app/grading-system/bonus/bonus.service'; import { Bonus, BonusExample, BonusStrategy } from 'app/entities/bonus.model'; import { GradingSystemService } from 'app/grading-system/grading-system.service'; import { cloneDeep } from 'lodash-es'; +import { provideHttpClient } from '@angular/common/http'; describe('Bonus Service', () => { type GradeStepBuilder = { @@ -90,7 +91,8 @@ describe('Bonus Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, RouterTestingModule], + imports: [RouterTestingModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(BonusService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/build-log.service.spec.ts b/src/test/javascript/spec/service/build-log.service.spec.ts index 0582e9ff369b..b082ed4c9ae0 100644 --- a/src/test/javascript/spec/service/build-log.service.spec.ts +++ b/src/test/javascript/spec/service/build-log.service.spec.ts @@ -1,7 +1,8 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { BuildLogService } from 'app/exercises/programming/shared/service/build-log.service'; import { BuildLogEntry, BuildLogType } from 'app/entities/programming/build-log.model'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; describe('Build Log Service', () => { let service: BuildLogService; @@ -11,7 +12,8 @@ describe('Build Log Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(BuildLogService); diff --git a/src/test/javascript/spec/service/configuration.service.spec.ts b/src/test/javascript/spec/service/configuration.service.spec.ts index 48e8b1070083..6114ef3b7b65 100644 --- a/src/test/javascript/spec/service/configuration.service.spec.ts +++ b/src/test/javascript/spec/service/configuration.service.spec.ts @@ -1,8 +1,9 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { ConfigurationService } from 'app/admin/configuration/configuration.service'; import { Bean, ConfigProps, Env, PropertySource } from 'app/admin/configuration/configuration.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Service Tests', () => { describe('Logs Service', () => { @@ -12,7 +13,8 @@ describe('Service Tests', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); expectedResult = null; diff --git a/src/test/javascript/spec/service/course-exercise.service.spec.ts b/src/test/javascript/spec/service/course-exercise.service.spec.ts index d123760c6d25..55f133c866a8 100644 --- a/src/test/javascript/spec/service/course-exercise.service.spec.ts +++ b/src/test/javascript/spec/service/course-exercise.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; @@ -20,6 +20,7 @@ import { ProfileService } from 'app/shared/layouts/profiles/profile.service'; import { of } from 'rxjs'; import { ProfileInfo } from 'app/shared/layouts/profiles/profile-info.model'; import { UMLDiagramType } from '@ls1intum/apollon'; +import { provideHttpClient } from '@angular/common/http'; describe('Course Management Service', () => { let service: CourseExerciseService; @@ -45,8 +46,10 @@ describe('Course Management Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/data-export.service.spec.ts b/src/test/javascript/spec/service/data-export.service.spec.ts index 940754dea6ec..6fb7967cf76d 100644 --- a/src/test/javascript/spec/service/data-export.service.spec.ts +++ b/src/test/javascript/spec/service/data-export.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { DataExportService } from 'app/core/legal/data-export/data-export.service'; import { DataExport } from 'app/entities/data-export.model'; @@ -6,6 +6,7 @@ import { User } from 'app/core/user/user.model'; import dayjs from 'dayjs/esm'; import { MockTranslateService } from '../helpers/mocks/service/mock-translate.service'; import { TranslateService } from '@ngx-translate/core'; +import { provideHttpClient } from '@angular/common/http'; describe('DataExportService', () => { let service: DataExportService; @@ -13,8 +14,8 @@ describe('DataExportService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: TranslateService, useClass: MockTranslateService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }], }); service = TestBed.inject(DataExportService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/exam-import-paging.service.spec.ts b/src/test/javascript/spec/service/exam-import-paging.service.spec.ts index 091acf0bc0c0..1f51356b8a1e 100644 --- a/src/test/javascript/spec/service/exam-import-paging.service.spec.ts +++ b/src/test/javascript/spec/service/exam-import-paging.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { TranslateService } from '@ngx-translate/core'; import { SortingOrder } from 'app/shared/table/pageable-table'; @@ -8,6 +8,7 @@ import { MockSyncStorage } from '../helpers/mocks/service/mock-sync-storage.serv import { MockTranslateService } from '../helpers/mocks/service/mock-translate.service'; import { Exam } from 'app/entities/exam/exam.model'; import { ExamImportPagingService } from 'app/exam/manage/exams/exam-import/exam-import-paging.service'; +import { provideHttpClient } from '@angular/common/http'; describe('Exam Import Paging Service', () => { let service: ExamImportPagingService; @@ -22,8 +23,10 @@ describe('Exam Import Paging Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: LocalStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/exam-participation-live-events.service.spec.ts b/src/test/javascript/spec/service/exam-participation-live-events.service.spec.ts index 7950c0c96bdb..07b49299c4ec 100644 --- a/src/test/javascript/spec/service/exam-participation-live-events.service.spec.ts +++ b/src/test/javascript/spec/service/exam-participation-live-events.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { Subject, firstValueFrom } from 'rxjs'; import { ConnectionState, JhiWebsocketService } from 'app/core/websocket/websocket.service'; import { ExamParticipationService } from 'app/exam/participate/exam-participation.service'; @@ -7,6 +7,7 @@ import { ExamLiveEvent, ExamLiveEventType, ExamParticipationLiveEventsService } import { LocalStorageService } from 'ngx-webstorage'; import dayjs from 'dayjs/esm'; import { MockWebsocketService } from '../helpers/mocks/service/mock-websocket.service'; +import { provideHttpClient } from '@angular/common/http'; describe('ExamParticipationLiveEventsService', () => { let service: ExamParticipationLiveEventsService; @@ -34,8 +35,10 @@ describe('ExamParticipationLiveEventsService', () => { mockWebsocketService = tmpMockWebsocketService as unknown as JhiWebsocketService; TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: JhiWebsocketService, useValue: mockWebsocketService }, { provide: ExamParticipationService, useValue: mockExamParticipationService }, { provide: LocalStorageService, useValue: mockLocalStorageService }, diff --git a/src/test/javascript/spec/service/exam-participation.service.spec.ts b/src/test/javascript/spec/service/exam-participation.service.spec.ts index 56d0aa53bef8..26e52989bb33 100644 --- a/src/test/javascript/spec/service/exam-participation.service.spec.ts +++ b/src/test/javascript/spec/service/exam-participation.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import dayjs from 'dayjs/esm'; import { ExamParticipationService } from 'app/exam/participate/exam-participation.service'; @@ -19,6 +19,7 @@ import { Result } from 'app/entities/result.model'; import { getLatestSubmissionResult } from 'app/entities/submission.model'; import { StudentExamWithGradeDTO, StudentResult } from 'app/exam/exam-scores/exam-score-dtos.model'; import { GradeType } from 'app/entities/grading-scale.model'; +import { provideHttpClient } from '@angular/common/http'; describe('ExamParticipationService', () => { let service: ExamParticipationService; @@ -30,8 +31,10 @@ describe('ExamParticipationService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, ArtemisTestModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/example-submission-import-paging.service.spec.ts b/src/test/javascript/spec/service/example-submission-import-paging.service.spec.ts index d1eee71bc343..a0366227a455 100644 --- a/src/test/javascript/spec/service/example-submission-import-paging.service.spec.ts +++ b/src/test/javascript/spec/service/example-submission-import-paging.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { TranslateService } from '@ngx-translate/core'; import { SortingOrder } from 'app/shared/table/pageable-table'; @@ -9,6 +9,7 @@ import { MockTranslateService } from '../helpers/mocks/service/mock-translate.se import { ExampleSubmissionImportPagingService } from 'app/exercises/shared/example-submission/example-submission-import/example-submission-import-paging.service'; import { Exercise } from 'app/entities/exercise.model'; import { TextSubmission } from 'app/entities/text/text-submission.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Example Submission Import Paging Service', () => { let service: ExampleSubmissionImportPagingService; @@ -16,8 +17,10 @@ describe('Example Submission Import Paging Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: LocalStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/example-submission.service.spec.ts b/src/test/javascript/spec/service/example-submission.service.spec.ts index 60addda81875..afc3aeb922b3 100644 --- a/src/test/javascript/spec/service/example-submission.service.spec.ts +++ b/src/test/javascript/spec/service/example-submission.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; import { ExampleSubmissionService } from 'app/exercises/shared/example-submission/example-submission.service'; @@ -24,8 +24,8 @@ describe('Example Submission Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], - providers: [{ provide: ExerciseService, useClass: MockExerciseService }, MockProvider(StringCountService)], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: ExerciseService, useClass: MockExerciseService }, MockProvider(StringCountService)], }); service = TestBed.inject(ExampleSubmissionService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/exercise-hint.service.spec.ts b/src/test/javascript/spec/service/exercise-hint.service.spec.ts index 74a6c5e84bb9..b988b61db162 100644 --- a/src/test/javascript/spec/service/exercise-hint.service.spec.ts +++ b/src/test/javascript/spec/service/exercise-hint.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { take } from 'rxjs/operators'; import { ExerciseService } from 'app/exercises/shared/exercise/exercise.service'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; @@ -17,8 +17,8 @@ describe('ExerciseHint Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: ExerciseService, useClass: MockExerciseService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: ExerciseService, useClass: MockExerciseService }], }); expectedResult = {} as HttpResponse; service = TestBed.inject(ExerciseHintService); diff --git a/src/test/javascript/spec/service/exercise-scores-chart.service.spec.ts b/src/test/javascript/spec/service/exercise-scores-chart.service.spec.ts index 7feea1837e42..3726acd33010 100644 --- a/src/test/javascript/spec/service/exercise-scores-chart.service.spec.ts +++ b/src/test/javascript/spec/service/exercise-scores-chart.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { ArtemisTestModule } from '../test.module'; import { MockSyncStorage } from '../helpers/mocks/service/mock-sync-storage.service'; import { MockTranslateService } from '../helpers/mocks/service/mock-translate.service'; @@ -7,6 +7,7 @@ import { SessionStorageService } from 'ngx-webstorage'; import { TranslateService } from '@ngx-translate/core'; import { take } from 'rxjs/operators'; import { ExerciseScoresChartService, ExerciseScoresDTO } from 'app/overview/visualizations/exercise-scores-chart.service'; +import { provideHttpClient } from '@angular/common/http'; describe('Exercise Scores Chart Service', () => { let service: ExerciseScoresChartService; @@ -15,8 +16,10 @@ describe('Exercise Scores Chart Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, ], diff --git a/src/test/javascript/spec/service/exercise.service.spec.ts b/src/test/javascript/spec/service/exercise.service.spec.ts index 3213088306c1..82aa1b9369f6 100644 --- a/src/test/javascript/spec/service/exercise.service.spec.ts +++ b/src/test/javascript/spec/service/exercise.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; @@ -24,6 +24,7 @@ import { Observable } from 'rxjs'; import { AccountService } from 'app/core/auth/account.service'; import { EntityTitleService } from 'app/shared/layouts/navbar/entity-title.service'; import { ProfileService } from 'app/shared/layouts/profiles/profile.service'; +import { provideHttpClient } from '@angular/common/http'; describe('Exercise Service', () => { let service: ExerciseService; @@ -64,8 +65,10 @@ describe('Exercise Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/external-submission.service.spec.ts b/src/test/javascript/spec/service/external-submission.service.spec.ts index b7b7c6701e8b..816d4ec35314 100644 --- a/src/test/javascript/spec/service/external-submission.service.spec.ts +++ b/src/test/javascript/spec/service/external-submission.service.spec.ts @@ -1,6 +1,6 @@ import { ArtemisTestModule } from '../test.module'; import { ExternalSubmissionService } from 'app/exercises/shared/external-submission/external-submission.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { ExerciseType } from 'app/entities/exercise.model'; import { Result } from 'app/entities/result.model'; @@ -8,6 +8,7 @@ import { User } from 'app/core/user/user.model'; import { EntityResponseType, ResultService } from 'app/exercises/shared/result/result.service'; import dayjs from 'dayjs/esm'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; +import { provideHttpClient } from '@angular/common/http'; describe('External Submission Service', () => { let httpMock: HttpTestingController; @@ -15,7 +16,8 @@ describe('External Submission Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(ExternalSubmissionService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/faq.service.spec.ts b/src/test/javascript/spec/service/faq.service.spec.ts index b5612f991ebd..931238c987c9 100644 --- a/src/test/javascript/spec/service/faq.service.spec.ts +++ b/src/test/javascript/spec/service/faq.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; @@ -21,8 +21,10 @@ describe('Faq Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/file-type.service.spec.ts b/src/test/javascript/spec/service/file-type.service.spec.ts index 25d4439f9108..11da975b431c 100644 --- a/src/test/javascript/spec/service/file-type.service.spec.ts +++ b/src/test/javascript/spec/service/file-type.service.spec.ts @@ -1,13 +1,15 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { FileTypeService } from 'app/exercises/programming/shared/service/file-type.service'; +import { provideHttpClient } from '@angular/common/http'; describe('FileTypeService', () => { let service: FileTypeService; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(FileTypeService); diff --git a/src/test/javascript/spec/service/file-upload-assessment.service.spec.ts b/src/test/javascript/spec/service/file-upload-assessment.service.spec.ts index db8c081cba25..5e689ee0992c 100644 --- a/src/test/javascript/spec/service/file-upload-assessment.service.spec.ts +++ b/src/test/javascript/spec/service/file-upload-assessment.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import dayjs from 'dayjs/esm'; import { Result } from 'app/entities/result.model'; @@ -7,7 +7,7 @@ import { Feedback } from 'app/entities/feedback.model'; import { FileUploadAssessmentService } from 'app/exercises/file-upload/assess/file-upload-assessment.service'; import { ArtemisTestModule } from '../test.module'; import { ComplaintResponse } from 'app/entities/complaint-response.model'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; describe('Modeling Assessment Service', () => { let httpMock: HttpTestingController; @@ -18,7 +18,8 @@ describe('Modeling Assessment Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(FileUploadAssessmentService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/file-upload-exercise.service.spec.ts b/src/test/javascript/spec/service/file-upload-exercise.service.spec.ts index 00627640a1d1..795d3e1b6f57 100644 --- a/src/test/javascript/spec/service/file-upload-exercise.service.spec.ts +++ b/src/test/javascript/spec/service/file-upload-exercise.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { map, take } from 'rxjs/operators'; import { FileUploadExerciseService } from 'app/exercises/file-upload/manage/file-upload-exercise.service'; @@ -12,6 +12,7 @@ import { TranslateService } from '@ngx-translate/core'; import { Course } from 'app/entities/course.model'; import { ExerciseService } from 'app/exercises/shared/exercise/exercise.service'; import { MockExerciseService } from '../helpers/mocks/service/mock-exercise.service'; +import { provideHttpClient } from '@angular/common/http'; describe('FileUploadExercise Service', () => { let service: FileUploadExerciseService; @@ -25,8 +26,10 @@ describe('FileUploadExercise Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/file-upload-submission.service.spec.ts b/src/test/javascript/spec/service/file-upload-submission.service.spec.ts index 0d70069df20c..75c0075eba60 100644 --- a/src/test/javascript/spec/service/file-upload-submission.service.spec.ts +++ b/src/test/javascript/spec/service/file-upload-submission.service.spec.ts @@ -1,10 +1,11 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { map, take } from 'rxjs/operators'; import { FileUploadSubmissionService } from 'app/exercises/file-upload/participate/file-upload-submission.service'; import { FileUploadSubmission } from 'app/entities/file-upload-submission.model'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../helpers/mocks/service/mock-account.service'; +import { provideHttpClient } from '@angular/common/http'; describe('FileUploadSubmission Service', () => { let service: FileUploadSubmissionService; @@ -13,8 +14,8 @@ describe('FileUploadSubmission Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }); service = TestBed.inject(FileUploadSubmissionService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/grading-system.service.spec.ts b/src/test/javascript/spec/service/grading-system.service.spec.ts index 027e7ddc0da5..e35b36c63437 100644 --- a/src/test/javascript/spec/service/grading-system.service.spec.ts +++ b/src/test/javascript/spec/service/grading-system.service.spec.ts @@ -1,12 +1,12 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { GradingSystemService } from 'app/grading-system/grading-system.service'; import { GradeType, GradingScale } from 'app/entities/grading-scale.model'; import { take } from 'rxjs/operators'; import { RouterTestingModule } from '@angular/router/testing'; import { GradeDTO, GradeStep, GradeStepsDTO } from 'app/entities/grade-step.model'; import { of } from 'rxjs'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { cloneDeep } from 'lodash-es'; describe('Grading System Service', () => { @@ -42,7 +42,8 @@ describe('Grading System Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, RouterTestingModule], + imports: [RouterTestingModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(GradingSystemService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/lecture.service.spec.ts b/src/test/javascript/spec/service/lecture.service.spec.ts index ecd4ceea10d0..681d13f11509 100644 --- a/src/test/javascript/spec/service/lecture.service.spec.ts +++ b/src/test/javascript/spec/service/lecture.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; @@ -21,8 +21,10 @@ describe('Lecture Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/logs.service.spec.ts b/src/test/javascript/spec/service/logs.service.spec.ts index 609d658288c9..541772d705aa 100644 --- a/src/test/javascript/spec/service/logs.service.spec.ts +++ b/src/test/javascript/spec/service/logs.service.spec.ts @@ -1,7 +1,8 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { LogsService } from 'app/admin/logs/logs.service'; import { Log } from 'app/admin/logs/log.model'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; describe('Logs Service', () => { let service: LogsService; @@ -9,7 +10,8 @@ describe('Logs Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(LogsService); diff --git a/src/test/javascript/spec/service/lti-configuration.service.spec.ts b/src/test/javascript/spec/service/lti-configuration.service.spec.ts index 5fafdbdb34da..dd76c709c89a 100644 --- a/src/test/javascript/spec/service/lti-configuration.service.spec.ts +++ b/src/test/javascript/spec/service/lti-configuration.service.spec.ts @@ -1,9 +1,9 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { LtiPlatformConfiguration } from 'app/admin/lti-configuration/lti-configuration.model'; import { LtiConfigurationService } from 'app/admin/lti-configuration/lti-configuration.service'; import { ITEMS_PER_PAGE } from 'app/shared/constants/pagination.constants'; -import { HttpErrorResponse } from '@angular/common/http'; +import { HttpErrorResponse, provideHttpClient } from '@angular/common/http'; describe('LtiConfigurationService', () => { let service: LtiConfigurationService; @@ -11,8 +11,8 @@ describe('LtiConfigurationService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [LtiConfigurationService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), LtiConfigurationService], }); service = TestBed.inject(LtiConfigurationService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/metis/answer-post.service.spec.ts b/src/test/javascript/spec/service/metis/answer-post.service.spec.ts index a73fb8467319..9da223085265 100644 --- a/src/test/javascript/spec/service/metis/answer-post.service.spec.ts +++ b/src/test/javascript/spec/service/metis/answer-post.service.spec.ts @@ -1,8 +1,9 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { AnswerPostService } from 'app/shared/metis/answer-post.service'; import { metisAnswerPostToCreateUser1, metisResolvingAnswerPostUser1 } from '../../helpers/sample/metis-sample-data'; +import { provideHttpClient } from '@angular/common/http'; describe('AnswerPost Service', () => { let service: AnswerPostService; @@ -10,7 +11,8 @@ describe('AnswerPost Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(AnswerPostService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/metis/metis.service.spec.ts b/src/test/javascript/spec/service/metis/metis.service.spec.ts index 9608e39ca2a5..7b61efbc958e 100644 --- a/src/test/javascript/spec/service/metis/metis.service.spec.ts +++ b/src/test/javascript/spec/service/metis/metis.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { Post } from 'app/entities/metis/post.model'; import { Course } from 'app/entities/course.model'; import { MockPostService } from '../../helpers/mocks/service/mock-post.service'; @@ -42,7 +42,7 @@ import { import { ITEMS_PER_PAGE } from 'app/shared/constants/pagination.constants'; import { ChannelDTO, ChannelSubType } from 'app/entities/metis/conversation/channel.model'; import { ConversationType } from 'app/entities/metis/conversation/conversation.model'; -import { HttpHeaders, HttpResponse } from '@angular/common/http'; +import { HttpHeaders, HttpResponse, provideHttpClient } from '@angular/common/http'; import { ConversationService } from 'app/shared/metis/conversations/conversation.service'; import { NotificationService } from 'app/shared/notification/notification.service'; import { MockNotificationService } from '../../helpers/mocks/service/mock-notification.service'; @@ -66,8 +66,10 @@ describe('Metis Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), MockProvider(SessionStorageService), MockProvider(ConversationService), { provide: NotificationService, useClass: MockNotificationService }, diff --git a/src/test/javascript/spec/service/metis/post.service.spec.ts b/src/test/javascript/spec/service/metis/post.service.spec.ts index bc06c55fb706..dae7803858b5 100644 --- a/src/test/javascript/spec/service/metis/post.service.spec.ts +++ b/src/test/javascript/spec/service/metis/post.service.spec.ts @@ -1,10 +1,11 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { Post } from 'app/entities/metis/post.model'; import { PostService } from 'app/shared/metis/post.service'; import { DisplayPriority } from 'app/shared/metis/metis.util'; import { metisCourse, metisCoursePosts, metisPostExerciseUser1, metisPostToCreateUser1, metisTags } from '../../helpers/sample/metis-sample-data'; +import { provideHttpClient } from '@angular/common/http'; describe('Post Service', () => { let service: PostService; @@ -12,7 +13,8 @@ describe('Post Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(PostService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/metis/reaction.service.spec.ts b/src/test/javascript/spec/service/metis/reaction.service.spec.ts index 9815b0a382e9..4bc0a252c51d 100644 --- a/src/test/javascript/spec/service/metis/reaction.service.spec.ts +++ b/src/test/javascript/spec/service/metis/reaction.service.spec.ts @@ -1,9 +1,10 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { Reaction } from 'app/entities/metis/reaction.model'; import { ReactionService } from 'app/shared/metis/reaction.service'; import { metisReactionToCreate, metisReactionUser2 } from '../../helpers/sample/metis-sample-data'; +import { provideHttpClient } from '@angular/common/http'; describe('Reaction Service', () => { let service: ReactionService; @@ -11,7 +12,8 @@ describe('Reaction Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(ReactionService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/modeling-assessment.service.spec.ts b/src/test/javascript/spec/service/modeling-assessment.service.spec.ts index e2579b0b93c9..4ca47f887385 100644 --- a/src/test/javascript/spec/service/modeling-assessment.service.spec.ts +++ b/src/test/javascript/spec/service/modeling-assessment.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; @@ -106,8 +106,10 @@ describe('ModelingAssessmentService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/modeling-exercise.service.spec.ts b/src/test/javascript/spec/service/modeling-exercise.service.spec.ts index 5fdfe0efe181..26c669335007 100644 --- a/src/test/javascript/spec/service/modeling-exercise.service.spec.ts +++ b/src/test/javascript/spec/service/modeling-exercise.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { ModelingExerciseService } from 'app/exercises/modeling/manage/modeling-exercise.service'; import { ModelingExercise } from 'app/entities/modeling-exercise.model'; @@ -16,6 +16,7 @@ import { Router } from '@angular/router'; import { MockRouter } from '../helpers/mocks/mock-router'; import { lastValueFrom } from 'rxjs'; import { UMLDiagramType } from '@ls1intum/apollon'; +import { provideHttpClient } from '@angular/common/http'; describe('ModelingExercise Service', () => { let service: ModelingExerciseService; @@ -26,8 +27,10 @@ describe('ModelingExercise Service', () => { const categories = [JSON.stringify(category) as unknown as ExerciseCategory] as ExerciseCategory[]; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: LocalStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/modeling-submission.service.spec.ts b/src/test/javascript/spec/service/modeling-submission.service.spec.ts index 090171ef6ab6..f8bacc84ded4 100644 --- a/src/test/javascript/spec/service/modeling-submission.service.spec.ts +++ b/src/test/javascript/spec/service/modeling-submission.service.spec.ts @@ -1,10 +1,11 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { ModelingSubmission } from 'app/entities/modeling-submission.model'; import { ModelingSubmissionService } from 'app/exercises/modeling/participate/modeling-submission.service'; import { take } from 'rxjs/operators'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../helpers/mocks/service/mock-account.service'; +import { provideHttpClient } from '@angular/common/http'; describe('ModelingSubmission Service', () => { let service: ModelingSubmissionService; @@ -13,8 +14,8 @@ describe('ModelingSubmission Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }); service = TestBed.inject(ModelingSubmissionService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/notification.service.spec.ts b/src/test/javascript/spec/service/notification.service.spec.ts index 9293a0d3cee1..6c0beb2c4a0c 100644 --- a/src/test/javascript/spec/service/notification.service.spec.ts +++ b/src/test/javascript/spec/service/notification.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController, TestRequest } from '@angular/common/http/testing'; +import { HttpTestingController, TestRequest, provideHttpClientTesting } from '@angular/common/http/testing'; import { NotificationService } from 'app/shared/notification/notification.service'; import { MockSyncStorage } from '../helpers/mocks/service/mock-sync-storage.service'; import { TestBed } from '@angular/core/testing'; @@ -40,6 +40,7 @@ import { Post } from 'app/entities/metis/post.model'; import { User } from 'app/core/user/user.model'; import { ConversationType } from 'app/entities/metis/conversation/conversation.model'; import { Channel } from 'app/entities/metis/conversation/channel.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Notification Service', () => { const resourceUrl = 'api/notifications'; @@ -155,9 +156,11 @@ describe('Notification Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule, TranslateTestingModule, RouterTestingModule.withRoutes([])], + imports: [TranslateTestingModule, RouterTestingModule.withRoutes([])], declarations: [MockPipe(ArtemisTranslatePipe)], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: Router, useClass: MockRouter }, diff --git a/src/test/javascript/spec/service/participation.service.spec.ts b/src/test/javascript/spec/service/participation.service.spec.ts index 0d405cbfb018..2084e5efd1d6 100644 --- a/src/test/javascript/spec/service/participation.service.spec.ts +++ b/src/test/javascript/spec/service/participation.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpHeaders, HttpResponse } from '@angular/common/http'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpHeaders, HttpResponse, provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { map, take } from 'rxjs/operators'; import dayjs from 'dayjs/esm'; import { ParticipationService } from 'app/exercises/shared/participation/participation.service'; @@ -24,8 +24,10 @@ describe('Participation Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/plagiarism-cases.service.spec.ts b/src/test/javascript/spec/service/plagiarism-cases.service.spec.ts index 134bdc518fee..f9133ebf11db 100644 --- a/src/test/javascript/spec/service/plagiarism-cases.service.spec.ts +++ b/src/test/javascript/spec/service/plagiarism-cases.service.spec.ts @@ -1,4 +1,4 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { PlagiarismCasesService } from 'app/course/plagiarism-cases/shared/plagiarism-cases.service'; import { take } from 'rxjs/operators'; @@ -11,6 +11,7 @@ import { ModelingSubmissionElement } from 'app/exercises/shared/plagiarism/types import { PlagiarismCase } from 'app/exercises/shared/plagiarism/types/PlagiarismCase'; import { PlagiarismSubmission } from 'app/exercises/shared/plagiarism/types/PlagiarismSubmission'; import { PlagiarismVerdict } from 'app/exercises/shared/plagiarism/types/PlagiarismVerdict'; +import { provideHttpClient } from '@angular/common/http'; describe('Plagiarism Cases Service', () => { let service: PlagiarismCasesService; @@ -71,7 +72,8 @@ describe('Plagiarism Cases Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(PlagiarismCasesService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/plagiarism-results.service.spec.ts b/src/test/javascript/spec/service/plagiarism-results.service.spec.ts index 809adc604178..fa5e6fe2e5ad 100644 --- a/src/test/javascript/spec/service/plagiarism-results.service.spec.ts +++ b/src/test/javascript/spec/service/plagiarism-results.service.spec.ts @@ -1,4 +1,5 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { provideHttpClient } from '@angular/common/http'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { PlagiarismResultsService } from 'app/course/plagiarism-cases/shared/plagiarism-results.service'; @@ -7,7 +8,8 @@ describe('Plagiarism Results Service', () => { let httpMock: HttpTestingController; beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(PlagiarismResultsService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/profile.service.spec.ts b/src/test/javascript/spec/service/profile.service.spec.ts index 2d3c984d5345..ace62a0ea60b 100644 --- a/src/test/javascript/spec/service/profile.service.spec.ts +++ b/src/test/javascript/spec/service/profile.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { ProfileService } from 'app/shared/layouts/profiles/profile.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { MockSyncStorage } from '../helpers/mocks/service/mock-sync-storage.service'; import { MockRouter } from '../helpers/mocks/mock-router'; @@ -9,6 +9,7 @@ import { ProfileInfo } from 'app/shared/layouts/profiles/profile-info.model'; import { FeatureToggle } from 'app/shared/feature-toggle/feature-toggle.service'; import { ProgrammingLanguage, ProjectType } from 'app/entities/programming/programming-exercise.model'; import { BrowserFingerprintService } from 'app/shared/fingerprint/browser-fingerprint.service'; +import { provideHttpClient } from '@angular/common/http'; describe('ProfileService', () => { let service: ProfileService; @@ -268,8 +269,10 @@ describe('ProfileService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: Router, useClass: MockRouter }, diff --git a/src/test/javascript/spec/service/programming-exercise-participation.service.spec.ts b/src/test/javascript/spec/service/programming-exercise-participation.service.spec.ts index 1ef9b69501d1..edc1a07586a0 100644 --- a/src/test/javascript/spec/service/programming-exercise-participation.service.spec.ts +++ b/src/test/javascript/spec/service/programming-exercise-participation.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { AccountService } from 'app/core/auth/account.service'; import { of } from 'rxjs'; import { ProgrammingExerciseParticipationService } from 'app/exercises/programming/manage/services/programming-exercise-participation.service'; @@ -7,6 +7,7 @@ import { Submission } from 'app/entities/submission.model'; import { ArtemisTestModule } from '../test.module'; import { Result } from 'app/entities/result.model'; import dayjs from 'dayjs/esm'; +import { provideHttpClient } from '@angular/common/http'; describe('ProgrammingExerciseParticipation Service', () => { let service: ProgrammingExerciseParticipationService; @@ -20,8 +21,8 @@ describe('ProgrammingExerciseParticipation Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], - providers: [], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/service/programming-exercise-task.service.spec.ts b/src/test/javascript/spec/service/programming-exercise-task.service.spec.ts index b45536f41584..a47cc762f73b 100644 --- a/src/test/javascript/spec/service/programming-exercise-task.service.spec.ts +++ b/src/test/javascript/spec/service/programming-exercise-task.service.spec.ts @@ -1,7 +1,7 @@ import { ProgrammingExerciseTaskService } from 'app/exercises/programming/manage/grading/tasks/programming-exercise-task.service'; import { TestBed } from '@angular/core/testing'; import { ArtemisTestModule } from '../test.module'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { AlertService } from 'app/core/util/alert.service'; import { ProgrammingExerciseGradingService } from 'app/exercises/programming/manage/services/programming-exercise-grading.service'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; @@ -13,6 +13,7 @@ import { ProgrammingExerciseTask } from 'app/exercises/programming/manage/gradin import { ProgrammingExerciseServerSideTask } from 'app/entities/hestia/programming-exercise-task.model'; import { ProgrammingExerciseTestCase, ProgrammingExerciseTestCaseType, Visibility } from 'app/entities/programming/programming-exercise-test-case.model'; import { firstValueFrom, of } from 'rxjs'; +import { provideHttpClient } from '@angular/common/http'; describe('ProgrammingExerciseTask Service', () => { let service: ProgrammingExerciseTaskService; @@ -127,8 +128,10 @@ describe('ProgrammingExerciseTask Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), ProgrammingExerciseTaskService, { provide: ProgrammingExerciseGradingService, useClass: MockProgrammingExerciseGradingService }, MockProvider(AlertService), diff --git a/src/test/javascript/spec/service/programming-exercise.service.spec.ts b/src/test/javascript/spec/service/programming-exercise.service.spec.ts index 70d9a94a1eb7..9d450bbf7f8f 100644 --- a/src/test/javascript/spec/service/programming-exercise.service.spec.ts +++ b/src/test/javascript/spec/service/programming-exercise.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { ProgrammingExerciseService } from 'app/exercises/programming/manage/services/programming-exercise.service'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; @@ -20,6 +20,7 @@ import { SolutionProgrammingExerciseParticipation } from 'app/entities/participa import { Submission } from 'app/entities/submission.model'; import { ProgrammingExerciseGitDiffReport } from 'app/entities/hestia/programming-exercise-git-diff-report.model'; import { ProgrammingExerciseGitDiffEntry } from 'app/entities/hestia/programming-exercise-git-diff-entry.model'; +import { provideHttpClient } from '@angular/common/http'; describe('ProgrammingExercise Service', () => { let service: ProgrammingExerciseService; @@ -30,8 +31,10 @@ describe('ProgrammingExercise Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: TranslateService, useClass: MockTranslateService }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: LocalStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/programming-submission.service.spec.ts b/src/test/javascript/spec/service/programming-submission.service.spec.ts index 6259bcaf65d9..eaed7a0be320 100644 --- a/src/test/javascript/spec/service/programming-submission.service.spec.ts +++ b/src/test/javascript/spec/service/programming-submission.service.spec.ts @@ -16,10 +16,10 @@ import { StudentParticipation } from 'app/entities/participation/student-partici import { MockParticipationWebsocketService } from '../helpers/mocks/service/mock-participation-websocket.service'; import { ProgrammingExerciseParticipationService } from 'app/exercises/programming/manage/services/programming-exercise-participation.service'; import { MockProgrammingExerciseParticipationService } from '../helpers/mocks/service/mock-programming-exercise-participation.service'; -import { HttpClient } from '@angular/common/http'; +import { HttpClient, provideHttpClient } from '@angular/common/http'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { JhiWebsocketService } from 'app/core/websocket/websocket.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; describe('ProgrammingSubmissionService', () => { let websocketService: JhiWebsocketService; @@ -54,8 +54,10 @@ describe('ProgrammingSubmissionService', () => { result2 = { id: 32, submission: currentSubmission2 } as any; TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: JhiWebsocketService, useClass: MockWebsocketService }, { provide: ParticipationWebsocketService, useClass: MockParticipationWebsocketService }, { provide: ProgrammingExerciseParticipationService, useClass: MockProgrammingExerciseParticipationService }, diff --git a/src/test/javascript/spec/service/quiz-exercise.service.spec.ts b/src/test/javascript/spec/service/quiz-exercise.service.spec.ts index c1fe73c1139b..29db9a28779e 100644 --- a/src/test/javascript/spec/service/quiz-exercise.service.spec.ts +++ b/src/test/javascript/spec/service/quiz-exercise.service.spec.ts @@ -1,7 +1,7 @@ import { TranslateService } from '@ngx-translate/core'; import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController, TestRequest } from '@angular/common/http/testing'; -import { HttpResponse } from '@angular/common/http'; +import { HttpTestingController, TestRequest, provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { SessionStorageService } from 'ngx-webstorage'; import { QuizExerciseService } from 'app/exercises/quiz/manage/quiz-exercise.service'; import { QuizBatch, QuizExercise, QuizStatus } from 'app/entities/quiz/quiz-exercise.model'; @@ -43,8 +43,10 @@ describe('QuizExercise Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, ], diff --git a/src/test/javascript/spec/service/quiz-pool.service.spec.ts b/src/test/javascript/spec/service/quiz-pool.service.spec.ts index 049a8be08df1..021542bf25d1 100644 --- a/src/test/javascript/spec/service/quiz-pool.service.spec.ts +++ b/src/test/javascript/spec/service/quiz-pool.service.spec.ts @@ -1,9 +1,10 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; import { QuizPoolService } from 'app/exercises/quiz/manage/quiz-pool.service'; import { ArtemisTestModule } from '../test.module'; import { QuizPool } from 'app/entities/quiz/quiz-pool.model'; import { firstValueFrom } from 'rxjs'; +import { provideHttpClient } from '@angular/common/http'; describe('QuizPoolService', () => { let quizPoolService: QuizPoolService; @@ -11,8 +12,8 @@ describe('QuizPoolService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], - providers: [QuizPoolService], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting(), QuizPoolService], }); quizPoolService = TestBed.inject(QuizPoolService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/quiz-re-evaluate.service.spec.ts b/src/test/javascript/spec/service/quiz-re-evaluate.service.spec.ts index 1cba6a320fda..907b121de7a7 100644 --- a/src/test/javascript/spec/service/quiz-re-evaluate.service.spec.ts +++ b/src/test/javascript/spec/service/quiz-re-evaluate.service.spec.ts @@ -1,16 +1,17 @@ -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { QuizReEvaluateService } from 'app/exercises/quiz/manage/re-evaluate/quiz-re-evaluate.service'; import { ArtemisTestModule } from '../test.module'; import { QuizExercise } from 'app/entities/quiz/quiz-exercise.model'; +import { provideHttpClient } from '@angular/common/http'; describe('QuizReEvaluateService', () => { let service: QuizReEvaluateService; let httpMock: HttpTestingController; beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], - providers: [QuizReEvaluateService], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting(), QuizReEvaluateService], }); service = TestBed.inject(QuizReEvaluateService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/rating.service.spec.ts b/src/test/javascript/spec/service/rating.service.spec.ts index 9ee310a08e27..eac37f21d9b8 100644 --- a/src/test/javascript/spec/service/rating.service.spec.ts +++ b/src/test/javascript/spec/service/rating.service.spec.ts @@ -1,10 +1,11 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; import { RatingService } from 'app/exercises/shared/rating/rating.service'; import { Rating } from 'app/entities/rating.model'; import { Result } from 'app/entities/result.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Rating Service', () => { let service: RatingService; @@ -12,7 +13,8 @@ describe('Rating Service', () => { let elemDefault: Rating; beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(RatingService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/result.service.spec.ts b/src/test/javascript/spec/service/result.service.spec.ts index 8afb25f538cd..7bd887f9cb9e 100644 --- a/src/test/javascript/spec/service/result.service.spec.ts +++ b/src/test/javascript/spec/service/result.service.spec.ts @@ -1,6 +1,6 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { HttpClient, HttpResponse } from '@angular/common/http'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; +import { HttpClient, HttpResponse, provideHttpClient } from '@angular/common/http'; import { TranslateService } from '@ngx-translate/core'; import { MockProvider } from 'ng-mocks'; import { of } from 'rxjs'; @@ -129,8 +129,10 @@ describe('ResultService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), ResultService, ExerciseService, ParticipationService, diff --git a/src/test/javascript/spec/service/settings/ide-settings.service.spec.ts b/src/test/javascript/spec/service/settings/ide-settings.service.spec.ts index 0fdb4d3350ca..f2937a2818ce 100644 --- a/src/test/javascript/spec/service/settings/ide-settings.service.spec.ts +++ b/src/test/javascript/spec/service/settings/ide-settings.service.spec.ts @@ -1,8 +1,9 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { IdeSettingsService } from 'app/shared/user-settings/ide-preferences/ide-settings.service'; import { Ide, IdeMappingDTO } from 'app/shared/user-settings/ide-preferences/ide.model'; import { ProgrammingLanguage } from 'app/entities/programming/programming-exercise.model'; +import { provideHttpClient } from '@angular/common/http'; describe('IdeSettingsService', () => { let service: IdeSettingsService; @@ -10,8 +11,8 @@ describe('IdeSettingsService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [IdeSettingsService], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), IdeSettingsService], }); service = TestBed.inject(IdeSettingsService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/structured-grading-criterion.service.spec.ts b/src/test/javascript/spec/service/structured-grading-criterion.service.spec.ts index 6e4e55611738..ae1660f17b86 100644 --- a/src/test/javascript/spec/service/structured-grading-criterion.service.spec.ts +++ b/src/test/javascript/spec/service/structured-grading-criterion.service.spec.ts @@ -1,8 +1,9 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { StructuredGradingCriterionService } from 'app/exercises/shared/structured-grading-criterion/structured-grading-criterion.service'; import { Feedback } from 'app/entities/feedback.model'; import { GradingInstruction } from 'app/exercises/shared/structured-grading-criterion/grading-instruction.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Structured Grading Criteria Service', () => { let service: StructuredGradingCriterionService; @@ -11,7 +12,8 @@ describe('Structured Grading Criteria Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(StructuredGradingCriterionService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/submission-export.service.spec.ts b/src/test/javascript/spec/service/submission-export.service.spec.ts index fb88ed3161ec..e0599599f44c 100644 --- a/src/test/javascript/spec/service/submission-export.service.spec.ts +++ b/src/test/javascript/spec/service/submission-export.service.spec.ts @@ -1,8 +1,9 @@ import { TestBed } from '@angular/core/testing'; import { ArtemisTestModule } from '../test.module'; import { SubmissionExportService } from 'app/exercises/shared/submission-export/submission-export.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { ExerciseType } from 'app/entities/exercise.model'; +import { provideHttpClient } from '@angular/common/http'; describe('Submission Export Service', () => { let service: SubmissionExportService; @@ -12,7 +13,8 @@ describe('Submission Export Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(SubmissionExportService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/submission-policy.service.spec.ts b/src/test/javascript/spec/service/submission-policy.service.spec.ts index 60c5f139df52..f6bff784fc46 100644 --- a/src/test/javascript/spec/service/submission-policy.service.spec.ts +++ b/src/test/javascript/spec/service/submission-policy.service.spec.ts @@ -1,9 +1,10 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { SubmissionPolicyService } from 'app/exercises/programming/manage/services/submission-policy.service'; import { LockRepositoryPolicy, SubmissionPolicyType } from 'app/entities/submission-policy.model'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { ProgrammingExercise } from 'app/entities/programming/programming-exercise.model'; import { take } from 'rxjs/operators'; +import { provideHttpClient } from '@angular/common/http'; describe('Submission Policy Service', () => { let httpMock: HttpTestingController; @@ -15,8 +16,8 @@ describe('Submission Policy Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: SubmissionPolicyService, useClass: SubmissionPolicyService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: SubmissionPolicyService, useClass: SubmissionPolicyService }], }); httpMock = TestBed.inject(HttpTestingController); submissionPolicyService = TestBed.inject(SubmissionPolicyService); diff --git a/src/test/javascript/spec/service/submission-version.service.spec.ts b/src/test/javascript/spec/service/submission-version.service.spec.ts index 380659aabf58..5b66938ff2a3 100644 --- a/src/test/javascript/spec/service/submission-version.service.spec.ts +++ b/src/test/javascript/spec/service/submission-version.service.spec.ts @@ -1,9 +1,10 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { ArtemisTestModule } from '../test.module'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TextSubmission } from 'app/entities/text/text-submission.model'; import dayjs from 'dayjs/esm'; import { SubmissionVersionService } from 'app/exercises/shared/submission-version/submission-version.service'; +import { provideHttpClient } from '@angular/common/http'; describe('SubmissionVersion Service', () => { let service: SubmissionVersionService; @@ -12,7 +13,8 @@ describe('SubmissionVersion Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting()], }).compileComponents(); service = TestBed.inject(SubmissionVersionService); diff --git a/src/test/javascript/spec/service/submission.service.spec.ts b/src/test/javascript/spec/service/submission.service.spec.ts index 276aa8be2498..244b23b35876 100644 --- a/src/test/javascript/spec/service/submission.service.spec.ts +++ b/src/test/javascript/spec/service/submission.service.spec.ts @@ -2,7 +2,7 @@ import { SubmissionService, SubmissionWithComplaintDTO } from 'app/exercises/sha import { TestBed, fakeAsync, tick } from '@angular/core/testing'; import { take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { MockSyncStorage } from '../helpers/mocks/service/mock-sync-storage.service'; import { TranslateService } from '@ngx-translate/core'; @@ -10,7 +10,7 @@ import { MockTranslateService } from '../helpers/mocks/service/mock-translate.se import { TextSubmission } from 'app/entities/text/text-submission.model'; import { Result } from 'app/entities/result.model'; import { Feedback, FeedbackType } from 'app/entities/feedback.model'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { Submission, SubmissionType, getLatestSubmissionResult } from 'app/entities/submission.model'; import dayjs from 'dayjs/esm'; import { Complaint } from 'app/entities/complaint.model'; @@ -23,8 +23,10 @@ describe('Submission Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], + imports: [ArtemisTestModule], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: LocalStorageService, useClass: MockSyncStorage }, { provide: SessionStorageService, useClass: MockSyncStorage }, { provide: TranslateService, useClass: MockTranslateService }, diff --git a/src/test/javascript/spec/service/text-assessment-analytics.service.spec.ts b/src/test/javascript/spec/service/text-assessment-analytics.service.spec.ts index 111bc06bc06c..365c4920c3ed 100644 --- a/src/test/javascript/spec/service/text-assessment-analytics.service.spec.ts +++ b/src/test/javascript/spec/service/text-assessment-analytics.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { TextAssessmentEventType } from 'app/entities/text/text-assesment-event.model'; import { TextAssessmentAnalytics } from 'app/exercises/text/assess/analytics/text-assesment-analytics.service'; import { FeedbackType } from 'app/entities/feedback.model'; @@ -14,6 +14,7 @@ import { ActivatedRoute } from '@angular/router'; import { TextAssessmentService } from 'app/exercises/text/assess/text-assessment.service'; import { throwError } from 'rxjs'; import { Location } from '@angular/common'; +import { provideHttpClient } from '@angular/common/http'; describe('TextAssessmentAnalytics Service', () => { let service: TextAssessmentAnalytics; @@ -32,8 +33,10 @@ describe('TextAssessmentAnalytics Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: Location, diff --git a/src/test/javascript/spec/service/text-assessment.service.spec.ts b/src/test/javascript/spec/service/text-assessment.service.spec.ts index 63ae92c49ffb..863259b528e7 100644 --- a/src/test/javascript/spec/service/text-assessment.service.spec.ts +++ b/src/test/javascript/spec/service/text-assessment.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { TextSubmission } from 'app/entities/text/text-submission.model'; import { TextAssessmentService } from 'app/exercises/text/assess/text-assessment.service'; @@ -17,6 +17,7 @@ import { NewStudentParticipationResolver, StudentParticipationResolver } from 'a import { TextSubmissionService } from 'app/exercises/text/participate/text-submission.service'; import { of } from 'rxjs'; import { ActivatedRouteSnapshot, convertToParamMap } from '@angular/router'; +import { provideHttpClient } from '@angular/common/http'; describe('TextAssessment Service', () => { let service: TextAssessmentService; @@ -64,8 +65,8 @@ describe('TextAssessment Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }); service = TestBed.inject(TextAssessmentService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/text-exercise.service.spec.ts b/src/test/javascript/spec/service/text-exercise.service.spec.ts index 5557d381a1e9..88d047510b48 100644 --- a/src/test/javascript/spec/service/text-exercise.service.spec.ts +++ b/src/test/javascript/spec/service/text-exercise.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { TextExerciseService } from 'app/exercises/text/manage/text-exercise/text-exercise.service'; import { TextExercise } from 'app/entities/text/text-exercise.model'; @@ -10,7 +10,7 @@ import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { Router } from '@angular/router'; import { MockSyncStorage } from '../helpers/mocks/service/mock-sync-storage.service'; import { MockRouter } from '../helpers/mocks/mock-router'; -import { HttpResponse } from '@angular/common/http'; +import { HttpResponse, provideHttpClient } from '@angular/common/http'; import { PlagiarismOptions } from 'app/exercises/shared/plagiarism/types/PlagiarismOptions'; import dayjs from 'dayjs/esm'; import { StudentParticipation } from 'app/entities/participation/student-participation.model'; @@ -26,8 +26,10 @@ describe('TextExercise Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], providers: [ + provideHttpClient(), + provideHttpClientTesting(), { provide: Router, useClass: MockRouter }, { provide: TranslateService, useClass: MockTranslateService }, { provide: LocalStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/text-submission.service.spec.ts b/src/test/javascript/spec/service/text-submission.service.spec.ts index d21d44eda72c..15d3236f1cc2 100644 --- a/src/test/javascript/spec/service/text-submission.service.spec.ts +++ b/src/test/javascript/spec/service/text-submission.service.spec.ts @@ -1,11 +1,12 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { take } from 'rxjs/operators'; import { TextSubmissionService } from 'app/exercises/text/participate/text-submission.service'; import { TextSubmission } from 'app/entities/text/text-submission.model'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../helpers/mocks/service/mock-account.service'; import { StudentParticipation } from 'app/entities/participation/student-participation.model'; +import { provideHttpClient } from '@angular/common/http'; describe('TextSubmission Service', () => { let service: TextSubmissionService; @@ -14,8 +15,8 @@ describe('TextSubmission Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }) .compileComponents() .then(() => { diff --git a/src/test/javascript/spec/service/tutor-participation.service.spec.ts b/src/test/javascript/spec/service/tutor-participation.service.spec.ts index b8adce9a8be1..5bae679aaa88 100644 --- a/src/test/javascript/spec/service/tutor-participation.service.spec.ts +++ b/src/test/javascript/spec/service/tutor-participation.service.spec.ts @@ -1,5 +1,5 @@ import { TestBed, fakeAsync, tick } from '@angular/core/testing'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { isEmpty, take } from 'rxjs/operators'; import { ArtemisTestModule } from '../test.module'; import { TutorParticipationService } from 'app/exercises/shared/dashboards/tutor/tutor-participation.service'; @@ -9,6 +9,7 @@ import { Exercise } from 'app/entities/exercise.model'; import { Course } from 'app/entities/course.model'; import { MockAccountService } from '../helpers/mocks/service/mock-account.service'; import { AccountService } from 'app/core/auth/account.service'; +import { provideHttpClient } from '@angular/common/http'; describe('Rating Service', () => { let service: TutorParticipationService; @@ -19,8 +20,8 @@ describe('Rating Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ArtemisTestModule, HttpClientTestingModule], - providers: [{ provide: AccountService, useClass: MockAccountService }], + imports: [ArtemisTestModule], + providers: [provideHttpClient(), provideHttpClientTesting(), { provide: AccountService, useClass: MockAccountService }], }); service = TestBed.inject(TutorParticipationService); httpMock = TestBed.inject(HttpTestingController); diff --git a/src/test/javascript/spec/service/user-route-access.service.spec.ts b/src/test/javascript/spec/service/user-route-access.service.spec.ts index 8546593c1339..d835a689234b 100644 --- a/src/test/javascript/spec/service/user-route-access.service.spec.ts +++ b/src/test/javascript/spec/service/user-route-access.service.spec.ts @@ -9,7 +9,7 @@ import { LocalStorageService, SessionStorageService } from 'ngx-webstorage'; import { AccountService } from 'app/core/auth/account.service'; import { MockAccountService } from '../helpers/mocks/service/mock-account.service'; import { RouterTestingModule } from '@angular/router/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { provideHttpClientTesting } from '@angular/common/http/testing'; import { Mutable } from '../helpers/mutable'; import { mockedActivatedRouteSnapshot } from '../helpers/mocks/activated-route/mock-activated-route-snapshot'; import { CourseExerciseDetailsComponent } from 'app/overview/exercise-details/course-exercise-details.component'; @@ -17,6 +17,7 @@ import { Authority } from 'app/shared/constants/authority.constants'; import { StateStorageService } from 'app/core/auth/state-storage.service'; import { MockProvider } from 'ng-mocks'; import { AlertService } from 'app/core/util/alert.service'; +import { provideHttpClient } from '@angular/common/http'; describe('UserRouteAccessService', () => { const routeStateMock: any = { snapshot: {}, url: '/courses/20/exercises/4512' }; @@ -39,7 +40,6 @@ describe('UserRouteAccessService', () => { TestBed.configureTestingModule({ imports: [ ArtemisTestModule, - HttpClientTestingModule, RouterTestingModule.withRoutes([ { path: route, @@ -49,6 +49,8 @@ describe('UserRouteAccessService', () => { ], declarations: [CourseExerciseDetailsComponent], providers: [ + provideHttpClient(), + provideHttpClientTesting(), mockedActivatedRouteSnapshot(route), { provide: AccountService, useClass: MockAccountService }, { provide: LocalStorageService, useClass: MockSyncStorage }, diff --git a/src/test/javascript/spec/service/user.service.spec.ts b/src/test/javascript/spec/service/user.service.spec.ts index 31cf92e2412c..6a76530103e5 100644 --- a/src/test/javascript/spec/service/user.service.spec.ts +++ b/src/test/javascript/spec/service/user.service.spec.ts @@ -1,8 +1,9 @@ import { TestBed } from '@angular/core/testing'; import { UserService } from 'app/core/user/user.service'; -import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing'; import { Authority } from 'app/shared/constants/authority.constants'; import { AdminUserService } from 'app/core/user/admin-user.service'; +import { provideHttpClient } from '@angular/common/http'; describe('User Service', () => { let service: UserService; @@ -11,7 +12,8 @@ describe('User Service', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], + imports: [], + providers: [provideHttpClient(), provideHttpClientTesting()], }); service = TestBed.inject(UserService);