diff --git a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.html b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.html
index 42a04b0de6..c70bc45947 100644
--- a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.html
+++ b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.html
@@ -1,6 +1,10 @@
{{'admin.metadata-import.page.help' | translate}}
+
+
+ {{'admin.metadata-import.page.validateOnly' | translate}}
+
{
comp.setFile(fileMock);
});
- describe('if proceed button is pressed', () => {
+ describe('if proceed button is pressed without validate only', () => {
beforeEach(fakeAsync(() => {
+ comp.validateOnly = false;
const proceed = fixture.debugElement.query(By.css('#proceedButton')).nativeElement;
proceed.click();
fixture.detectChanges();
@@ -107,6 +108,28 @@ describe('MetadataImportPageComponent', () => {
});
});
+ describe('if proceed button is pressed with validate only', () => {
+ beforeEach(fakeAsync(() => {
+ comp.validateOnly = true;
+ const proceed = fixture.debugElement.query(By.css('#proceedButton')).nativeElement;
+ proceed.click();
+ fixture.detectChanges();
+ }));
+ it('metadata-import script is invoked with -f fileName and the mockFile and -v validate-only', () => {
+ const parameterValues: ProcessParameter[] = [
+ Object.assign(new ProcessParameter(), { name: '-f', value: 'filename.txt' }),
+ Object.assign(new ProcessParameter(), { name: '-v', value: true }),
+ ];
+ expect(scriptService.invoke).toHaveBeenCalledWith(METADATA_IMPORT_SCRIPT_NAME, parameterValues, [fileMock]);
+ });
+ it('success notification is shown', () => {
+ expect(notificationService.success).toHaveBeenCalled();
+ });
+ it('redirected to process page', () => {
+ expect(router.navigateByUrl).toHaveBeenCalledWith('/processes/45');
+ });
+ });
+
describe('if proceed is pressed; but script invoke fails', () => {
beforeEach(fakeAsync(() => {
jasmine.getEnv().allowRespy(true);
diff --git a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts
index 3bdcca3084..deb16c0d73 100644
--- a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts
+++ b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts
@@ -30,6 +30,11 @@ export class MetadataImportPageComponent {
*/
fileObject: File;
+ /**
+ * The validate only flag
+ */
+ validateOnly = true;
+
public constructor(private location: Location,
protected translate: TranslateService,
protected notificationsService: NotificationsService,
@@ -62,6 +67,9 @@ export class MetadataImportPageComponent {
const parameterValues: ProcessParameter[] = [
Object.assign(new ProcessParameter(), { name: '-f', value: this.fileObject.name }),
];
+ if (this.validateOnly) {
+ parameterValues.push(Object.assign(new ProcessParameter(), { name: '-v', value: true }));
+ }
this.scriptDataService.invoke(METADATA_IMPORT_SCRIPT_NAME, parameterValues, [this.fileObject]).pipe(
getFirstCompletedRemoteData(),
diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5
index f33a195cfe..426fcb12d2 100644
--- a/src/assets/i18n/en.json5
+++ b/src/assets/i18n/en.json5
@@ -538,6 +538,8 @@
"admin.metadata-import.page.error.addFile": "Select file first!",
+ "admin.metadata-import.page.validateOnly": "Validate Only",
+