Skip to content

Commit fb2c7ce

Browse files
108588: Created separate section for communities & collections browse sections
1 parent a695784 commit fb2c7ce

7 files changed

Lines changed: 112 additions & 5 deletions

File tree

src/app/collection-page/collection-page-routing.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { LinkMenuItemModel } from '../shared/menu/menu-item/models/link.model';
2222
import { ThemedCollectionPageComponent } from './themed-collection-page.component';
2323
import { MenuItemType } from '../shared/menu/menu-item-type.model';
2424
import { DSOEditMenuResolver } from '../shared/dso-page/dso-edit-menu.resolver';
25-
import { BrowseBySwitcherComponent } from '../browse-by/browse-by-switcher/browse-by-switcher.component';
25+
import { ComcolBrowseByComponent } from '../shared/comcol/sections/comcol-browse-by/comcol-browse-by.component';
2626
import { BrowseByGuard } from '../browse-by/browse-by-guard';
2727
import { BrowseByI18nBreadcrumbResolver } from '../browse-by/browse-by-i18n-breadcrumb.resolver';
2828
import { CollectionRecentlyAddedComponent } from './sections/recently-added/collection-recently-added.component';
@@ -78,7 +78,7 @@ import { CollectionRecentlyAddedComponent } from './sections/recently-added/coll
7878
{
7979
path: 'browse/:id',
8080
pathMatch: 'full',
81-
component: BrowseBySwitcherComponent,
81+
component: ComcolBrowseByComponent,
8282
canActivate: [BrowseByGuard],
8383
resolve: {
8484
breadcrumb: BrowseByI18nBreadcrumbResolver,

src/app/community-page/community-page-routing.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { DSOEditMenuResolver } from '../shared/dso-page/dso-edit-menu.resolver';
1818
import { SubComColSectionComponent } from './sections/sub-com-col-section/sub-com-col-section.component';
1919
import { BrowseByI18nBreadcrumbResolver } from '../browse-by/browse-by-i18n-breadcrumb.resolver';
2020
import { BrowseByGuard } from '../browse-by/browse-by-guard';
21-
import { BrowseBySwitcherComponent } from '../browse-by/browse-by-switcher/browse-by-switcher.component';
21+
import { ComcolBrowseByComponent } from '../shared/comcol/sections/comcol-browse-by/comcol-browse-by.component';
2222

2323
@NgModule({
2424
imports: [
@@ -61,7 +61,7 @@ import { BrowseBySwitcherComponent } from '../browse-by/browse-by-switcher/brows
6161
{
6262
path: 'browse/:id',
6363
pathMatch: 'full',
64-
component: BrowseBySwitcherComponent,
64+
component: ComcolBrowseByComponent,
6565
canActivate: [BrowseByGuard],
6666
resolve: {
6767
breadcrumb: BrowseByI18nBreadcrumbResolver,

src/app/shared/comcol/comcol.module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import { ComcolRoleComponent } from './comcol-forms/edit-comcol-page/comcol-role
1616
import { SharedModule } from '../shared.module';
1717
import { FormModule } from '../form/form.module';
1818
import { UploadModule } from '../upload/upload.module';
19+
import { ComcolBrowseByComponent } from './sections/comcol-browse-by/comcol-browse-by.component';
20+
import { BrowseByModule } from '../../browse-by/browse-by.module';
1921

2022
const COMPONENTS = [
2123
ComcolPageContentComponent,
@@ -29,7 +31,8 @@ const COMPONENTS = [
2931
ComcolPageBrowseByComponent,
3032
ThemedComcolPageBrowseByComponent,
3133
ComcolRoleComponent,
32-
ThemedComcolPageHandleComponent
34+
ThemedComcolPageHandleComponent,
35+
ComcolBrowseByComponent,
3336
];
3437

3538
@NgModule({
@@ -41,6 +44,7 @@ const COMPONENTS = [
4144
FormModule,
4245
SharedModule,
4346
UploadModule,
47+
BrowseByModule,
4448
],
4549
exports: [
4650
...COMPONENTS,
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<ds-browse-by-switcher [browseByType]="browseByType$ | async">
2+
</ds-browse-by-switcher>

src/app/shared/comcol/sections/comcol-browse-by/comcol-browse-by.component.scss

Whitespace-only changes.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// eslint-disable-next-line max-classes-per-file
2+
import { ComponentFixture, TestBed } from '@angular/core/testing';
3+
import { ComcolBrowseByComponent } from './comcol-browse-by.component';
4+
import { rendersBrowseBy } from '../../../../browse-by/browse-by-switcher/browse-by-decorator';
5+
import { BrowseByDataType } from '../../../../browse-by/browse-by-switcher/browse-by-data-type';
6+
import { Component } from '@angular/core';
7+
import { AbstractBrowseByTypeComponent } from '../../../../browse-by/abstract-browse-by-type.component';
8+
import { BrowseDefinition } from '../../../../core/shared/browse-definition.model';
9+
import { ActivatedRouteStub } from '../../../testing/active-router.stub';
10+
import { ThemeService } from '../../../theme-support/theme.service';
11+
import { getMockThemeService } from '../../../mocks/theme-service.mock';
12+
import { BrowseBySwitcherComponent } from '../../../../browse-by/browse-by-switcher/browse-by-switcher.component';
13+
import { DynamicComponentLoaderDirective } from '../../../abstract-component-loader/dynamic-component-loader.directive';
14+
import { ActivatedRoute } from '@angular/router';
15+
import { By } from '@angular/platform-browser';
16+
17+
@rendersBrowseBy('ComcolBrowseByComponent' as BrowseByDataType)
18+
@Component({
19+
// eslint-disable-next-line @angular-eslint/component-selector
20+
selector: '',
21+
template: '<span id="ComcolBrowseByComponent"></span>',
22+
})
23+
class BrowseByTestComponent extends AbstractBrowseByTypeComponent {
24+
}
25+
26+
class TestBrowseByPageBrowseDefinition extends BrowseDefinition {
27+
getRenderType(): BrowseByDataType {
28+
return 'ComcolBrowseByComponent' as BrowseByDataType;
29+
}
30+
}
31+
32+
describe('ComcolBrowseByComponent', () => {
33+
let component: ComcolBrowseByComponent;
34+
let fixture: ComponentFixture<ComcolBrowseByComponent>;
35+
36+
let activatedRoute: ActivatedRouteStub;
37+
let themeService: ThemeService;
38+
39+
beforeEach(async () => {
40+
activatedRoute = new ActivatedRouteStub();
41+
themeService = getMockThemeService();
42+
43+
await TestBed.configureTestingModule({
44+
declarations: [
45+
ComcolBrowseByComponent,
46+
BrowseBySwitcherComponent,
47+
DynamicComponentLoaderDirective,
48+
],
49+
providers: [
50+
BrowseByTestComponent,
51+
{ provide: ActivatedRoute, useValue: activatedRoute },
52+
{ provide: ThemeService, useValue: themeService },
53+
],
54+
}).compileComponents();
55+
56+
fixture = TestBed.createComponent(ComcolBrowseByComponent);
57+
component = fixture.componentInstance;
58+
});
59+
60+
it('should create the correct browse section based on the route browseDefinition', () => {
61+
activatedRoute.testData = {
62+
browseDefinition: new TestBrowseByPageBrowseDefinition(),
63+
};
64+
65+
fixture.detectChanges();
66+
67+
expect(component).toBeTruthy();
68+
expect(fixture.debugElement.query(By.css('#ComcolBrowseByComponent'))).not.toBeNull();
69+
});
70+
});
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { Component, OnInit } from '@angular/core';
2+
import { Observable } from 'rxjs';
3+
import { BrowseByDataType } from '../../../../browse-by/browse-by-switcher/browse-by-data-type';
4+
import { ActivatedRoute } from '@angular/router';
5+
import { map } from 'rxjs/operators';
6+
import { BrowseDefinition } from '../../../../core/shared/browse-definition.model';
7+
8+
@Component({
9+
selector: 'ds-comcol-browse-by',
10+
templateUrl: './comcol-browse-by.component.html',
11+
styleUrls: ['./comcol-browse-by.component.scss'],
12+
})
13+
export class ComcolBrowseByComponent implements OnInit {
14+
15+
browseByType$: Observable<BrowseByDataType>;
16+
17+
constructor(
18+
protected route: ActivatedRoute,
19+
) {
20+
}
21+
22+
/**
23+
* Fetch the correct browse-by component by using the relevant config from the route data
24+
*/
25+
ngOnInit(): void {
26+
this.browseByType$ = this.route.data.pipe(
27+
map((data: { browseDefinition: BrowseDefinition }) => data.browseDefinition.getRenderType()),
28+
);
29+
}
30+
31+
}

0 commit comments

Comments
 (0)