blob: ba041aae76e8a7ea1fa19a417535f08cb41a8991 [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.
*/
'use strict';
describe('Controller: RcmedSelectionCtrl', function () {
// load the controller's module
beforeEach(module('ocwUiApp'));
var RcmedselectionCtrl,
scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
RcmedselectionCtrl = $controller('RcmedSelectionCtrl', {
$scope: scope
});
}));
it('should automatically query RCMED on initialization', function() {
inject(function($rootScope, $httpBackend) {
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/datasets/?callback=JSON_CALLBACK').
respond(200, [{longname: 1}, {longname: 2}]);
$httpBackend.expectGET($rootScope.baseURL + '/rcmed/parameters/bounds/').respond(503)
$httpBackend.expectGET('views/main.html').respond(200);
$httpBackend.flush();
expect(scope.availableObs.length).toBe(3);
expect(scope.availableObs[0]).toEqual({longname: "Please select an option"});
expect(scope.availableObs[1]).toEqual({longname: 1});
});
});
it('should initialize the getObservations function', function() {
inject(function($rootScope, $httpBackend) {
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/datasets/?callback=JSON_CALLBACK').
respond(200, [{longname: 1}, {longname: 2}]);
$httpBackend.expectGET($rootScope.baseURL + '/rcmed/parameters/bounds/').respond(503)
$httpBackend.expectGET('views/main.html').respond(200);
$httpBackend.flush();
expect(scope.availableObs.length).toBe(3);
expect(scope.availableObs[0]).toEqual({longname: "Please select an option"});
expect(scope.availableObs[1]).toEqual({longname: 1});
// Set up a failed query
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/datasets/?callback=JSON_CALLBACK').
respond(404);
scope.getObservations();
$httpBackend.flush();
expect(scope.availableObs.length).toBe(1);
expect(scope.availableObs[0]).toEqual('Unable to query RCMED');
});
});
it('should initialize dataSelectUpdated function', function() {
inject(function($rootScope, $controller, $httpBackend) {
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/datasets/?callback=JSON_CALLBACK').
respond(200, [{longname: 1}, {longname: 2}]);
$httpBackend.expectGET($rootScope.baseURL + '/rcmed/parameters/bounds/').respond(503)
$httpBackend.expectGET('views/main.html').respond(200);
$httpBackend.flush();
// Add the test dataset to our scope
scope.datasetSelection = {shortname: 'TRMM'}
// Test return with only single parameter
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/parameters/dataset/' +
scope.datasetSelection['shortname'] +
'?callback=JSON_CALLBACK').
respond(200, ['pcp']);
scope.dataSelectUpdated();
$httpBackend.flush();
expect(scope.parameterSelection).toEqual('pcp');
// Test return with multiple parameters
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/parameters/dataset/' +
scope.datasetSelection['shortname'] +
'?callback=JSON_CALLBACK').
respond(200, ['pcp', 'pcp2']);
scope.dataSelectUpdated();
$httpBackend.flush();
expect(scope.parameterSelection).toEqual({shortname: 'Please select a parameter'});
});
});
it('should initialze the addObservation function', function() {
inject(function($rootScope, $controller, $httpBackend) {
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/datasets/?callback=JSON_CALLBACK').
respond(200, [{longname: 1}, {longname: 2}]);
$httpBackend.expectGET($rootScope.baseURL + '/rcmed/parameters/bounds/').respond(503)
$httpBackend.expectGET('views/main.html').respond(200);
$httpBackend.flush();
scope.datasetSelection = {
"dataset_id" : "3",
"shortname" : "TRMM",
"longname" : "Tropical Rainfall Measuring Mission Dataset",
"source" : "Readme for the Tropical Rainfall Measuring Mission (TRMM) Data Set"
};
scope.parameterSelection = {
"parameter_id":"36",
"shortname":"pcp",
"datasetshortname":"TRMM",
"longname":"TRMM v.6 Monthly Precipitation",
"units":"mm\/day"
};
// addObservations does a refresh of the selections with a re-query of the backend
// so we need to catch that call!
$httpBackend.expectJSONP($rootScope.baseURL + '/rcmed/datasets/?callback=JSON_CALLBACK').
respond(200, [{longname: 1}, {longname: 2}]);
scope.addObservation();
$httpBackend.flush();
expect(scope.datasetCount.length).toBe(1);
// The selection observation should be reset so we shouldn't have
// any selected observation parameters.
expect(scope.retrievedObsParams).toEqual([]);
});
});
});