mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-13 04:53:06 +00:00
[CST-4499] Version history - New version refactored (with tests)
This commit is contained in:
@@ -1,6 +1,23 @@
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { VersionedItemComponent } from './versioned-item.component';
|
||||
import { VersionHistoryDataService } from '../../../../core/data/version-history-data.service';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { VersionDataService } from '../../../../core/data/version-data.service';
|
||||
import { NotificationsService } from '../../../../shared/notifications/notifications.service';
|
||||
import { ItemVersionsSharedService } from '../../../../shared/item/item-versions/item-versions-shared.service';
|
||||
import { Item } from '../../../../core/shared/item.model';
|
||||
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils';
|
||||
import { buildPaginatedList } from '../../../../core/data/paginated-list.model';
|
||||
import { PageInfo } from '../../../../core/shared/page-info.model';
|
||||
import { MetadataMap } from '../../../../core/shared/metadata.models';
|
||||
import { createRelationshipsObservable } from '../shared/item.component.spec';
|
||||
|
||||
const mockItem: Item = Object.assign(new Item(), {
|
||||
bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])),
|
||||
metadata: new MetadataMap(),
|
||||
relationships: createRelationshipsObservable()
|
||||
});
|
||||
|
||||
describe('VersionedItemComponent', () => {
|
||||
let component: VersionedItemComponent;
|
||||
@@ -8,7 +25,14 @@ describe('VersionedItemComponent', () => {
|
||||
|
||||
beforeEach(async () => {
|
||||
await TestBed.configureTestingModule({
|
||||
declarations: [ VersionedItemComponent ]
|
||||
declarations: [ VersionedItemComponent ],
|
||||
providers: [
|
||||
{ provide: VersionHistoryDataService, useValue: {} },
|
||||
{ provide: TranslateService, useValue: {} },
|
||||
{ provide: VersionDataService, useValue: {} },
|
||||
{ provide: NotificationsService, useValue: {} },
|
||||
{ provide: ItemVersionsSharedService, useValue: {} },
|
||||
]
|
||||
})
|
||||
.compileComponents();
|
||||
});
|
||||
@@ -16,6 +40,7 @@ describe('VersionedItemComponent', () => {
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(VersionedItemComponent);
|
||||
component = fixture.componentInstance;
|
||||
component.object = mockItem;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
|
@@ -51,8 +51,7 @@ describe('VersionPageComponent', () => {
|
||||
{ provide: VersionDataService, useValue: {} },
|
||||
{ provide: AuthService, useValue: authService },
|
||||
],
|
||||
})
|
||||
.compileComponents();
|
||||
}).compileComponents();
|
||||
}));
|
||||
|
||||
|
||||
|
@@ -1,12 +1,27 @@
|
||||
import { TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ItemVersionsSharedService } from './item-versions-shared.service';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { VersionDataService } from '../../../core/data/version-data.service';
|
||||
import { AuthService } from '../../../core/auth/auth.service';
|
||||
import { NotificationsService } from '../../notifications/notifications.service';
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { VersionHistoryDataService } from '../../../core/data/version-history-data.service';
|
||||
|
||||
describe('ItemVersionsSharedService', () => {
|
||||
let service: ItemVersionsSharedService;
|
||||
|
||||
beforeEach(() => {
|
||||
TestBed.configureTestingModule({});
|
||||
TestBed.configureTestingModule({
|
||||
providers: [
|
||||
{ provide: ActivatedRoute, useValue: {} },
|
||||
{ provide: VersionDataService, useValue: {} },
|
||||
{ provide: VersionHistoryDataService, useValue: {} },
|
||||
{ provide: AuthService, useValue: {} },
|
||||
{ provide: NotificationsService, useValue: {} },
|
||||
{ provide: TranslateService, useValue: {} },
|
||||
],
|
||||
});
|
||||
service = TestBed.inject(ItemVersionsSharedService);
|
||||
});
|
||||
|
||||
|
@@ -47,7 +47,7 @@
|
||||
<div class="btn-group edit-field">
|
||||
<!--EDIT / SAVE-->
|
||||
<ng-container *ngIf="canEditVersion$(version) | async">
|
||||
<button class="btn btn-outline-primary btn-sm"
|
||||
<button class="btn btn-outline-primary btn-sm version-row-element-edit"
|
||||
*ngIf="!isThisBeingEdited(version)"
|
||||
[disabled]="isAnyBeingEdited()"
|
||||
(click)="enableVersionEditing(version)"
|
||||
@@ -63,7 +63,7 @@
|
||||
</ng-container>
|
||||
<!--CREATE-->
|
||||
<ng-container *ngIf="canCreateVersion$ | async">
|
||||
<button class="btn btn-outline-primary btn-sm"
|
||||
<button class="btn btn-outline-primary btn-sm version-row-element-create"
|
||||
[disabled]="isAnyBeingEdited() || (hasDraftVersion$ | async)"
|
||||
(click)="createNewVersion(version)"
|
||||
title="{{createVersionTitle$ | async | translate }}">
|
||||
@@ -72,7 +72,7 @@
|
||||
</ng-container>
|
||||
<!--DELETE-->
|
||||
<ng-container *ngIf="canDeleteVersion$(version) | async">
|
||||
<button class="btn btn-sm"
|
||||
<button class="btn btn-sm version-row-element-delete"
|
||||
[ngClass]="isAnyBeingEdited() ? 'btn-outline-primary' : 'btn-outline-danger'"
|
||||
[disabled]="isAnyBeingEdited()"
|
||||
(click)="deleteVersion(version, version.id==itemVersion.id)"
|
||||
|
@@ -23,7 +23,7 @@ import { NotificationsServiceStub } from '../../testing/notifications-service.st
|
||||
import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service';
|
||||
import { FeatureID } from '../../../core/data/feature-authorization/feature-id';
|
||||
|
||||
fdescribe('ItemVersionsComponent', () => {
|
||||
describe('ItemVersionsComponent', () => {
|
||||
let component: ItemVersionsComponent;
|
||||
let fixture: ComponentFixture<ItemVersionsComponent>;
|
||||
let authenticationService: AuthService;
|
||||
@@ -124,7 +124,7 @@ fdescribe('ItemVersionsComponent', () => {
|
||||
fixture = TestBed.createComponent(ItemVersionsComponent);
|
||||
component = fixture.componentInstance;
|
||||
component.item = item1;
|
||||
// component.displayActions = true;
|
||||
component.displayActions = true;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
@@ -174,21 +174,22 @@ fdescribe('ItemVersionsComponent', () => {
|
||||
const canDelete = (featureID: FeatureID, url: string ) => of(featureID === FeatureID.CanDeleteVersion);
|
||||
authorizationServiceSpy.isAuthorized.and.callFake(canDelete);
|
||||
}));
|
||||
beforeEach(() => {
|
||||
component.displayActions = true;
|
||||
});
|
||||
it('should not disable the delete button', () => {
|
||||
const rows = fixture.debugElement.queryAll(By.css('tbody tr'));
|
||||
expect(rows.length).toBe(versions.length);
|
||||
console.log(rows);
|
||||
const btn = fixture.debugElement.query(By.css(`.version-row-element-delete`));
|
||||
|
||||
console.log(btn);
|
||||
const deleteButtons = fixture.debugElement.queryAll(By.css(`.version-row-element-delete`));
|
||||
deleteButtons.forEach((btn) => {
|
||||
expect(btn.nativeElement.disabled).toBe(false);
|
||||
});
|
||||
});
|
||||
it('should disable other buttons', () => {
|
||||
// expect
|
||||
const createButtons = fixture.debugElement.queryAll(By.css(`.version-row-element-create`));
|
||||
createButtons.forEach((btn) => {
|
||||
expect(btn.nativeElement.disabled).toBe(true);
|
||||
});
|
||||
const editButtons = fixture.debugElement.queryAll(By.css(`.version-row-element-create`));
|
||||
editButtons.forEach((btn) => {
|
||||
expect(btn.nativeElement.disabled).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
Reference in New Issue
Block a user