community-app/test/spec/directives/OverlayDirectiveSpec.js
2014-03-02 04:09:27 -08:00

96 lines
3.9 KiB
JavaScript

describe("overlayDirective", function () {
var eventsCallbacks, scope;
beforeEach(function () {
eventsCallbacks = {};
$ = jQuery = jasmine.createSpy('jQuery');
$.blockUI = jasmine.createSpy('$.blockUI');
$.unblockUI = jasmine.createSpy('$.unblockUI');
$.blockUI.defaults = {};
scope = {
$eval: jasmine.createSpy("$scope.$eval").andCallFake(function (expr) {
if (expr === "test_map") return {show: 'test_event_show1,test_event_show2', hide: 'test_event_hide1,test_event_hide2'};
if (expr === "test_opacity") return {opacity: 'test_value'};
}),
$on: jasmine.createSpy("$scope.$on").andCallFake(function (eventName, callback) {
eventsCallbacks[eventName] = callback;
})
};
this.linkFunction = mifosX.directives.overlayDirective();
});
describe("Event mapping", function () {
beforeEach(function () {
this.linkFunction(scope, "test-element", {mfOverlay: "test_map"});
});
it("should reset the default css options", function () {
expect($.blockUI.defaults.css).toEqual({});
});
_.each(['test_event_show1', 'test_event_show2', 'test_event_hide1', 'test_event_hide2'], function (name) {
it("should setup the " + name + " listener", function () {
expect(scope.$on).toHaveBeenCalledWith(name, jasmine.any(Function));
});
});
});
describe("Action mapping with no target", function () {
beforeEach(function () {
$.andCallFake(function (selector) {
if (selector === "test-element") return "test_message";
});
this.linkFunction(scope, "test-element", {mfOverlay: "test_map", mfOverlayOptions: "test_opacity"});
});
_.each(['test_event_show1', 'test_event_show2'], function (name) {
it("should invoke the blockUI function to display the overlay", function () {
eventsCallbacks[name]();
expect($.blockUI).toHaveBeenCalledWith({
fadeIn: 100,
fadeOut: 200,
message: "test_message",
overlayCSS: {opacity: 'test_value'}
});
});
});
_.each(['test_event_hide1', 'test_event_hide2'], function (name) {
it("should invoke the unblockUI function to hide the overlay", function () {
eventsCallbacks[name]();
expect($.unblockUI).toHaveBeenCalled();
});
});
});
describe("Action mapping with a target", function () {
beforeEach(function () {
$.block = jasmine.createSpy('$.block');
$.unblock = jasmine.createSpy('$.unblock');
$.andCallFake(function (selector) {
if (selector === "test-element") return "test_message";
if (selector === "test_target") return $;
});
this.linkFunction(scope, "test-element", {mfOverlay: "test_map", mfOverlayOptions: "test_opacity", mfOverlayTarget: "test_target"});
});
_.each(['test_event_show1', 'test_event_show2'], function (name) {
it("should invoke the block function to display the overlay", function () {
eventsCallbacks[name]();
expect($.block).toHaveBeenCalledWith({
fadeIn: 100,
fadeOut: 200,
message: "test_message",
overlayCSS: {opacity: 'test_value'}
});
});
});
_.each(['test_event_hide1', 'test_event_hide2'], function (name) {
it("should invoke the unblock function to hide the overlay", function () {
eventsCallbacks[name]();
expect($.unblock).toHaveBeenCalled();
});
});
});
});