From 56d6965233eda245de4ce76920d95a9c00c5c51e Mon Sep 17 00:00:00 2001
From: Antoine Snyers <antoine@atmire.com>
Date: Fri, 15 Nov 2019 12:00:55 +0100
Subject: [PATCH] Update the search-settings component specs

---
 .../search-settings.component.spec.ts         | 138 ++++++++++--------
 1 file changed, 75 insertions(+), 63 deletions(-)

diff --git a/src/app/+search-page/search-settings/search-settings.component.spec.ts b/src/app/+search-page/search-settings/search-settings.component.spec.ts
index 729c228f44..e0fbc84deb 100644
--- a/src/app/+search-page/search-settings/search-settings.component.spec.ts
+++ b/src/app/+search-page/search-settings/search-settings.component.spec.ts
@@ -12,79 +12,87 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
 import { EnumKeysPipe } from '../../shared/utils/enum-keys-pipe';
 import { By } from '@angular/platform-browser';
 import { SearchFilterService } from '../search-filters/search-filter/search-filter.service';
-import { hot } from 'jasmine-marbles';
 import { VarDirective } from '../../shared/utils/var.directive';
-import { first } from 'rxjs/operators';
+import { take } from 'rxjs/operators';
 import { SEARCH_CONFIG_SERVICE } from '../../+my-dspace-page/my-dspace-page.component';
 
 describe('SearchSettingsComponent', () => {
 
-  let comp: SearchSettingsComponent;
-  let fixture: ComponentFixture<SearchSettingsComponent>;
-  let searchServiceObject: SearchService;
-
-  const pagination: PaginationComponentOptions = new PaginationComponentOptions();
-  pagination.id = 'search-results-pagination';
-  pagination.currentPage = 1;
-  pagination.pageSize = 10;
-  const sort: SortOptions = new SortOptions('score', SortDirection.DESC);
-  const mockResults = ['test', 'data'];
-  const searchServiceStub = {
-    searchOptions: { pagination: pagination, sort: sort },
-    search: () => mockResults
-  };
-
-  const queryParam = 'test query';
-  const scopeParam = '7669c72a-3f2a-451f-a3b9-9210e7a4c02f';
-  const paginatedSearchOptions = {
-    query: queryParam,
-    scope: scopeParam,
-    pagination,
-    sort
-  };
-
-  const activatedRouteStub = {
-    queryParams: observableOf({
-      query: queryParam,
-      scope: scopeParam
-    })
-  };
+  let comp:SearchSettingsComponent;
+  let fixture:ComponentFixture<SearchSettingsComponent>;
+  let searchServiceObject:SearchService;
+
+  let pagination:PaginationComponentOptions;
+  let sort:SortOptions;
+  let mockResults;
+  let searchServiceStub;
+
+  let queryParam;
+  let scopeParam;
+  let paginatedSearchOptions;
 
-  const sidebarService = {
-    isCollapsed: observableOf(true),
-    collapse: () => this.isCollapsed = observableOf(true),
-    expand: () => this.isCollapsed = observableOf(false)
-  };
+  let activatedRouteStub;
+
+  let sidebarService;
 
   beforeEach(async(() => {
+    pagination = new PaginationComponentOptions();
+    pagination.id = 'search-results-pagination';
+    pagination.currentPage = 1;
+    pagination.pageSize = 10;
+    sort = new SortOptions('score', SortDirection.DESC);
+    mockResults = ['test', 'data'];
+    searchServiceStub = {
+      searchOptions: {pagination: pagination, sort: sort},
+      search: () => mockResults,
+    };
+
+    queryParam = 'test query';
+    scopeParam = '7669c72a-3f2a-451f-a3b9-9210e7a4c02f';
+    paginatedSearchOptions = {
+      query: queryParam,
+      scope: scopeParam,
+      pagination,
+      sort,
+    };
+
+    activatedRouteStub = {
+      queryParams: observableOf({
+        query: queryParam,
+        scope: scopeParam,
+      }),
+    };
+
+    sidebarService = {
+      isCollapsed: observableOf(true),
+      collapse: () => this.isCollapsed = observableOf(true),
+      expand: () => this.isCollapsed = observableOf(false),
+    };
+
     TestBed.configureTestingModule({
       imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([])],
       declarations: [SearchSettingsComponent, EnumKeysPipe, VarDirective],
       providers: [
-        { provide: SearchService, useValue: searchServiceStub },
+        {provide: SearchService, useValue: searchServiceStub},
 
-        { provide: ActivatedRoute, useValue: activatedRouteStub },
+        {provide: ActivatedRoute, useValue: activatedRouteStub},
         {
           provide: SidebarService,
-          useValue: sidebarService
+          useValue: sidebarService,
         },
         {
           provide: SearchFilterService,
-          useValue: {}
+          useValue: {},
         },
         {
           provide: SEARCH_CONFIG_SERVICE,
           useValue: {
-            paginatedSearchOptions: hot('a', {
-              a: paginatedSearchOptions
-            }),
-            getCurrentScope: hot('a', {
-              a: 'test-id'
-            }),
-          }
+            paginatedSearchOptions: observableOf(paginatedSearchOptions),
+            getCurrentScope: observableOf('test-id'),
+          },
         },
       ],
-      schemas: [NO_ERRORS_SCHEMA]
+      schemas: [NO_ERRORS_SCHEMA],
     }).compileComponents();
   }));
 
@@ -101,42 +109,46 @@ describe('SearchSettingsComponent', () => {
 
   });
 
-  it('it should show the order settings with the respective selectable options', () => {
-    (comp as any).searchOptions$.pipe(first()).subscribe((options) => {
+  it('it should show the order settings with the respective selectable options', (done) => {
+    (comp as any).searchOptions$.pipe(take(1)).subscribe((options) => {
       fixture.detectChanges();
       const orderSetting = fixture.debugElement.query(By.css('div.result-order-settings'));
       expect(orderSetting).toBeDefined();
-      const childElements = orderSetting.query(By.css('.form-control')).children;
+      const childElements = orderSetting.queryAll(By.css('option'));
       expect(childElements.length).toEqual(comp.searchOptionPossibilities.length);
+      done();
     });
   });
 
-  it('it should show the size settings with the respective selectable options', () => {
-    (comp as any).searchOptions$.pipe(first()).subscribe((options) => {
+  it('it should show the size settings with the respective selectable options', (done) => {
+    (comp as any).searchOptions$.pipe(take(1)).subscribe((options) => {
         fixture.detectChanges();
         const pageSizeSetting = fixture.debugElement.query(By.css('div.page-size-settings'));
         expect(pageSizeSetting).toBeDefined();
-        const childElements = pageSizeSetting.query(By.css('.form-control')).children;
+        const childElements = pageSizeSetting.queryAll(By.css('option'));
         expect(childElements.length).toEqual(options.pagination.pageSizeOptions.length);
-      }
-    )
+        done();
+      },
+    );
   });
 
-  it('should have the proper order value selected by default', () => {
-    (comp as any).searchOptions$.pipe(first()).subscribe((options) => {
+  it('should have the proper order value selected by default', (done) => {
+    (comp as any).searchOptions$.pipe(take(1)).subscribe((options) => {
       fixture.detectChanges();
       const orderSetting = fixture.debugElement.query(By.css('div.result-order-settings'));
-      const childElementToBeSelected = orderSetting.query(By.css('.form-control option[value="0"][selected="selected"]'));
+      const childElementToBeSelected = orderSetting.query(By.css('option[value="0"][selected="selected"]'));
       expect(childElementToBeSelected).toBeDefined();
+      done();
     });
   });
 
-  it('should have the proper rpp value selected by default', () => {
-    (comp as any).searchOptions$.pipe(first()).subscribe((options) => {
+  it('should have the proper rpp value selected by default', (done) => {
+    (comp as any).searchOptions$.pipe(take(1)).subscribe((options) => {
       fixture.detectChanges();
       const pageSizeSetting = fixture.debugElement.query(By.css('div.page-size-settings'));
-      const childElementToBeSelected = pageSizeSetting.query(By.css('.form-control option[value="10"][selected="selected"]'));
+      const childElementToBeSelected = pageSizeSetting.query(By.css('option[value="10"][selected="selected"]'));
       expect(childElementToBeSelected).toBeDefined();
+      done();
     });
   });
 
-- 
GitLab