Skip to content
Snippets Groups Projects
Commit 0febfc68 authored by Jérémy Destin's avatar Jérémy Destin Committed by Guillaume Cornut
Browse files

test: Add tests on documents search. Minor fixes. GNP-5430.

parent df369d64
No related branches found
No related tags found
1 merge request!5Implement result page
......@@ -40,4 +40,38 @@ describe('GnpisService', () => {
req.flush(expectedSuggestions);
expect(req.request.body).toBe(criteria);
});
it('should search documents with criteria', () => {
const expectedDocuments = [{
'@type': ['doc'],
'@id': 'urn',
'schema:identifier': 'schema',
'schema:name': 'doc_name',
'schema:url': 'http://dco/url',
'schema:description': 'description',
'schema:includedInDataCatalog': 'catalog'
}, {
'@type': ['doc'],
'@id': 'urn',
'schema:identifier': 'schema',
'schema:name': 'doc_name',
'schema:url': 'http://dco/url',
'schema:description': 'description',
'schema:includedInDataCatalog': 'catalog'
}];
const criteria = { crops: ['d'] };
service.search(criteria).subscribe(documents => {
expect(documents.length).toBe(2);
expect(documents).toBe(expectedDocuments);
});
const req = httpMock.expectOne({
url: `${GnpisService.BASE_URL}/search`,
method: 'POST'
});
req.flush(expectedDocuments);
expect(req.request.body).toBe(criteria);
});
});
......@@ -4,6 +4,7 @@ import { HttpClient } from '@angular/common/http';
import { DataDiscoveryCriteria } from './model/dataDiscoveryCriteria';
import { BrapiResults } from './model/brapi';
import { DataDiscoveryDocument } from './model/dataDiscoveryDocument';
import { map } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
......@@ -40,11 +41,13 @@ export class GnpisService {
* @return an observable of BrAPI results list of documents
*/
search(
criteria: DataDiscoveryCriteria = null
): Observable<BrapiResults<DataDiscoveryDocument>> {
criteria: DataDiscoveryCriteria
): Observable<DataDiscoveryDocument[]> {
return this.http.post<BrapiResults<DataDiscoveryDocument>>(
`${GnpisService.BASE_URL}/search`, criteria,
);
).pipe(map((brapiResult: BrapiResults<DataDiscoveryDocument>) => {
return brapiResult.result.data;
}));
}
}
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { DocumentComponent } from './document.component';
import { NO_ERRORS_SCHEMA } from '@angular/core';
describe('DocumentComponent', () => {
let component: DocumentComponent;
let fixture: ComponentFixture<DocumentComponent>;
let component: DocumentComponent;
let fixture: ComponentFixture<DocumentComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ DocumentComponent ]
})
.compileComponents();
}));
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [DocumentComponent],
schemas: [NO_ERRORS_SCHEMA]
});
beforeEach(() => {
fixture = TestBed.createComponent(DocumentComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
}));
it('should create', () => {
expect(component).toBeTruthy();
});
beforeEach(() => {
fixture = TestBed.createComponent(DocumentComponent);
component = fixture.componentInstance;
component.document = {
'@type': ['doc'],
'@id': 'urn',
'schema:identifier': 'schema',
'schema:name': 'doc_name',
'schema:url': 'http://dco/url',
'schema:description': 'description',
'schema:includedInDataCatalog': 'catalog'
};
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
......@@ -4,9 +4,12 @@ import { ResultPageComponent } from './result-page.component';
import { Component, NO_ERRORS_SCHEMA } from '@angular/core';
import { RouterTestingModule } from '@angular/router/testing';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { of } from 'rxjs';
import { Observable, of } from 'rxjs';
import { fakeRoute } from 'ngx-speculoos';
import { DocumentComponent } from './document/document.component';
import { EMPTY_CRITERIA } from '../model/dataDiscoveryCriteria';
import { GnpisService } from '../gnpis.service';
import { DataDiscoveryDocument } from '../model/dataDiscoveryDocument';
@Component({
......@@ -31,17 +34,15 @@ describe('ResultPageComponent', () => {
RouterTestingModule,
],
declarations: [ResultPageComponent, MockFormComponent, DocumentComponent],
providers: [
{ provide: GnpisService, useValue: service }
],
schemas: [NO_ERRORS_SCHEMA],
});
fixture = TestBed.createComponent(ResultPageComponent);
component = fixture.componentInstance;
}));
it('should create', () => {
fixture.detectChanges();
expect(component).toBeTruthy();
});
it('should generate criteria from URL', () => {
const router = TestBed.get(Router) as Router;
......@@ -87,4 +88,23 @@ describe('ResultPageComponent', () => {
});
});
});
it('should fetch documents', () => {
const criteria = EMPTY_CRITERIA;
const documents: Observable<DataDiscoveryDocument[]> = of([{
'@type': ['doc'],
'@id': 'urn',
'schema:identifier': 'schema',
'schema:name': 'doc_name',
'schema:url': 'http://dco/url',
'schema:description': 'description',
'schema:includedInDataCatalog': 'catalog'
}]);
service.search.and.returnValue(of(documents));
component.fetchDocuments(criteria);
expect(component.documents).not.toBe(null);
});
})
;
......@@ -15,7 +15,7 @@ import { GnpisService } from '../gnpis.service';
export class ResultPageComponent implements OnInit {
criteria$ = new BehaviorSubject<DataDiscoveryCriteria>({ ...EMPTY_CRITERIA });
documents: DataDiscoveryDocument[];
documents: DataDiscoveryDocument[] = [];
constructor(private route: ActivatedRoute, private router: Router, private gnpisService: GnpisService) {
}
......@@ -30,8 +30,7 @@ export class ResultPageComponent implements OnInit {
fetchDocuments(criteria: DataDiscoveryCriteria) {
this.gnpisService.search(criteria)
.subscribe(brapiResult => this.documents = brapiResult.result.data );
.subscribe(documents => this.documents = documents);
}
ngOnInit(): void {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment