Skip to content

Commit 355baf7

Browse files
Merge pull request #1 from im-shubham-vish/fix-1602
Fix for #1602 Insufficient collection information when submitting an article.
2 parents dcea3ba + c62c0af commit 355baf7

13 files changed

+508
-41
lines changed

src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.spec.ts

Lines changed: 58 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
import {
2+
catchError,
3+
Observable,
4+
of,
5+
switchMap,
6+
} from 'rxjs';
7+
import { RemoteData } from 'src/app/core/data/remote-data';
8+
import { Community } from 'src/app/core/shared/community.model';
9+
110
import { Collection } from '../../../../../core/shared/collection.model';
211
import { Item } from '../../../../../core/shared/item.model';
312
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
@@ -37,6 +46,52 @@ const parent = Object.assign(new Collection(), {
3746
},
3847
});
3948

40-
describe('JournalIssueSidebarSearchListElementComponent',
41-
createSidebarSearchListElementTests(JournalIssueSidebarSearchListElementComponent, object, parent, 'parent title', 'title', '5 - 7'),
42-
);
49+
function getExpectedHierarchicalTitle(parentObj: Collection, obj: ItemSearchResult): Observable<string> {
50+
let titles: string[] = [];
51+
if (obj.indexableObject.metadata['dc.title']) {
52+
titles = [obj.indexableObject.metadata['dc.title'][0].value];
53+
}
54+
let currentParent: Collection = parentObj;
55+
56+
const fetchParentTitles = (currParent: Collection | Community): Observable<string[]> => {
57+
if (!currParent) {
58+
return of([]);
59+
}
60+
61+
if (currParent.parentCommunity) {
62+
return currParent.parentCommunity.pipe(
63+
switchMap((remoteData: RemoteData<Community>) => {
64+
if (remoteData.hasSucceeded && remoteData.payload) {
65+
const parentTitle = remoteData.payload.name;
66+
titles.unshift(parentTitle);
67+
return fetchParentTitles(remoteData.payload);
68+
}
69+
return of([]);
70+
}),
71+
catchError(() => of([])),
72+
);
73+
} else {
74+
return of([]);
75+
}
76+
};
77+
78+
return fetchParentTitles(currentParent).pipe(
79+
switchMap(() => titles.join(' > ')),
80+
);
81+
}
82+
83+
const expectedHierarchicalTitle = getExpectedHierarchicalTitle(parent, object);
84+
if (expectedHierarchicalTitle) {
85+
expectedHierarchicalTitle.subscribe((hierarchicalTitle: string) => {
86+
describe('JournalIssueSidebarSearchListElementComponent', () => {
87+
createSidebarSearchListElementTests(
88+
JournalIssueSidebarSearchListElementComponent,
89+
object,
90+
parent,
91+
hierarchicalTitle,
92+
'title',
93+
'1234, 5678',
94+
);
95+
});
96+
});
97+
}

src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.spec.ts

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
import {
2+
catchError,
3+
Observable,
4+
of,
5+
switchMap,
6+
} from 'rxjs';
7+
import { RemoteData } from 'src/app/core/data/remote-data';
8+
import { Community } from 'src/app/core/shared/community.model';
9+
110
import { Collection } from '../../../../../core/shared/collection.model';
211
import { Item } from '../../../../../core/shared/item.model';
312
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
@@ -40,6 +49,45 @@ const parent = Object.assign(new Collection(), {
4049
},
4150
});
4251

43-
describe('JournalVolumeSidebarSearchListElementComponent',
44-
createSidebarSearchListElementTests(JournalVolumeSidebarSearchListElementComponent, object, parent, 'parent title', 'title', 'journal title (1) (2)'),
45-
);
52+
function getExpectedHierarchicalTitle(parentObj: Collection, obj: ItemSearchResult): Observable<string> {
53+
let titles: string[] = [];
54+
if (obj.indexableObject.metadata['dc.title']) {
55+
titles = [obj.indexableObject.metadata['dc.title'][0].value];
56+
}
57+
let currentParent: Collection = parentObj;
58+
59+
const fetchParentTitles = (currParent: Collection | Community): Observable<string[]> => {
60+
if (!currParent) {
61+
return of([]);
62+
}
63+
64+
if (currParent.parentCommunity) {
65+
return currParent.parentCommunity.pipe(
66+
switchMap((remoteData: RemoteData<Community>) => {
67+
if (remoteData.hasSucceeded && remoteData.payload) {
68+
const parentTitle = remoteData.payload.name;
69+
titles.unshift(parentTitle);
70+
return fetchParentTitles(remoteData.payload);
71+
}
72+
return of([]);
73+
}),
74+
catchError(() => of([])),
75+
);
76+
} else {
77+
return of([]);
78+
}
79+
};
80+
81+
return fetchParentTitles(currentParent).pipe(
82+
switchMap(() => titles.join(' > ')),
83+
);
84+
}
85+
86+
const expectedHierarchicalTitle = getExpectedHierarchicalTitle(parent, object);
87+
if (expectedHierarchicalTitle) {
88+
expectedHierarchicalTitle.subscribe((hierarchicalTitle: string) => {
89+
describe('JournalVolumeSidebarSearchListElementComponent', () => {
90+
createSidebarSearchListElementTests(JournalVolumeSidebarSearchListElementComponent, object, parent, hierarchicalTitle, 'title', 'journal title (1) (2)');
91+
});
92+
});
93+
}

src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.spec.ts

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
import {
2+
catchError,
3+
map,
4+
Observable,
5+
of,
6+
switchMap,
7+
} from 'rxjs';
8+
import { RemoteData } from 'src/app/core/data/remote-data';
9+
import { Community } from 'src/app/core/shared/community.model';
10+
111
import { Collection } from '../../../../../core/shared/collection.model';
212
import { Item } from '../../../../../core/shared/item.model';
313
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
@@ -35,6 +45,48 @@ const parent = Object.assign(new Collection(), {
3545
},
3646
});
3747

38-
describe('JournalSidebarSearchListElementComponent',
39-
createSidebarSearchListElementTests(JournalSidebarSearchListElementComponent, object, parent, 'parent title', 'title', '1234, 5678'),
40-
);
48+
function getExpectedHierarchicalTitle(parentObj: Collection, obj: ItemSearchResult): Observable<string> {
49+
let titles: string[] = [];
50+
if (obj.indexableObject.metadata['dc.title']) {
51+
titles = [obj.indexableObject.metadata['dc.title'][0].value];
52+
}
53+
let currentParent: Collection = parentObj;
54+
55+
const fetchParentTitles = (currParent: Collection | Community): Observable<string[]> => {
56+
if (!currParent) {
57+
return of([]);
58+
}
59+
60+
if (currParent.parentCommunity) {
61+
return currParent.parentCommunity.pipe(
62+
switchMap((remoteData: RemoteData<Community>) => {
63+
if (remoteData.hasSucceeded && remoteData.payload) {
64+
const parentTitle = remoteData.payload.name;
65+
titles.unshift(parentTitle);
66+
if (remoteData.payload) {
67+
return fetchParentTitles(remoteData.payload);
68+
}
69+
}
70+
return of([]);
71+
}),
72+
catchError(() => of([])),
73+
map(() => titles),
74+
);
75+
}
76+
};
77+
78+
if (fetchParentTitles(currentParent)) {
79+
return fetchParentTitles(currentParent).pipe(
80+
map(() => titles.join(' > ')),
81+
);
82+
}
83+
}
84+
85+
const expectedHierarchicalTitle = getExpectedHierarchicalTitle(parent, object);
86+
if (expectedHierarchicalTitle) {
87+
expectedHierarchicalTitle.subscribe((hierarchicalTitle: string) => {
88+
describe('JournalSidebarSearchListElementComponent', () => {
89+
createSidebarSearchListElementTests(JournalSidebarSearchListElementComponent, object, parent, hierarchicalTitle, 'title', '1234, 5678');
90+
});
91+
});
92+
}

src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.spec.ts

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
import {
2+
catchError,
3+
Observable,
4+
of,
5+
switchMap,
6+
} from 'rxjs';
7+
import { RemoteData } from 'src/app/core/data/remote-data';
8+
import { Community } from 'src/app/core/shared/community.model';
9+
110
import { Collection } from '../../../../../core/shared/collection.model';
211
import { Item } from '../../../../../core/shared/item.model';
312
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
@@ -37,6 +46,45 @@ const parent = Object.assign(new Collection(), {
3746
},
3847
});
3948

40-
describe('OrgUnitSidebarSearchListElementComponent',
41-
createSidebarSearchListElementTests(OrgUnitSidebarSearchListElementComponent, object, parent, 'parent title', 'title', 'description'),
42-
);
49+
function getExpectedHierarchicalTitle(parentObj: Collection, obj: ItemSearchResult): Observable<string> {
50+
let titles: string[] = [];
51+
if (obj.indexableObject.metadata['dc.title']) {
52+
titles = [obj.indexableObject.metadata['dc.title'][0].value];
53+
}
54+
let currentParent: Collection = parentObj;
55+
56+
const fetchParentTitles = (currParent: Collection | Community): Observable<string[]> => {
57+
if (!currParent) {
58+
return of([]);
59+
}
60+
61+
if (currParent.parentCommunity) {
62+
return currParent.parentCommunity.pipe(
63+
switchMap((remoteData: RemoteData<Community>) => {
64+
if (remoteData.hasSucceeded && remoteData.payload) {
65+
const parentTitle = remoteData.payload.name;
66+
titles.unshift(parentTitle);
67+
return fetchParentTitles(remoteData.payload);
68+
}
69+
return of([]);
70+
}),
71+
catchError(() => of([])),
72+
);
73+
} else {
74+
return of([]);
75+
}
76+
};
77+
78+
return fetchParentTitles(currentParent).pipe(
79+
switchMap(() => titles.join(' > ')),
80+
);
81+
}
82+
83+
const expectedHierarchicalTitle = getExpectedHierarchicalTitle(parent, object);
84+
if (expectedHierarchicalTitle) {
85+
expectedHierarchicalTitle.subscribe((hierarchicalTitle: string) => {
86+
describe('OrgUnitSidebarSearchListElementComponent', () => {
87+
createSidebarSearchListElementTests(OrgUnitSidebarSearchListElementComponent, object, parent, hierarchicalTitle, 'title', 'description');
88+
});
89+
});
90+
}

src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.spec.ts

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
import {
2+
catchError,
3+
Observable,
4+
of,
5+
switchMap,
6+
} from 'rxjs';
7+
import { RemoteData } from 'src/app/core/data/remote-data';
8+
import { Community } from 'src/app/core/shared/community.model';
9+
110
import { Collection } from '../../../../../core/shared/collection.model';
211
import { Item } from '../../../../../core/shared/item.model';
312
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
@@ -42,7 +51,45 @@ const parent = Object.assign(new Collection(), {
4251
},
4352
});
4453

45-
describe('PersonSidebarSearchListElementComponent',
46-
createSidebarSearchListElementTests(PersonSidebarSearchListElementComponent, object, parent, 'parent title', 'family name, given name', 'job title', [
47-
]),
48-
);
54+
function getExpectedHierarchicalTitle(parentObj: Collection, obj: ItemSearchResult): Observable<string> {
55+
let titles: string[] = [];
56+
if (obj.indexableObject.metadata['dc.title']) {
57+
titles = [obj.indexableObject.metadata['dc.title'][0].value];
58+
}
59+
let currentParent: Collection = parentObj;
60+
61+
const fetchParentTitles = (currParent: Collection | Community): Observable<string[]> => {
62+
if (!currParent) {
63+
return of([]);
64+
}
65+
66+
if (currParent.parentCommunity) {
67+
return currParent.parentCommunity.pipe(
68+
switchMap((remoteData: RemoteData<Community>) => {
69+
if (remoteData.hasSucceeded && remoteData.payload) {
70+
const parentTitle = remoteData.payload.name;
71+
titles.unshift(parentTitle);
72+
return fetchParentTitles(remoteData.payload);
73+
}
74+
return of([]);
75+
}),
76+
catchError(() => of([])),
77+
);
78+
} else {
79+
return of([]);
80+
}
81+
};
82+
83+
return fetchParentTitles(currentParent).pipe(
84+
switchMap(() => titles.join(' > ')),
85+
);
86+
}
87+
88+
const expectedHierarchicalTitle = getExpectedHierarchicalTitle(parent, object);
89+
if (expectedHierarchicalTitle) {
90+
expectedHierarchicalTitle.subscribe((hierarchicalTitle: string) => {
91+
describe('PersonSidebarSearchListElementComponent', () => {
92+
createSidebarSearchListElementTests(PersonSidebarSearchListElementComponent, object, parent, hierarchicalTitle, 'family name,given name', 'job title', []);
93+
});
94+
});
95+
}

src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.spec.ts

Lines changed: 51 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
import {
2+
catchError,
3+
Observable,
4+
of,
5+
switchMap,
6+
} from 'rxjs';
7+
import { RemoteData } from 'src/app/core/data/remote-data';
8+
import { Community } from 'src/app/core/shared/community.model';
9+
110
import { Collection } from '../../../../../core/shared/collection.model';
211
import { Item } from '../../../../../core/shared/item.model';
312
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
@@ -27,6 +36,45 @@ const parent = Object.assign(new Collection(), {
2736
},
2837
});
2938

30-
describe('ProjectSidebarSearchListElementComponent',
31-
createSidebarSearchListElementTests(ProjectSidebarSearchListElementComponent, object, parent, 'parent title', 'title', undefined),
32-
);
39+
function getExpectedHierarchicalTitle(parentObj: Collection, obj: ItemSearchResult): Observable<string> {
40+
let titles: string[] = [];
41+
if (obj.indexableObject.metadata['dc.title']) {
42+
titles = [obj.indexableObject.metadata['dc.title'][0].value];
43+
}
44+
let currentParent: Collection = parentObj;
45+
46+
const fetchParentTitles = (currParent: Collection | Community): Observable<string[]> => {
47+
if (!currParent) {
48+
return of([]);
49+
}
50+
51+
if (currParent.parentCommunity) {
52+
return currParent.parentCommunity.pipe(
53+
switchMap((remoteData: RemoteData<Community>) => {
54+
if (remoteData.hasSucceeded && remoteData.payload) {
55+
const parentTitle = remoteData.payload.name;
56+
titles.unshift(parentTitle);
57+
return fetchParentTitles(remoteData.payload);
58+
}
59+
return of([]);
60+
}),
61+
catchError(() => of([])),
62+
);
63+
} else {
64+
return of([]);
65+
}
66+
};
67+
68+
return fetchParentTitles(currentParent).pipe(
69+
switchMap(() => titles.join(' > ')),
70+
);
71+
}
72+
73+
const expectedHierarchicalTitle = getExpectedHierarchicalTitle(parent, object);
74+
if (expectedHierarchicalTitle) {
75+
expectedHierarchicalTitle.subscribe((hierarchicalTitle: string) => {
76+
describe('ProjectSidebarSearchListElementComponent', () => {
77+
createSidebarSearchListElementTests(ProjectSidebarSearchListElementComponent, object, parent, hierarchicalTitle, 'title', undefined);
78+
});
79+
});
80+
}

0 commit comments

Comments
 (0)