mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 21:43:04 +00:00
Fix export button enabled in bulk access management without selecting step 2
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
import { NO_ERRORS_SCHEMA } from '@angular/core';
|
||||
import {
|
||||
Component,
|
||||
NO_ERRORS_SCHEMA,
|
||||
} from '@angular/core';
|
||||
import {
|
||||
ComponentFixture,
|
||||
TestBed,
|
||||
@@ -62,10 +65,17 @@ describe('BulkAccessComponent', () => {
|
||||
'file': { },
|
||||
};
|
||||
|
||||
const mockSettings: any = jasmine.createSpyObj('AccessControlFormContainerComponent', {
|
||||
getValue: jasmine.createSpy('getValue'),
|
||||
reset: jasmine.createSpy('reset'),
|
||||
});
|
||||
@Component({
|
||||
selector: 'ds-bulk-access-settings',
|
||||
template: '',
|
||||
exportAs: 'dsBulkSettings',
|
||||
standalone: true,
|
||||
})
|
||||
class MockBulkAccessSettingsComponent {
|
||||
isFormValid = jasmine.createSpy('isFormValid').and.returnValue(false);
|
||||
getValue = jasmine.createSpy('getValue');
|
||||
reset = jasmine.createSpy('reset');
|
||||
}
|
||||
const selection: any[] = [{ indexableObject: { uuid: '1234' } }, { indexableObject: { uuid: '5678' } }];
|
||||
const selectableListState: SelectableListState = { id: 'test', selection };
|
||||
const expectedIdList = ['1234', '5678'];
|
||||
@@ -93,6 +103,9 @@ describe('BulkAccessComponent', () => {
|
||||
BulkAccessSettingsComponent,
|
||||
],
|
||||
},
|
||||
add: {
|
||||
imports: [MockBulkAccessSettingsComponent],
|
||||
},
|
||||
})
|
||||
.compileComponents();
|
||||
});
|
||||
@@ -109,13 +122,12 @@ describe('BulkAccessComponent', () => {
|
||||
fixture.destroy();
|
||||
});
|
||||
|
||||
describe('when there are no elements selected', () => {
|
||||
describe('when there are no elements selected and step two form is invalid', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
|
||||
(component as any).selectableListService.getSelectableList.and.returnValue(of(selectableListStateEmpty));
|
||||
fixture.detectChanges();
|
||||
component.settings = mockSettings;
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
@@ -138,7 +150,6 @@ describe('BulkAccessComponent', () => {
|
||||
|
||||
(component as any).selectableListService.getSelectableList.and.returnValue(of(selectableListState));
|
||||
fixture.detectChanges();
|
||||
component.settings = mockSettings;
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
@@ -149,15 +160,29 @@ describe('BulkAccessComponent', () => {
|
||||
expect(component.objectsSelected$.value).toEqual(expectedIdList);
|
||||
});
|
||||
|
||||
it('should enable the execute button when there are objects selected', () => {
|
||||
it('should not enable the execute button when there are objects selected and step two form is invalid', () => {
|
||||
component.objectsSelected$.next(['1234']);
|
||||
expect(component.canExport()).toBe(true);
|
||||
expect(component.canExport()).toBe(false);
|
||||
});
|
||||
|
||||
it('should call the settings reset method when reset is called', () => {
|
||||
component.reset();
|
||||
expect(component.settings.reset).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
describe('when there are elements selected and the step two form is valid', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
|
||||
(component as any).selectableListService.getSelectableList.and.returnValue(of(selectableListState));
|
||||
fixture.detectChanges();
|
||||
(component as any).settings.isFormValid.and.returnValue(true);
|
||||
});
|
||||
|
||||
it('should enable the execute button when there are objects selected and step two form is valid', () => {
|
||||
component.objectsSelected$.next(['1234']);
|
||||
expect(component.canExport()).toBe(true);
|
||||
});
|
||||
|
||||
it('should call the bulkAccessControlService executeScript method when submit is called', () => {
|
||||
(component.settings as any).getValue.and.returnValue(mockFormState);
|
||||
|
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
ChangeDetectionStrategy,
|
||||
Component,
|
||||
OnInit,
|
||||
ViewChild,
|
||||
@@ -31,6 +32,7 @@ import { BulkAccessSettingsComponent } from './settings/bulk-access-settings.com
|
||||
BtnDisabledDirective,
|
||||
],
|
||||
standalone: true,
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class BulkAccessComponent implements OnInit {
|
||||
|
||||
@@ -70,7 +72,7 @@ export class BulkAccessComponent implements OnInit {
|
||||
}
|
||||
|
||||
canExport(): boolean {
|
||||
return this.objectsSelected$.value?.length > 0;
|
||||
return this.objectsSelected$.value?.length > 0 && this.settings?.isFormValid();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -42,4 +42,8 @@ export class BulkAccessSettingsComponent {
|
||||
this.controlForm.reset();
|
||||
}
|
||||
|
||||
isFormValid() {
|
||||
return this.controlForm.isValid();
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -135,6 +135,10 @@ export class AccessControlArrayFormComponent implements OnInit {
|
||||
return item.id;
|
||||
}
|
||||
|
||||
isValid() {
|
||||
return this.ngForm.valid;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@@ -176,5 +176,9 @@ export class AccessControlFormContainerComponent<T extends DSpaceObject> impleme
|
||||
this.selectableListService.deselectAll(ITEM_ACCESS_CONTROL_SELECT_BITSTREAMS_LIST_ID);
|
||||
}
|
||||
|
||||
isValid() {
|
||||
return this.bitstreamAccessCmp.isValid() || this.itemAccessCmp.isValid();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user