forked from DSpace/dspace-angular
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
migration2clarin7/notice-step-is-missing (#159)
* Added a new empty notice step. * Set up Notice Step body. * Created a test for the new step * Beautify code * Added integration tests for the Notice Step * Changed dump for test environment. --------- Co-authored-by: MilanMajchrák <milan.majchak@dataquest.sk>
- Loading branch information
1 parent
5781829
commit e85a2b9
Showing
8 changed files
with
220 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 8 additions & 0 deletions
8
src/app/submission/sections/clarin-notice/clarin-notice.component.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<div class="container-fluid"> | ||
<span> | ||
{{'submission.sections.clarin-notice.message.0' | translate}}{{collectionName | async}}{{'submission.sections.clarin-notice.message.1' | translate}} | ||
<a class="helpdesk-tolink" [href]="'mailto:'+(helpDesk$ | async)?.payload?.values[0]"> | ||
{{'submission.sections.clarin-notice.message.2' | translate}}. | ||
</a> | ||
</span> | ||
</div> |
Empty file.
120 changes: 120 additions & 0 deletions
120
src/app/submission/sections/clarin-notice/clarin-notice.component.spec.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
import { ComponentFixture, TestBed } from '@angular/core/testing'; | ||
import { SubmissionSectionClarinNoticeComponent } from './clarin-notice.component'; | ||
import { mockSubmissionCollectionId, mockSubmissionId } from '../../../shared/mocks/submission.mock'; | ||
import { Collection } from '../../../core/shared/collection.model'; | ||
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; | ||
import { License } from '../../../core/shared/license.model'; | ||
import { SectionDataObject } from '../models/section-data.model'; | ||
import { SectionsType } from '../sections-type'; | ||
import { SectionsServiceStub } from '../../../shared/testing/sections-service.stub'; | ||
import { BrowserModule } from '@angular/platform-browser'; | ||
import { CommonModule } from '@angular/common'; | ||
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; | ||
import { TranslateModule } from '@ngx-translate/core'; | ||
import { FormComponent } from '../../../shared/form/form.component'; | ||
import { CollectionDataService } from '../../../core/data/collection-data.service'; | ||
import { SectionsService } from '../sections.service'; | ||
import { ConfigurationDataService } from '../../../core/data/configuration-data.service'; | ||
import { ChangeDetectorRef, Component, NO_ERRORS_SCHEMA } from '@angular/core'; | ||
import { FormBuilderService } from '../../../shared/form/builder/form-builder.service'; | ||
import { SubmissionSectionLicenseComponent } from '../license/section-license.component'; | ||
import { of } from 'rxjs'; | ||
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; | ||
import { DSONameServiceMock } from '../../../shared/mocks/dso-name.service.mock'; | ||
|
||
const collectionId = mockSubmissionCollectionId; | ||
const licenseText = 'License text'; | ||
const helpDeskMail = 'test@mail.com'; | ||
const mockCollection = Object.assign(new Collection(), { | ||
name: 'Community 1-Collection 1', | ||
id: collectionId, | ||
metadata: [ | ||
{ | ||
key: 'dc.title', | ||
language: 'en_US', | ||
value: 'Community 1-Collection 1' | ||
}], | ||
license: createSuccessfulRemoteDataObject$(Object.assign(new License(), { text: licenseText })) | ||
}); | ||
|
||
const sectionObject: SectionDataObject = { | ||
config: 'https://dspace7.4science.it/or2018/api/config/submissionforms/clarin-notice', | ||
mandatory: true, | ||
data: { | ||
url: null, | ||
acceptanceDate: null, | ||
granted: false | ||
}, | ||
errorsToShow: [], | ||
serverValidationErrors: [], | ||
header: 'submit.progressbar.describe.clarin-notice', | ||
id: 'license', | ||
sectionType: SectionsType.clarinNotice | ||
}; | ||
describe('SubmissionSectionClarinNoticeComponent', () => { | ||
let component: SubmissionSectionClarinNoticeComponent; | ||
let fixture: ComponentFixture<SubmissionSectionClarinNoticeComponent>; | ||
|
||
const sectionsServiceStub: any = new SectionsServiceStub(); | ||
const submissionId = mockSubmissionId; | ||
|
||
const mockCollectionDataService = jasmine.createSpyObj('CollectionDataService', { | ||
findById: createSuccessfulRemoteDataObject$(mockCollection), | ||
findByHref: jasmine.createSpy('findByHref') | ||
}); | ||
|
||
const configurationServiceSpy = jasmine.createSpyObj('configurationService', { | ||
findByPropertyName: of(helpDeskMail), | ||
}); | ||
|
||
|
||
beforeEach(async () => { | ||
await TestBed.configureTestingModule({ | ||
imports: [ | ||
BrowserModule, | ||
CommonModule, | ||
FormsModule, | ||
ReactiveFormsModule, | ||
TranslateModule.forRoot() | ||
], | ||
declarations: [ | ||
FormComponent, | ||
SubmissionSectionClarinNoticeComponent, | ||
TestComponent | ||
], | ||
providers: [ | ||
{ provide: CollectionDataService, useValue: mockCollectionDataService }, | ||
{ provide: SectionsService, useValue: sectionsServiceStub }, | ||
{ provide: DSONameService, useClass: DSONameServiceMock }, | ||
{ provide: ConfigurationDataService, useValue: configurationServiceSpy }, | ||
{ provide: 'collectionIdProvider', useValue: collectionId }, | ||
{ provide: 'sectionDataProvider', useValue: Object.assign({}, sectionObject) }, | ||
{ provide: 'submissionIdProvider', useValue: submissionId }, | ||
ChangeDetectorRef, | ||
FormBuilderService, | ||
SubmissionSectionLicenseComponent | ||
], | ||
schemas: [NO_ERRORS_SCHEMA] | ||
}) | ||
.compileComponents(); | ||
}); | ||
|
||
beforeEach(() => { | ||
fixture = TestBed.createComponent(SubmissionSectionClarinNoticeComponent); | ||
component = fixture.componentInstance; | ||
fixture.detectChanges(); | ||
}); | ||
|
||
it('should create', () => { | ||
expect(component).toBeTruthy(); | ||
}); | ||
}); | ||
|
||
// declare a test component | ||
@Component({ | ||
selector: 'ds-test-cmp', | ||
template: `` | ||
}) | ||
class TestComponent { | ||
|
||
} |
79 changes: 79 additions & 0 deletions
79
src/app/submission/sections/clarin-notice/clarin-notice.component.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
import { Component, Inject } from '@angular/core'; | ||
import { renderSectionFor } from '../sections-decorator'; | ||
import { SectionsType } from '../sections-type'; | ||
import { SectionModelComponent } from '../models/section.model'; | ||
import { SectionsService } from '../sections.service'; | ||
import { BehaviorSubject, Observable, of, Subscription } from 'rxjs'; | ||
import { SectionDataObject } from '../models/section-data.model'; | ||
import { hasValue } from '../../../shared/empty.util'; | ||
import { RemoteData } from '../../../core/data/remote-data'; | ||
import { ConfigurationProperty } from '../../../core/shared/configuration-property.model'; | ||
import { HELP_DESK_PROPERTY } from '../../../item-page/tombstone/tombstone.component'; | ||
import { ConfigurationDataService } from '../../../core/data/configuration-data.service'; | ||
import { Collection } from '../../../core/shared/collection.model'; | ||
import { CollectionDataService } from '../../../core/data/collection-data.service'; | ||
import { getRemoteDataPayload } from '../../../core/shared/operators'; | ||
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; | ||
|
||
@Component({ | ||
selector: 'ds-clarin-notice', | ||
templateUrl: './clarin-notice.component.html', | ||
styleUrls: ['./clarin-notice.component.scss'] | ||
}) | ||
@renderSectionFor(SectionsType.clarinNotice) | ||
export class SubmissionSectionClarinNoticeComponent extends SectionModelComponent { | ||
|
||
constructor( | ||
protected sectionService: SectionsService, | ||
private configurationDataService: ConfigurationDataService, | ||
private collectionDataService: CollectionDataService, | ||
private dsoNameService: DSONameService, | ||
@Inject('collectionIdProvider') public injectedCollectionId: string, | ||
@Inject('sectionDataProvider') public injectedSectionData: SectionDataObject, | ||
@Inject('submissionIdProvider') public injectedSubmissionId: string) { | ||
super(injectedCollectionId, injectedSectionData, injectedSubmissionId); | ||
} | ||
|
||
/** | ||
* Array to track all subscriptions and unsubscribe them onDestroy | ||
* @type {Array} | ||
*/ | ||
protected subs: Subscription[] = []; | ||
|
||
/** | ||
* The mail for the help desk is loaded from the server. | ||
*/ | ||
helpDesk$: Observable<RemoteData<ConfigurationProperty>>; | ||
|
||
/** | ||
* The name of the current collection. | ||
*/ | ||
collectionName: BehaviorSubject<string> = new BehaviorSubject<string>(''); | ||
|
||
ngOnInit(): void { | ||
super.ngOnInit(); | ||
} | ||
|
||
protected getSectionStatus(): Observable<boolean> { | ||
return of(true); | ||
} | ||
|
||
/** | ||
* Unsubscribe from all subscriptions | ||
*/ | ||
onSectionDestroy() { | ||
this.subs | ||
.filter((subscription) => hasValue(subscription)) | ||
.forEach((subscription) => subscription.unsubscribe()); | ||
} | ||
|
||
protected onSectionInit(): void { | ||
this.helpDesk$ = this.configurationDataService.findByPropertyName(HELP_DESK_PROPERTY); | ||
|
||
this.collectionDataService.findById(this.collectionId) | ||
.pipe(getRemoteDataPayload()) | ||
.subscribe((collection: Collection) => { | ||
this.collectionName.next(this.dsoNameService.getName(collection)); | ||
}); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters