blob: 95beb9a6cdd6a1bfb30425b2bcb21a9d13662fcf [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { TestBed, getTestBed, inject } from '@angular/core/testing';
import { AppConfigService } from './app-config.service';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
describe('AppConfigService', () => {
let mockBackend: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ HttpClientTestingModule ],
providers: [ AppConfigService ],
});
mockBackend = getTestBed().get(HttpTestingController);
});
it('should be created', inject([AppConfigService], (service: AppConfigService) => {
expect(service).toBeTruthy();
}));
it('should expose apiRoot', inject([AppConfigService], (service: AppConfigService) => {
expect(typeof service.getApiRoot).toBe('function');
}));
it('should expose loginPath', inject([AppConfigService], (service: AppConfigService) => {
expect(typeof service.getLoginPath).toBe('function');
}));
it('should expose contextMenuConfigURL', inject([AppConfigService], (service: AppConfigService) => {
expect(typeof service.getContextMenuConfigURL).toBe('function');
}));
it('should load app-config.json', inject([AppConfigService], (service: AppConfigService) => {
service.loadAppConfig();
const req = mockBackend.expectOne('assets/app-config.json');
expect(req.request.method).toEqual('GET');
req.flush({});
mockBackend.verify();
}));
it('getApiRoot() should return with apiRoot value', function(done) {
inject([AppConfigService], (service: AppConfigService) => {
service.loadAppConfig().then(() => {
expect(service.getApiRoot()).toBe('/api/v1');
done();
}, (error) => {
throw error;
});
const req = mockBackend.expectOne('assets/app-config.json');
req.flush({ apiRoot: '/api/v1' });
})();
});
it('getApiRoot() should log error on the console if apiRoot is undefined', function(done) {
inject([AppConfigService], (service: AppConfigService) => {
spyOn(console, 'error');
service.loadAppConfig().then(() => {
service.getApiRoot();
expect(console.error).toHaveBeenCalledWith('[AppConfigService] apiRoot entry is missing from /assets/app-config.json');
done();
}, (error) => {
throw error;
});
const req = mockBackend.expectOne('assets/app-config.json');
req.flush({});
})();
});
it('getLoginPath() should return with loginPath value', function(done) {
inject([AppConfigService], (service: AppConfigService) => {
service.loadAppConfig().then(() => {
expect(service.getLoginPath()).toBe('/login');
done();
}, (error) => {
throw error;
});
const req = mockBackend.expectOne('assets/app-config.json');
req.flush({ loginPath: '/login' });
})();
});
it('getLoginPath() should log error on the console if loginPath is undefined', function(done) {
inject([AppConfigService], (service: AppConfigService) => {
spyOn(console, 'error');
service.loadAppConfig().then(() => {
service.getLoginPath();
expect(console.error).toHaveBeenCalledWith('[AppConfigService] loginPath entry is missing from /assets/app-config.json');
done();
}, (error) => {
throw error;
});
const req = mockBackend.expectOne('assets/app-config.json');
req.flush({});
})();
});
it('getContextMenuConfigURL() should return with contextMenuConfigURL value', function(done) {
inject([AppConfigService], (service: AppConfigService) => {
service.loadAppConfig().then(() => {
expect(service.getContextMenuConfigURL()).toBe('/contextMenuConfigURL');
done();
}, (error) => {
throw error;
});
const req = mockBackend.expectOne('assets/app-config.json');
req.flush({ contextMenuConfigURL: '/contextMenuConfigURL' });
})();
});
it('getContextMenuConfigURL() should log error on the console if contextMenuConfigURL is undefined', function(done) {
inject([AppConfigService], (service: AppConfigService) => {
spyOn(console, 'error');
service.loadAppConfig().then(() => {
service.getContextMenuConfigURL();
expect(console.error).toHaveBeenCalledWith('[AppConfigService] contextMenuConfigURL entry is missing from /assets/app-config.json');
done();
}, (error) => {
throw error;
});
const req = mockBackend.expectOne('assets/app-config.json');
req.flush({});
})();
});
});