Skip to content

Commit

Permalink
more unit tests (#325)
Browse files Browse the repository at this point in the history
* use the last version of grunt-bump which does not require grunt version >1.0.0 as this conflicts with other dependencies

* add some custom matchers, refactor switch tests, added trigger tests

* cleanup after tests + fixed import
  • Loading branch information
peuter authored and ChristianMayer committed Apr 25, 2016
1 parent 1deb812 commit 3dbdc9d
Show file tree
Hide file tree
Showing 3 changed files with 168 additions and 8 deletions.
49 changes: 49 additions & 0 deletions test/karma/helper-spec.js
@@ -0,0 +1,49 @@
/**
* CustomMatcher factory for CometVisu specific matchers
*
* @author tobiasb
* @since 2016
*/

define([], function() {

var customMatchers = {
toHaveFlavour: function() {
return {
compare: function(actual, expected) {
var result = {};

result.pass = actual.hasClass('flavour_'+expected);
if (result.pass) {
result.message = "Expected " + actual.prop("tagName") + " not to be flavoured with "+expected;
}
else{
result.message = "Expected " + actual.prop("tagName") + " to be flavoured with "+expected+", but is was not";
}
return result;
}
};
},

toHaveClass: function() {
return {
compare: function(actual, expected) {
var result = {};

result.pass = actual.hasClass(expected);
if (result.pass) {
result.message = "Expected " + actual.prop("tagName") + " not to have class "+expected;
}
else{
result.message = "Expected " + actual.prop("tagName") + " to have class "+expected+", but it does not";
}
return result;
}
};
}
};

beforeEach(function() {
jasmine.addMatchers(customMatchers);
});
});
33 changes: 25 additions & 8 deletions test/karma/structure/pure/Switch-spec.js
Expand Up @@ -8,6 +8,7 @@
define( ['TemplateEngine', '_common', 'CometVisuMockup', 'widget_switch'], function(engine, design, ClientMockup) {

describe("testing a switch", function() {

var templateEngine = engine.getInstance();
templateEngine.visu = new ClientMockup();

Expand All @@ -17,8 +18,21 @@ define( ['TemplateEngine', '_common', 'CometVisuMockup', 'widget_switch'], funct
var xml = document.createElement('template');
xml.innerHTML = '<switch><label>Test</label><address transform="DPT:1.001" mode="readwrite">12/7/37</address></switch>';
xml = xml.firstChild;
var switchString = creator.create(xml, 'id_0', 'potassium', 'switch');
expect(switchString).toBe('<div class="widget clearfix switch flavour_potassium" ><div class="label">Test</div><div class="actor switchUnpressed"><div class="value">-</div></div></div>');
var switchWidget = $(creator.create(xml, 'id_0', 'potassium', 'switch'));

expect(switchWidget).toHaveFlavour('potassium');
var actor = switchWidget.find(".actor");
expect(actor).not.toBeNull();
expect(actor).toHaveClass("switchUnpressed");
expect(actor).not.toHaveClass("switchPressed");

var value = actor.find(".value");
expect(value).not.toBeNull();
expect(value.text()).toBe("-");

var label = switchWidget.find(".label");
expect(label).not.toBeNull();
expect(label.text()).toBe("Test");

var data = templateEngine.widgetDataGet('id_0');
expect(data.on_value).toBe(1);
Expand All @@ -31,8 +45,7 @@ define( ['TemplateEngine', '_common', 'CometVisuMockup', 'widget_switch'], funct
var xml = document.createElement('template');
xml.innerHTML = '<switch on_value="turn_on" off_value="turn_off"><label>Test</label><address transform="DPT:1.001" mode="readwrite">12/7/37</address></switch>';
xml = xml.firstChild;
var switchString = creator.create(xml, 'id_0', 'potassium', 'switch');
expect(switchString).toBe('<div class="widget clearfix switch flavour_potassium" ><div class="label">Test</div><div class="actor switchUnpressed"><div class="value">-</div></div></div>');
creator.create(xml, 'id_0', 'potassium', 'switch');

var data = templateEngine.widgetDataGet('id_0');
expect(data.on_value).toBe('turn_on');
Expand All @@ -56,12 +69,14 @@ define( ['TemplateEngine', '_common', 'CometVisuMockup', 'widget_switch'], funct
var actor = $(container.children[0].querySelectorAll('.actor')[0]);
expect(actor).not.toBe(null);

expect(actor.hasClass('switchPressed')).toBeTruthy();
expect(actor.hasClass('switchUnpressed')).toBeFalsy();
expect(actor).toHaveClass("switchPressed");
expect(actor).not.toHaveClass("switchUnpressed");

creator.update.call(container.children[0],'12/7/37', 0);
expect(actor.hasClass('switchPressed')).toBeFalsy();
expect(actor.hasClass('switchUnpressed')).toBeTruthy();
expect(actor).toHaveClass("switchUnpressed");
expect(actor).not.toHaveClass("switchPressed");

document.body.removeChild(container);
});

it('should trigger the switch action', function() {
Expand Down Expand Up @@ -92,6 +107,8 @@ define( ['TemplateEngine', '_common', 'CometVisuMockup', 'widget_switch'], funct

creator.action('id_0', actor, false);
expect(templateEngine.visu.write).toHaveBeenCalledWith('12/7/37', '80');

document.body.removeChild(container);
});
});
});
94 changes: 94 additions & 0 deletions test/karma/structure/pure/Trigger-spec.js
@@ -0,0 +1,94 @@
/**
* Unit tests for trigger widget
*
* @author Tobias Bräutigam
* @since 2016
*/

define( ['jquery', 'TemplateEngine', '_common', 'CometVisuMockup', 'widget_switch'], function($, engine, design, ClientMockup) {

describe("testing a trigger", function() {
var templateEngine = engine.getInstance();
templateEngine.visu = new ClientMockup();
var creator = design.basicdesign.getCreator("trigger");
var container;

beforeEach(function() {

var xml = document.createElement('template');
xml.innerHTML = '<trigger value="1" shortvalue="0" shorttime="100" flavour="potassium"><label>Test</label><address transform="DPT:1.001" mode="readwrite">12/7/37</address></trigger>';
xml = xml.firstChild;
var triggerString = creator.create(xml, 'id_0', null, 'trigger');

container = document.createElement('div');
container.setAttribute("class","widget_container");
container.setAttribute("id", 'id_0');
container.innerHTML = triggerString;
document.body.appendChild(container);

});

afterEach(function() {
document.body.removeChild(container);
});

it("should test the switch creator", function() {

var widget = $('#id_0 .widget');

expect(widget).toHaveFlavour('potassium');

var actor = widget.find(".actor");
expect(actor).not.toBeNull();
expect(actor).toHaveClass("switchUnpressed");
expect(actor).not.toHaveClass("switchPressed");

var value = actor.find(".value");
expect(value).not.toBeNull();
expect(value.text()).toBe("");

templateEngine.postDOMSetupFns.forEach( function( thisFn ){
thisFn();
});

expect(value.text()).toBe("1");

var label = widget.find(".label");
expect(label).not.toBeNull();
expect(label.text()).toBe("Test");

var data = templateEngine.widgetDataGet('id_0');
expect(data.sendValue).toBe("1");
expect(data.shortValue).toBe("0");
expect(data.shorttime).toBe(100);

});

it('should trigger the trigger downaction', function() {
spyOn(templateEngine.visu, 'write');

var actor = container.children[0].querySelectorAll('.actor')[0];
expect(actor).not.toBe(null);

//downaction
creator.downaction('id_0', actor);
expect($(actor)).toHaveClass("switchPressed");
expect($(actor)).not.toHaveClass("switchUnpressed");

//canceled call
creator.action('id_0', actor, true);
expect(templateEngine.visu.write).not.toHaveBeenCalled();

//simulate longpress
templateEngine.handleMouseEvent.downtime = Date.now()-150;
creator.action('id_0', actor, false);
expect(templateEngine.visu.write).toHaveBeenCalledWith('12/7/37', '81');


//simulate shortpress
templateEngine.handleMouseEvent.downtime = Date.now()-50;
creator.action('id_0', actor, false);
expect(templateEngine.visu.write).toHaveBeenCalledWith('12/7/37', '80');
});
});
});

0 comments on commit 3dbdc9d

Please sign in to comment.