import { ComponentFixture, TestBed } from '@angular/core/testing';

import { DownloadSectionComponent } from './download.component';
import { DATASET_LIST, CRITERIA_LIST } from '../../../../settings/test-data';
import { Dataset } from 'src/app/metamodel/model';
import { ConeSearch } from '../../store/model';
import { environment } from "../../../../environments/environment";

describe('[Search][Result] Component: DownloadSectionComponent', () => {
    let component: DownloadSectionComponent;
    let fixture: ComponentFixture<DownloadSectionComponent>;

    beforeEach(() => {
        TestBed.configureTestingModule({
            declarations: [DownloadSectionComponent]
        });
        fixture = TestBed.createComponent(DownloadSectionComponent);
        component = fixture.componentInstance;
    });

    it('should create the component', () => {
        expect(component).toBeTruthy();
    });

    it('#getDataset() should return dataset object', () => {
        component.datasetList = DATASET_LIST;
        component.datasetName = 'cat_1';
        const dataset: Dataset = component.getDataset();
        expect(dataset.name).toBe('cat_1');
        expect(dataset.label).toBe('Cat 1');
    });

    it('#getUrl(format) should construct url with format parameter', () => {
        component.datasetName = 'dataset';
        component.outputList = [1, 2, 3];
        component.criteriaList = CRITERIA_LIST;
        component.coneSearch = { ra: 4, dec: 5, radius: 6 } as ConeSearch;
        const url = component.getUrl('csv');
        expect(url).toBe(environment.apiUrl + '/search/dataset?a=1;2;3&c=1::eq::fd_crit_1;2::eq::fd_crit_2&cs=4:5:6&f=csv');
    });
});