You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@griffin.apache.org by gu...@apache.org on 2017/06/27 01:41:08 UTC
[50/51] [partial] incubator-griffin git commit: 20170627 update
angular
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/35bcfcae/ui/bower_components/AngularJS-Toaster/package.json
----------------------------------------------------------------------
diff --git a/ui/bower_components/AngularJS-Toaster/package.json b/ui/bower_components/AngularJS-Toaster/package.json
deleted file mode 100644
index e13a770..0000000
--- a/ui/bower_components/AngularJS-Toaster/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "angularjs-toaster",
- "version": "1.2.0",
- "description": "AngularJS Toaster is a customized version of toastr non-blocking notification javascript library",
- "author": "Jiri Kavulak",
- "license": "MIT",
- "repository": {
- "type": "git",
- "url": "https://github.com/jirikavi/AngularJS-Toaster.git"
- },
- "dependencies": {},
- "devDependencies": {
- "angular": ">1.2.6",
- "angular-animate": "~1.2.8",
- "angular-mocks": "^1.4.7",
- "jasmine-core": "^2.3.4",
- "karma": "^0.13.21",
- "karma-chrome-launcher": "^0.2.2",
- "karma-coverage": "^0.5.3",
- "karma-jasmine": "^0.3.7",
- "coveralls": "^2.11.6"
- },
- "jspm": {
- "main": "toaster",
- "dependencies": {
- "css": "jspm:css@*"
- },
- "shim": {
- "toaster": {
- "deps": [
- "./toaster.css!"
- ]
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/35bcfcae/ui/bower_components/AngularJS-Toaster/test/directiveTemplateSpec.js
----------------------------------------------------------------------
diff --git a/ui/bower_components/AngularJS-Toaster/test/directiveTemplateSpec.js b/ui/bower_components/AngularJS-Toaster/test/directiveTemplateSpec.js
deleted file mode 100644
index b638dca..0000000
--- a/ui/bower_components/AngularJS-Toaster/test/directiveTemplateSpec.js
+++ /dev/null
@@ -1,213 +0,0 @@
-/* global describe global it global beforeEach global angular global inject global expect */
-
-'use strict';
-
-describe('directiveTemplate', function () {
- var toaster, scope, $compile;
-
- beforeEach(function () {
- createDirectives();
-
- // load dependencies
- module('testApp');
- module('toaster');
-
- // inject the toaster service
- inject(function (_toaster_, _$rootScope_, _$compile_) {
- toaster = _toaster_;
- scope = _$rootScope_;
- $compile = _$compile_;
- });
- });
-
- it('should load and render the referenced directive template text', function () {
- var container = compileContainer();
- pop({ type: 'info', body: 'bind-template-only', bodyOutputType: 'directive' });
-
- expect(container[0].innerText).toBe('here is some great new text! It was brought in via directive!');
- });
-
- it('should bind directiveData to the directive template', function () {
- var container = compileContainer();
- pop({ type: 'info', body: 'bind-template-with-data', bodyOutputType: 'directive', directiveData: { name: 'Bob' } });
-
- expect(container[0].innerText).toBe('Hello Bob');
- });
-
- it('should parse type string directiveData to an object', function () {
- var container = compileContainer();
- pop({ type: 'info', body: 'bind-template-with-data', bodyOutputType: 'directive', directiveData: '{ "name": "Bob" }' });
-
- expect(container[0].innerText).toBe('Hello Bob');
- });
-
- it('should render type number directiveData', function () {
- var container = compileContainer();
- pop({ type: 'info', body: 'bind-template-with-numeric-data', bodyOutputType: 'directive', directiveData: 2 });
-
- expect(container[0].innerText).toBe('1 + 1 = 2');
- });
-
- it('should bind Attribute-restricted templates', function () {
- var container = compileContainer();
- pop({ type: 'info', body: 'bind-template-only', bodyOutputType: 'directive', directiveData: { name: 'Bob' } });
-
- expect(container[0].innerText).toBe('here is some great new text! It was brought in via directive!');
- });
-
- it('should bind unrestricted templates', function () {
- var container = compileContainer();
- pop({ type: 'info', body: 'unrestricted-template', bodyOutputType: 'directive' });
-
- expect(container[0].innerText).toBe('Unrestricted Template');
- });
-
- it('should not bind Element-only-restricted templates', function () {
- var hasError = false;
- var container = compileContainer();
-
- try {
- pop({ type: 'info', body: 'element-template', bodyOutputType: 'directive' });
- } catch(e) {
- var message = 'Directives must be usable as attributes. ' +
- 'Add "A" to the restrict option (or remove the option entirely). Occurred for directive element-template.';
-
- expect(e.message).toBe(message);
- hasError = true;
- }
-
- expect(hasError).toBe(true);
- });
-
- it('should not bind Class-only-restricted templates', function () {
- var hasError = false;
- var container = compileContainer();
-
- try {
- pop({ type: 'info', body: 'class-template', bodyOutputType: 'directive' });
- } catch(e) {
- var message = 'Directives must be usable as attributes. ' +
- 'Add "A" to the restrict option (or remove the option entirely). Occurred for directive class-template.';
-
- expect(e.message).toBe(message);
- hasError = true;
- }
-
- expect(hasError).toBe(true);
- });
-
- it('should throw an error if directiveName argument is not passed via body', function () {
- var container = compileContainer();
- var hasError = false;
-
- expect(container[0].innerText).toBe('');
-
- try {
- pop({ type: 'info', bodyOutputType: 'directive' });
- } catch (e) {
- expect(e.message).toBe('A valid directive name must be provided via the toast body argument when using bodyOutputType: directive');
- hasError = true;
- }
-
- expect(container[0].innerText).toBe('');
- expect(hasError).toBe(true);
- });
-
- it('should throw an error if directiveName argument is an empty string', function () {
- var container = compileContainer();
- var hasError = false;
-
- expect(container[0].innerText).toBe('');
-
- try {
- pop({ type: 'info', body: '', bodyOutputType: 'directive' });
- } catch (e) {
- expect(e.message).toBe('A valid directive name must be provided via the toast body argument when using bodyOutputType: directive');
- hasError = true;
- }
-
- expect(container[0].innerText).toBe('');
- expect(hasError).toBe(true);
- });
-
- it('should throw an error if the directive could not be found', function () {
- var hasError = false;
-
- compileContainer();
-
- try {
- pop({ type: 'info', body: 'non-existent-directive', bodyOutputType: 'directive' });
- } catch (e) {
- var message = 'non-existent-directive could not be found. ' +
- 'The name should appear as it exists in the markup,' +
- ' not camelCased as it would appear in the directive declaration,' +
- ' e.g. directive-name not directiveName.'
-
- expect(e.message).toBe(message);
- hasError = true;
- }
-
- expect(hasError).toBe(true);
- });
-
- it('should throw an error if the directive uses isolate scope', function () {
- var hasError = false;
- compileContainer();
-
- try {
- pop({ type: 'info', body: 'isolate-scope', bodyOutputType: 'directive' });
- } catch (e) {
- var message = 'Cannot use a directive with an isolated scope.' +
- ' The scope must be either true or falsy (e.g. false/null/undefined). Occurred for directive isolate-scope.';
-
- expect(e.message).toBe(message)
- hasError = true;
- }
-
- expect(hasError).toBe(true);
- })
-
-
- function compileContainer() {
- var element = angular.element('<toaster-container></toaster-container>');
- $compile(element)(scope);
- scope.$digest();
-
- return element;
- }
-
- function pop(params) {
- toaster.pop(params);
-
- // force new toast to be rendered
- scope.$digest();
- }
-
- function createDirectives() {
- angular.module('testApp', [])
- .directive('bindTemplateOnly', function () {
- return {
- restrict: 'A',
- template: 'here is some great new text! <span style="color:orange">It was brought in via directive!</span>'
- }
- })
- .directive('bindTemplateWithData', function () {
- return { template: 'Hello {{directiveData.name}}' }
- })
- .directive('bindTemplateWithNumericData', function () {
- return { template: '1 + 1 = {{directiveData}}' }
- })
- .directive('elementTemplate', function () {
- return { restrict: 'E', template: 'Element Template' }
- })
- .directive('classTemplate', function () {
- return { restrict: 'C', template: 'Class Template' }
- })
- .directive('unrestrictedTemplate', function () {
- return { template: 'Unrestricted Template' }
- })
- .directive('isolateScope', function () {
- return { template: 'isolate scope template', scope: {}}
- });
- }
-})
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/35bcfcae/ui/bower_components/AngularJS-Toaster/test/toasterContainerControllerSpec.js
----------------------------------------------------------------------
diff --git a/ui/bower_components/AngularJS-Toaster/test/toasterContainerControllerSpec.js b/ui/bower_components/AngularJS-Toaster/test/toasterContainerControllerSpec.js
deleted file mode 100644
index 7054098..0000000
--- a/ui/bower_components/AngularJS-Toaster/test/toasterContainerControllerSpec.js
+++ /dev/null
@@ -1,358 +0,0 @@
-/* global describe global it global beforeEach global angular global jasmine global inject global expect global spyOn */
-
-'use strict';
-
-var rootScope, toaster, $compile;
-
-describe('toasterContainer controller', function () {
- beforeEach(function () {
- module('toaster');
-
- // inject the toaster service
- inject(function (_toaster_, _$rootScope_, _$compile_) {
- toaster = _toaster_;
- rootScope = _$rootScope_;
- $compile = _$compile_;
- });
- });
-
- it('should stop timer if config.mouseoverTimer is true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'mouseover-timer-stop\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.config.mouseoverTimer).toBe(true);
-
- toaster.pop({ type: 'info' });
-
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBeDefined();
-
- scope.stopTimer(scope.toasters[0]);
-
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBe(null);
- });
-
- it('should do nothing if config.mouseoverTimer is true and stopTimer is called again', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'mouseover-timer-stop\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.config.mouseoverTimer).toBe(true);
-
- toaster.pop({ type: 'info' });
-
- rootScope.$digest();
-
- scope.stopTimer(scope.toasters[0]);
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBe(null);
-
- scope.stopTimer(scope.toasters[0]);
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBe(null);
- });
-
- it('should not stop timer if config.mouseoverTimer is false', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'mouseover-timer-stop\': false }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.config.mouseoverTimer).toBe(false);
-
- toaster.pop({ type: 'info' });
-
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBeDefined();
-
- scope.stopTimer(scope.toasters[0]);
-
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBeDefined();
- });
-
- it('should restart timer if config.mouseoverTimer is true and timeoutPromise is falsy', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'mouseover-timer-stop\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBeDefined();
-
- scope.stopTimer(scope.toasters[0]);
- expect(scope.toasters[0].timeoutPromise).toBe(null);
-
- scope.restartTimer(scope.toasters[0]);
- expect(scope.toasters[0].timeoutPromise).toBeDefined();
- });
-
- it('should not restart timer if config.mouseoverTimer is true and timeoutPromise is truthy', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'mouseover-timer-stop\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- expect(scope.toasters[0].timeoutPromise).toBeDefined();
-
- spyOn(scope, 'configureTimer').and.callThrough();
-
- scope.restartTimer(scope.toasters[0]);
- expect(scope.toasters[0].timeoutPromise).toBeDefined();
- expect(scope.configureTimer).not.toHaveBeenCalled();
- });
-
- it('should not restart timer and should remove toast if config.mouseoverTimer is not true and timeoutPromise is null', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'mouseover-timer-stop\': 2 }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- expect(scope.config.mouseoverTimer).toBe(2);
-
- scope.toasters[0].timeoutPromise = null;
-
- spyOn(scope, 'configureTimer').and.callThrough();
- spyOn(scope, 'removeToast').and.callThrough();
-
- scope.restartTimer(scope.toasters[0]);
-
- expect(scope.configureTimer).not.toHaveBeenCalled();
- expect(scope.removeToast).toHaveBeenCalled();
- expect(scope.toasters.length).toBe(0)
- });
-
- it('should not restart timer or remove toast if config.mouseoverTimer is not true and timeoutPromise is not null', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'mouseover-timer-stop\': 2 }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- expect(scope.config.mouseoverTimer).toBe(2);
-
- spyOn(scope, 'configureTimer').and.callThrough();
- spyOn(scope, 'removeToast').and.callThrough();
-
- scope.restartTimer(scope.toasters[0]);
-
- expect(scope.configureTimer).not.toHaveBeenCalled();
- expect(scope.removeToast).not.toHaveBeenCalled();
- expect(scope.toasters.length).toBe(1)
- });
-
- describe('click', function () {
- it('should do nothing if config.tap is not true and toast.showCloseButton is not true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': false, \'close-button\': false }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(1);
- expect(scope.removeToast).not.toHaveBeenCalled();
- });
-
- it('should do nothing if config.tap is not true and toast.showCloseButton is true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': false, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(1);
- expect(scope.removeToast).not.toHaveBeenCalled();
- });
-
- it('should do nothing if config.tap is not true and isCloseButton is not true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': false, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- scope.click(scope.toasters[0], false);
-
- expect(scope.toasters.length).toBe(1);
- expect(scope.removeToast).not.toHaveBeenCalled();
- });
-
- it('should remove toast if config.tap is true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': true, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info' });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(0);
- expect(scope.removeToast).toHaveBeenCalled();
- });
-
- it('should remove toast if config.tap is true and the click handler function returns true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': true, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info', clickHandler: function (toast, isCloseButton) { return true; } });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(0);
- expect(scope.removeToast).toHaveBeenCalled();
- });
-
- it('should not remove toast if config.tap is true and the click handler function does not return true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': true, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info', clickHandler: function (toast, isCloseButton) { } });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(1);
- expect(scope.removeToast).not.toHaveBeenCalled();
- });
-
- it('should remove toast if config.tap is true and the click handler exists on the parent returning true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': true, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
- scope.$parent.clickHandler = function () { return true; };
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info', clickHandler: 'clickHandler' });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(0);
- expect(scope.removeToast).toHaveBeenCalled();
- });
-
- it('should not remove toast if config.tap is true and the click handler exists on the parent not returning true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': true, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
- scope.$parent.clickHandler = function () { };
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ type: 'info', clickHandler: 'clickHandler' });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(1);
- expect(scope.removeToast).not.toHaveBeenCalled();
- });
-
- it('should remove toast if config.tap is true and the click handler does not exist on the parent', function () {
- // TODO: this functionality seems counter-intuitive.
- // Need to identify use cases to see if this is actually correct.
-
- var container = angular.element(
- '<toaster-container toaster-options="{ \'tap-to-dismiss\': true, \'close-button\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
- console.log = jasmine.createSpy("log");
-
- toaster.pop({ type: 'info', clickHandler: 'clickHandler' });
- rootScope.$digest();
-
- scope.click(scope.toasters[0]);
-
- expect(scope.toasters.length).toBe(0);
- expect(scope.removeToast).toHaveBeenCalled();
-
- expect(console.log).toHaveBeenCalledWith("TOAST-NOTE: Your click handler is not inside a parent scope of toaster-container.");
- });
- });
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/35bcfcae/ui/bower_components/AngularJS-Toaster/test/toasterContainerSpec.js
----------------------------------------------------------------------
diff --git a/ui/bower_components/AngularJS-Toaster/test/toasterContainerSpec.js b/ui/bower_components/AngularJS-Toaster/test/toasterContainerSpec.js
deleted file mode 100644
index 40353a5..0000000
--- a/ui/bower_components/AngularJS-Toaster/test/toasterContainerSpec.js
+++ /dev/null
@@ -1,742 +0,0 @@
-/* global describe global it global beforeEach global angular global jasmine global inject global expect global spyOn */
-
-'use strict';
-
-var rootScope, toaster, $compile;
-
-describe('toasterContainer', function () {
- beforeEach(function () {
- module('toaster');
-
- // inject the toaster service
- inject(function (_toaster_, _$rootScope_, _$compile_) {
- toaster = _toaster_;
- rootScope = _$rootScope_;
- $compile = _$compile_;
- });
- });
-
- it('should pop a toast via individual parameters', function () {
- var container = compileContainer();
- var scope = container.scope();
-
- toaster.pop('info', 'test', 'test');
-
- expect(scope.toasters.length).toBe(1);
- });
-
- it('should unsubscribe events on $destroy if handlers exist', function () {
- var toasterEventRegistry;
-
- inject(function (_toasterEventRegistry_) {
- toasterEventRegistry = _toasterEventRegistry_;
- });
-
- var container = compileContainer();
- var scope = container.scope();
-
- spyOn(toasterEventRegistry, 'unsubscribeToNewToastEvent').and.callThrough();
- spyOn(toasterEventRegistry, 'unsubscribeToClearToastsEvent').and.callThrough();
-
- scope.$destroy();
-
- expect(toasterEventRegistry.unsubscribeToNewToastEvent).toHaveBeenCalled();
- expect(toasterEventRegistry.unsubscribeToClearToastsEvent).toHaveBeenCalled();
- });
-
-
- describe('addToast', function () {
- it('should default to icon-class config value if toast.type not found in icon-classes', function () {
- var toasterConfig;
-
- inject(function (_toasterConfig_) {
- toasterConfig = _toasterConfig_;
- });
-
- compileContainer();
-
- expect(toasterConfig['icon-class']).toBe('toast-info');
-
- toaster.pop({ type: 'invalid' });
-
- rootScope.$digest();
-
- expect(toaster.toast.type).toBe('toast-info');
- });
-
- it('should allow subsequent duplicates if prevent-duplicates is not set', function () {
- var container = compileContainer();
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0);
-
- toaster.pop({ type: 'info', title: 'title', body: 'body' });
- toaster.pop({ type: 'info', title: 'title', body: 'body' });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- });
-
- it('should not allow subsequent duplicates if prevent-duplicates is true without toastId param', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'prevent-duplicates\': true}"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0);
-
- toaster.pop({ type: 'info', title: 'title', body: 'body' });
- toaster.pop({ type: 'info', title: 'title', body: 'body' });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1);
- });
-
- it('should allow subsequent duplicates if prevent-duplicates is true with unique toastId params', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'prevent-duplicates\': true}"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0);
-
- toaster.pop({ type: 'info', title: 'title', body: 'body', toastId: 1 });
- toaster.pop({ type: 'info', title: 'title', body: 'body', toastId: 2 });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- });
-
- it('should not allow subsequent duplicates if prevent-duplicates is true with identical toastId params', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'prevent-duplicates\': true}"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0);
-
- toaster.pop({ type: 'info', title: 'title', body: 'body', toastId: 1 });
- toaster.pop({ type: 'info', title: 'title', body: 'body', toastId: 1 });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1);
- });
-
- it('should not render the close button if showCloseButton is false', function () {
- var container = compileContainer();
-
- toaster.pop({ type: 'info', body: 'With a close button' });
-
- rootScope.$digest();
-
- expect(container.find('button')[0]).toBeUndefined();
- });
-
- it('should use the default close html if toast.closeHtml is undefined', function () {
- var container = compileContainer();
-
- toaster.pop({ type: 'info', body: 'With a close button', showCloseButton: true });
-
- rootScope.$digest();
-
- var buttons = container.find('button');
-
- expect(buttons.length).toBe(1);
- expect(buttons[0].outerHTML).toBe('<button class="toast-close-button" type="button">×</button>');
- });
-
- it('should use the toast.closeHtml argument if passed', function () {
- var container = compileContainer();
-
- toaster.pop({ type: 'info', body: 'With a close button', showCloseButton: true,
- closeHtml: '<button>Close</button>'
- });
-
- rootScope.$digest();
-
- var buttons = container.find('button');
-
- expect(buttons.length).toBe(1);
- expect(buttons[0].outerHTML).toBe('<button>Close</button>');
- });
-
- it('should render toast.closeHtml argument if not a button element', function () {
- var container = compileContainer();
-
- toaster.pop({ type: 'info', body: 'With close text', showCloseButton: true,
- closeHtml: '<span>Close</span>'
- });
-
- rootScope.$digest();
-
- var spans = container.find('span');
-
- expect(spans.length).toBe(1);
- expect(spans[0].outerHTML).toBe('<span>Close</span>');
- });
-
- it('should show the close button if mergedConfig close-button is an object set to true for toast-info', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'close-button\': {\'toast-info\': true}}"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- toaster.pop({ type: 'info' });
-
- rootScope.$digest();
-
- var buttons = container.find('button');
-
- expect(buttons.length).toBe(1);
- expect(buttons[0].outerHTML).toBe('<button class="toast-close-button" type="button">×</button>');
- });
-
- it('should not render the close button if mergedConfig close-button type cannot be found', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'close-button\': {\'toast-invalid\': true}}"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- toaster.pop({ type: 'info' });
-
- rootScope.$digest();
-
- var buttons = container.find('button');
-
- expect(buttons.length).toBe(0);
- expect(buttons[0]).toBeUndefined();
- });
-
- it('should not render the close button if mergedConfig close-button is not an object', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'close-button\': 1 }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- toaster.pop({ type: 'info' });
-
- rootScope.$digest();
-
- var buttons = container.find('button');
-
- expect(buttons.length).toBe(0);
- expect(buttons[0]).toBeUndefined();
- });
-
- it('should render trustedHtml bodyOutputType', function () {
- var container = compileContainer();
-
- toaster.pop({ bodyOutputType: 'trustedHtml', body: '<section>Body</section>' });
-
- rootScope.$digest();
-
- var body = container.find('section');
-
- expect(body.length).toBe(1);
- expect(body[0].outerHTML).toBe('<section>Body</section>');
- });
-
- it('should render template bodyOutputType when body is passed', function () {
- inject(function($templateCache) {
- $templateCache.put('/templatepath/template.html', '<section>Template</section>');
- });
-
- var container = compileContainer();
-
- toaster.pop({ bodyOutputType: 'template', body: '/templatepath/template.html' });
-
- rootScope.$digest();
-
- expect(toaster.toast.body).toBe('/templatepath/template.html');
-
- var body = container.find('section');
-
- expect(body.length).toBe(1);
- expect(body[0].outerHTML).toBe('<section class="ng-scope">Template</section>');
- });
-
- it('should render default template bodyOutputType when body is not passed', function () {
- inject(function($templateCache) {
- $templateCache.put('toasterBodyTmpl.html', '<section>Template</section>');
- });
-
- var container = compileContainer();
-
- toaster.pop({ bodyOutputType: 'template' });
-
- rootScope.$digest();
-
- expect(toaster.toast.bodyTemplate).toBe('toasterBodyTmpl.html');
-
- var body = container.find('section');
-
- expect(body.length).toBe(1);
- expect(body[0].outerHTML).toBe('<section class="ng-scope">Template</section>');
- });
-
- it('should render templateWithData bodyOutputType when body is passed', function () {
- inject(function($templateCache) {
- $templateCache.put('template.html', '<section>Template {{toaster.data}}</section>');
- });
-
- var container = compileContainer();
-
- toaster.pop({ bodyOutputType: 'templateWithData', body: "{template: 'template.html', data: 123 }" });
-
- rootScope.$digest();
-
- var body = container.find('section');
-
- expect(body.length).toBe(1);
- expect(body[0].outerHTML).toBe('<section class="ng-binding ng-scope">Template 123</section>');
- });
-
- it('should throw exception for default templateWithData bodyOutputType when body is not passed', function () {
- // TODO: If the default fallback template cannot be parsed to an object
- // composed of template and data, an exception is thrown. This seems to
- // be undesirable behavior. A clearer exception should be thrown, or better
- // handling should be handled, or the fallback option should be removed.
- inject(function($templateCache) {
- $templateCache.put('template.html', '<section>Template {{toaster.data}}</section>');
- });
-
- compileContainer();
- var hasException = false;
-
- try {
- toaster.pop({ bodyOutputType: 'templateWithData' });
- } catch (e) {
- expect(e.message).toBe("Cannot read property 'template' of undefined");
- hasException = true;
- }
-
- expect(hasException).toBe(true);
- });
-
- it('should remove first in toast if limit is met and newest-on-top is true', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'limit\': 2, \'newest-on-top\': true }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- var scope = container.scope();
-
- toaster.pop({ type: 'info', body: 'first' });
- toaster.pop({ type: 'info', body: 'second' });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- expect(scope.toasters[0].body).toBe('second');
- expect(scope.toasters[1].body).toBe('first');
-
- toaster.pop({ type: 'info', body: 'third' });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- expect(scope.toasters[0].body).toBe('third');
- expect(scope.toasters[1].body).toBe('second');
- });
-
- it('should remove last in toast if limit is met and newest-on-top is false', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{\'limit\': 2, \'newest-on-top\': false }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
-
- var scope = container.scope();
-
- toaster.pop({ type: 'info', body: 'first' });
- toaster.pop({ type: 'info', body: 'second' });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- expect(scope.toasters[0].body).toBe('first');
- expect(scope.toasters[1].body).toBe('second');
-
- toaster.pop({ type: 'info', body: 'third' });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- expect(scope.toasters[0].body).toBe('second');
- expect(scope.toasters[1].body).toBe('third');
- });
-
- it('should invoke onShowCallback if it exists when toast is added', function () {
- compileContainer();
- var mock = {
- callback : function () { }
- };
-
- spyOn(mock, 'callback');
-
- toaster.pop({ type: 'info', body: 'toast 1', onShowCallback: mock.callback });
-
- rootScope.$digest();
-
- expect(mock.callback).toHaveBeenCalled();
- });
-
- it('should not invoke onShowCallback if it does not exist when toast is added', function () {
- compileContainer();
- var mock = {
- callback : function () { }
- };
-
- spyOn(mock, 'callback');
-
- toaster.pop({ type: 'info', body: 'toast 1' });
-
- rootScope.$digest();
-
- expect(mock.callback).not.toHaveBeenCalled();
- });
- });
-
-
- describe('removeToast', function () {
- it('should not remove toast if id does not match a toast id', function() {
- var container = compileContainer();
- var scope = container.scope();
-
- toaster.pop({ type: 'info', body: 'toast 1' });
- toaster.pop({ type: 'info', body: 'toast 2' });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- expect(scope.toasters[0].id).toBe(2)
- expect(scope.toasters[1].id).toBe(1)
-
- scope.removeToast(3);
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(2);
- });
-
- it('should invoke onHideCallback if it exists when toast is removed', function () {
- var container = compileContainer();
- var scope = container.scope();
-
- var mock = {
- callback : function () { }
- };
-
- spyOn(mock, 'callback');
-
- toaster.pop({ type: 'info', body: 'toast 1', onHideCallback: mock.callback });
-
- rootScope.$digest();
- scope.removeToast(1);
- rootScope.$digest();
-
- expect(mock.callback).toHaveBeenCalled();
- });
- });
-
-
- describe('scope._onNewTest', function () {
- it('should not add toast if toasterId is passed to scope._onNewToast but toasterId is not set via config', function () {
- var container = compileContainer();
- var scope = container.scope();
-
- expect(scope.config.toasterId).toBeUndefined();
-
- toaster.pop({ type: 'info', body: 'toast 1', toasterId: 1 });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(0);
- });
-
- it('should add toast if toasterId is passed to scope._onNewToast and toasterId is set via config', function () {
- var container = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 1 }"></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.config.toasterId).toBe(1);
-
- toaster.pop({ type: 'info', body: 'toast 1', toasterId: 1 });
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1);
- });
-
- it('should add toasts to their respective container based on toasterId', function () {
- var container1 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 1 }"></toaster-container>');
- var container2 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 2 }"></toaster-container>');
-
- $compile(container1)(rootScope);
- $compile(container2)(rootScope);
- rootScope.$digest();
-
- var scope1 = container1.scope();
- var scope2 = container2.scope();
-
- toaster.pop({ type: 'info', body: 'toast 1', toasterId: 1 });
- toaster.pop({ type: 'info', body: 'toast 2', toasterId: 2 });
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(1);
- expect(scope2.toasters.length).toBe(1);
- });
- });
-
- describe('scope._onClearToasts', function (){
- it('should remove all toasts from all containers if toasterId is *', function () {
- var container1 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 1 }"></toaster-container>');
- var container2 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 2 }"></toaster-container>');
-
- $compile(container1)(rootScope);
- $compile(container2)(rootScope);
- rootScope.$digest();
-
- var scope1 = container1.scope();
- var scope2 = container2.scope();
-
- toaster.pop({ type: 'info', body: 'toast 1', toasterId: 1 });
- toaster.pop({ type: 'info', body: 'toast 2', toasterId: 2 });
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(1);
- expect(scope2.toasters.length).toBe(1);
-
- toaster.clear('*');
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(0);
- expect(scope2.toasters.length).toBe(0);
- });
-
- it('should remove all toasts from all containers if config.toasterId and toastId are undefined', function () {
- var container1 = angular.element(
- '<toaster-container toaster-options="{ \'close-button\': false }"></toaster-container>');
- var container2 = angular.element(
- '<toaster-container toaster-options="{ \'close-button\': true }" ></toaster-container>');
-
- $compile(container1)(rootScope);
- $compile(container2)(rootScope);
- rootScope.$digest();
-
- var scope1 = container1.scope();
- var scope2 = container2.scope();
-
- toaster.pop({ type: 'info', body: 'toast 1' });
- toaster.pop({ type: 'info', body: 'toast 2' });
-
- rootScope.$digest();
-
- // since there are two separate instances of the container
- // without a toasterId, both receive the newToast event
- expect(scope1.toasters.length).toBe(2);
- expect(scope2.toasters.length).toBe(2);
-
- toaster.clear();
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(0);
- expect(scope2.toasters.length).toBe(0);
- });
-
- it('should not remove by toasterId / toastId from the correct container if toast.toasterId is defined and toast.toastId is undefined', function () {
- var container1 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 1 }"></toaster-container>');
- var container2 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 2 }"></toaster-container>');
-
- $compile(container1)(rootScope);
- $compile(container2)(rootScope);
- rootScope.$digest();
-
- var scope1 = container1.scope();
- var scope2 = container2.scope();
-
- // removeAllToasts explicitly looks for toast.uid, which is only set
- // if toastId is passed as a parameter
- toaster.pop({ type: 'info', body: 'toast 1', toasterId: 1 });
- toaster.pop({ type: 'info', body: 'toast 2', toasterId: 2 });
- toaster.pop({ type: 'info', body: 'toast 3', toasterId: 2 });
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(1);
- expect(scope2.toasters.length).toBe(2);
-
- toaster.clear(2, 1);
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(1);
- expect(scope2.toasters.length).toBe(2);
- });
-
- it('should remove by toasterId / toastId from the correct container if toasterId is defined and toastId is defined', function () {
- var container1 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 1 }"></toaster-container>');
- var container2 = angular.element(
- '<toaster-container toaster-options="{ \'toaster-id\': 2 }"></toaster-container>');
-
- $compile(container1)(rootScope);
- $compile(container2)(rootScope);
- rootScope.$digest();
-
- var scope1 = container1.scope();
- var scope2 = container2.scope();
-
- // removeAllToasts explicitly looks for toast.uid, which is only set
- // if toastId is passed as a parameter
- toaster.pop({ type: 'info', body: 'toast 1', toasterId: 1, toastId: 1 });
- toaster.pop({ type: 'info', body: 'toast 2', toasterId: 2, toastId: 1 });
- toaster.pop({ type: 'info', body: 'toast 3', toasterId: 2, toastId: 2 });
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(1);
- expect(scope2.toasters.length).toBe(2);
-
- toaster.clear(2, 1);
-
- rootScope.$digest();
-
- expect(scope1.toasters.length).toBe(1);
- expect(scope2.toasters.length).toBe(1);
- });
- });
-});
-
-
-describe('toasterContainer', function () {
- var $interval, $intervalSpy;
-
- inject(function (_$interval_) {
- $interval = _$interval_;
- });
-
- beforeEach(function () {
- $intervalSpy = jasmine.createSpy('$interval', $interval);
-
- module('toaster', function ($provide) {
- $provide.value('$interval', $intervalSpy);
- });
-
- // inject the toaster service
- inject(function (_toaster_, _$rootScope_, _$compile_) {
- toaster = _toaster_;
- rootScope = _$rootScope_;
- $compile = _$compile_;
- });
- });
-
- it('should use the toast.timeout argument if it is a valid number', function () {
- var container = compileContainer();
- var scope = container.scope();
-
- spyOn(scope, 'configureTimer').and.callThrough();
-
- toaster.pop({ timeout: 2 });
-
- expect(scope.configureTimer).toHaveBeenCalled();
- expect(scope.configureTimer.calls.allArgs()[0][0].timeout).toBe(2);
- expect($intervalSpy.calls.first().args[1]).toBe(2)
- });
-
- it('should not use the toast.timeout argument if not a valid number', function () {
- var container = compileContainer();
- var scope = container.scope();
-
- spyOn(scope, 'configureTimer').and.callThrough();
-
- toaster.pop({ timeout: "2" });
-
- expect(scope.configureTimer).toHaveBeenCalled();
- expect(scope.configureTimer.calls.allArgs()[0][0].timeout).toBe("2");
- expect($intervalSpy.calls.first().args[1]).toBe(5000);
- });
-
- it('should call scope.removeToast when toast.timeoutPromise expires', function () {
- var container = compileContainer();
- var scope = container.scope();
-
- spyOn(scope, 'removeToast').and.callThrough();
-
- toaster.pop({ timeout: 2 });
-
- $intervalSpy.calls.first().args[0]();
-
- rootScope.$digest();
-
- expect(scope.removeToast).toHaveBeenCalled();
- });
-
- it('should retrieve timeout by toast type if mergedConfig toast-timeout is an object', function () {
- var element = angular.element(
- '<toaster-container toaster-options="{\'time-out\': {\'toast-info\': 5}}"></toaster-container>');
-
- $compile(element)(rootScope);
- rootScope.$digest();
-
- toaster.pop({ type: 'info' });
-
- expect($intervalSpy.calls.first().args[1]).toBe(5);
- });
-
- it('should not set a timeout if mergedConfig toast-timeout is an object and does not match toast type', function () {
- // TODO: this seems to be a bug in the toast-timeout configuration option.
- // It should fall back to a default value if the toast type configuration
- // does not match the target toast type or throw an exception to warn of an
- // invalid configuration.
-
- var element = angular.element(
- '<toaster-container toaster-options="{\'time-out\': {\'toast-info\': 5}}"></toaster-container>');
-
- $compile(element)(rootScope);
- rootScope.$digest();
-
- toaster.pop({ type: 'warning' });
-
- expect($intervalSpy.calls.all().length).toBe(0);
- });
-});
-
-
-function compileContainer() {
- var element = angular.element('<toaster-container></toaster-container>');
- $compile(element)(rootScope);
- rootScope.$digest();
-
- return element;
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/35bcfcae/ui/bower_components/AngularJS-Toaster/test/toasterEventRegistrySpec.js
----------------------------------------------------------------------
diff --git a/ui/bower_components/AngularJS-Toaster/test/toasterEventRegistrySpec.js b/ui/bower_components/AngularJS-Toaster/test/toasterEventRegistrySpec.js
deleted file mode 100644
index 4c8991f..0000000
--- a/ui/bower_components/AngularJS-Toaster/test/toasterEventRegistrySpec.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/* global describe global it global beforeEach global angular global inject global expect */
-
-'use strict';
-
-describe('toasterEventRegistry', function () {
- var toaster, toasterConfig, toasterEventRegistry, rootScope, $compile;
-
- beforeEach(function () {
- // load dependencies
- module('testApp');
- module('toaster')
-
- // inject the toaster service
- inject(function (_toaster_, _toasterConfig_, _toasterEventRegistry_, _$rootScope_, _$compile_) {
- toaster = _toaster_;
- toasterConfig = _toasterConfig_;
- toasterEventRegistry = _toasterEventRegistry_;
- rootScope = _$rootScope_;
- $compile = _$compile_;
- });
- });
-
- it('unsubscribeToNewToastEvent will throw error if newToastEventSubscribers is empty and deregisterNewToast is not defined', function () {
- var hasError = false;
-
- try {
- toasterEventRegistry.unsubscribeToNewToastEvent(function () {});
- } catch(e) {
- expect(e.message.indexOf(' is not a function')).toBeGreaterThan(-1);
- hasError = true;
- }
-
- expect(hasError).toBe(true);
- });
-
- it('unsubscribeToNewToastEvent will not splice if index not found and will not throw error', function () {
- var hasError = false;
- var fakeHandler = function (fakeHandlerId) {};
- toasterEventRegistry.subscribeToNewToastEvent(fakeHandler);
-
- try {
- toasterEventRegistry.unsubscribeToNewToastEvent(function () {});
- } catch(e) {
- hasError = true;
- }
-
- expect(hasError).toBe(false);
- });
-
- it('unsubscribeToClearToastsEvent will throw error if clearToastsEventSubscribers is empty and deregisterClearToasts is not defined', function () {
- var hasError = false;
-
- try {
- toasterEventRegistry.unsubscribeToClearToastsEvent(function () {});
- } catch(e) {
- expect(e.message.indexOf(' is not a function')).toBeGreaterThan(-1);
- hasError = true;
- }
-
- expect(hasError).toBe(true);
- });
-
- it('unsubscribeToClearToastsEvent will not splice if index not found and will not throw error', function () {
- var hasError = false;
- var fakeHandler = function (fakeHandlerId) {};
- toasterEventRegistry.subscribeToClearToastsEvent(fakeHandler);
-
- try {
- toasterEventRegistry.unsubscribeToClearToastsEvent(function () {});
- } catch(e) {
- hasError = true;
- }
-
- expect(hasError).toBe(false);
- });
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/35bcfcae/ui/bower_components/AngularJS-Toaster/test/toasterServiceSpec.js
----------------------------------------------------------------------
diff --git a/ui/bower_components/AngularJS-Toaster/test/toasterServiceSpec.js b/ui/bower_components/AngularJS-Toaster/test/toasterServiceSpec.js
deleted file mode 100644
index 77de3dd..0000000
--- a/ui/bower_components/AngularJS-Toaster/test/toasterServiceSpec.js
+++ /dev/null
@@ -1,136 +0,0 @@
-/* global describe global it global beforeEach global angular global inject global expect */
-
-'use strict';
-
-describe('toasterService', function () {
- var toaster, toasterConfig, rootScope, $compile;
-
- beforeEach(function () {
- // load dependencies
- module('testApp');
- module('toaster')
-
- // inject the toaster service
- inject(function (_toaster_, _toasterConfig_, _$rootScope_, _$compile_) {
- toaster = _toaster_;
- toasterConfig = _toasterConfig_;
- rootScope = _$rootScope_;
- $compile = _$compile_;
- });
- });
-
-
- it('should create an error method from error icon class', function () {
- var container = angular.element('<toaster-container></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0)
-
- expect(toasterConfig['icon-classes'].error).toBe('toast-error');
-
- toaster.error('test', 'test');
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1)
- expect(scope.toasters[0].type).toBe('toast-error');
- });
-
- it('should create an error method from info icon class', function () {
- var container = angular.element('<toaster-container></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0)
-
- expect(toasterConfig['icon-classes'].info).toBe('toast-info');
-
- toaster.info('test', 'test');
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1)
- expect(scope.toasters[0].type).toBe('toast-info');
- });
-
- it('should create an error method from wait icon class', function () {
- var container = angular.element('<toaster-container></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0)
-
- expect(toasterConfig['icon-classes'].wait).toBe('toast-wait');
-
- toaster.wait('test', 'test');
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1)
- expect(scope.toasters[0].type).toBe('toast-wait');
- });
-
- it('should create an error method from success icon class', function () {
- var container = angular.element('<toaster-container></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0)
-
- expect(toasterConfig['icon-classes'].success).toBe('toast-success');
-
- toaster.success('test', 'test');
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1)
- expect(scope.toasters[0].type).toBe('toast-success');
- });
-
- it('should create an error method from warning icon class', function () {
- var container = angular.element('<toaster-container></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0)
-
- expect(toasterConfig['icon-classes'].warning).toBe('toast-warning');
-
- toaster.warning('test', 'test');
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1)
- expect(scope.toasters[0].type).toBe('toast-warning');
- });
-
- it('should create a method from the icon class that takes an object', function () {
- var container = angular.element('<toaster-container></toaster-container>');
-
- $compile(container)(rootScope);
- rootScope.$digest();
- var scope = container.scope();
-
- expect(scope.toasters.length).toBe(0)
-
- expect(toasterConfig['icon-classes'].error).toBe('toast-error');
-
- toaster.error({ title: 'test', body: 'test'});
-
- rootScope.$digest();
-
- expect(scope.toasters.length).toBe(1)
- expect(scope.toasters[0].type).toBe('toast-error');
- });
-});
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-griffin/blob/35bcfcae/ui/bower_components/AngularJS-Toaster/toaster.css
----------------------------------------------------------------------
diff --git a/ui/bower_components/AngularJS-Toaster/toaster.css b/ui/bower_components/AngularJS-Toaster/toaster.css
deleted file mode 100644
index fa09eb0..0000000
--- a/ui/bower_components/AngularJS-Toaster/toaster.css
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Toastr
- * Version 2.0.1
- * Copyright 2012 John Papa and Hans Fjallemark.
- * All Rights Reserved.
- * Use, reproduction, distribution, and modification of this code is subject to the terms and
- * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
- *
- * Author: John Papa and Hans Fjallemark
- * Project: https://github.com/CodeSeven/toastr
- */
-.toast-title {
- font-weight: bold;
-}
-.toast-message {
- -ms-word-wrap: break-word;
- word-wrap: break-word;
-}
-.toast-message a,
-.toast-message label {
- color: #ffffff;
-}
-.toast-message a:hover {
- color: #cccccc;
- text-decoration: none;
-}
-
-.toast-close-button {
- position: relative;
- right: -0.3em;
- top: -0.3em;
- float: right;
- font-size: 20px;
- font-weight: bold;
- color: #ffffff;
- -webkit-text-shadow: 0 1px 0 #ffffff;
- text-shadow: 0 1px 0 #ffffff;
- opacity: 0.8;
- -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
- filter: alpha(opacity=80);
-}
-.toast-close-button:hover,
-.toast-close-button:focus {
- color: #000000;
- text-decoration: none;
- cursor: pointer;
- opacity: 0.4;
- -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
- filter: alpha(opacity=40);
-}
-
-/*Additional properties for button version
- iOS requires the button element instead of an anchor tag.
- If you want the anchor version, it requires `href="#"`.*/
-button.toast-close-button {
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
- -webkit-appearance: none;
-}
-.toast-top-full-width {
- top: 0;
- right: 0;
- width: 100%;
-}
-.toast-bottom-full-width {
- bottom: 0;
- right: 0;
- width: 100%;
-}
-.toast-top-left {
- top: 12px;
- left: 12px;
-}
-.toast-top-center {
- top: 12px;
-}
-.toast-top-right {
- top: 12px;
- right: 12px;
-}
-.toast-bottom-right {
- right: 12px;
- bottom: 12px;
-}
-.toast-bottom-center {
- bottom: 12px;
-}
-.toast-bottom-left {
- bottom: 12px;
- left: 12px;
-}
-.toast-center {
- top: 45%;
-}
-#toast-container {
- position: fixed;
- z-index: 999999;
- pointer-events: auto;
- /*overrides*/
-
-}
-#toast-container.toast-center,
-#toast-container.toast-top-center,
-#toast-container.toast-bottom-center{
- width: 100%;
- pointer-events: none;
-}
-#toast-container.toast-center > div,
-#toast-container.toast-top-center > div,
-#toast-container.toast-bottom-center > div{
- margin: auto;
- pointer-events: auto;
-}
-#toast-container.toast-center > button,
-#toast-container.toast-top-center > button,
-#toast-container.toast-bottom-center > button{
- pointer-events: auto;
-}
-#toast-container * {
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
-}
-#toast-container > div {
- margin: 0 0 6px;
- padding: 15px 15px 15px 50px;
- width: 300px;
- -moz-border-radius: 3px 3px 3px 3px;
- -webkit-border-radius: 3px 3px 3px 3px;
- border-radius: 3px 3px 3px 3px;
- background-position: 15px center;
- background-repeat: no-repeat;
- -moz-box-shadow: 0 0 12px #999999;
- -webkit-box-shadow: 0 0 12px #999999;
- box-shadow: 0 0 12px #999999;
- color: #ffffff;
- opacity: 0.8;
- -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
- filter: alpha(opacity=80);
-}
-#toast-container > :hover {
- -moz-box-shadow: 0 0 12px #000000;
- -webkit-box-shadow: 0 0 12px #000000;
- box-shadow: 0 0 12px #000000;
- opacity: 1;
- -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
- filter: alpha(opacity=100);
- cursor: pointer;
-}
-#toast-container > .toast-info {
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
-}
-#toast-container > .toast-wait {
- background-image: url("data:image/gif;base64,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") !important;
-}
-#toast-container > .toast-error {
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
-}
-#toast-container > .toast-success {
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
-}
-#toast-container > .toast-warning {
- background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
-}
-#toast-container.toast-top-full-width > div,
-#toast-container.toast-bottom-full-width > div {
- width: 96%;
- margin: auto;
-}
-.toast {
- background-color: #030303;
-}
-.toast-success {
- background-color: #51a351;
-}
-.toast-error {
- background-color: #bd362f;
-}
-.toast-info {
- background-color: #2f96b4;
-}
-.toast-wait {
- background-color: #2f96b4;
-}
-.toast-warning {
- background-color: #f89406;
-}
-/*Responsive Design*/
-@media all and (max-width: 240px) {
- #toast-container > div {
- padding: 8px 8px 8px 50px;
- width: 11em;
- }
- #toast-container .toast-close-button {
- right: -0.2em;
- top: -0.2em;
-}
- }
-@media all and (min-width: 241px) and (max-width: 480px) {
- #toast-container > div {
- padding: 8px 8px 8px 50px;
- width: 18em;
- }
- #toast-container .toast-close-button {
- right: -0.2em;
- top: -0.2em;
-}
-}
-@media all and (min-width: 481px) and (max-width: 768px) {
- #toast-container > div {
- padding: 15px 15px 15px 50px;
- width: 25em;
- }
-}
-
- /*
- * AngularJS-Toaster
- * Version 0.3
- */
-:not(.no-enter)#toast-container > div.ng-enter,
-:not(.no-leave)#toast-container > div.ng-leave
-{
- -webkit-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
- -moz-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
- -ms-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
- -o-transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
- transition: 1000ms cubic-bezier(0.250, 0.250, 0.750, 0.750) all;
-}
-
-:not(.no-enter)#toast-container > div.ng-enter.ng-enter-active,
-:not(.no-leave)#toast-container > div.ng-leave {
- opacity: 0.8;
-}
-
-:not(.no-leave)#toast-container > div.ng-leave.ng-leave-active,
-:not(.no-enter)#toast-container > div.ng-enter {
- opacity: 0;
-}
\ No newline at end of file