From a9ff54e7490761a7c0ad572d060ee386179d11df Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Sun, 12 Aug 2012 23:45:00 -0700 Subject: adding test cases for Jasmine Signed-off-by: Valerio Virgillito --- tests/unit-tests/styles-controller-test.js | 143 +++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 tests/unit-tests/styles-controller-test.js (limited to 'tests/unit-tests/styles-controller-test.js') diff --git a/tests/unit-tests/styles-controller-test.js b/tests/unit-tests/styles-controller-test.js new file mode 100644 index 00000000..b98c2f51 --- /dev/null +++ b/tests/unit-tests/styles-controller-test.js @@ -0,0 +1,143 @@ +/** + * Created by JetBrains WebStorm. + * User: kfg834 + * Date: 12/27/11 + * Time: 10:52 AM + * To change this template use File | Settings | File Templates. + */ +var Montage = require("montage/core/core").Montage; +var cmObject = require("ninjaapp/js/controllers/styles-controller"), + cm = cmObject.StylesController; + + +describe('StylesController', function() { + + + function makeAndAppend(tag, attr) { + var el = document.createElement(tag); + if (typeof attr === 'object') { + for (var a in attr) { + if (attr.hasOwnProperty(a)) { + el[a] = attr[a]; + } + } + } else if (typeof attr === 'string') { + el.className = (el.className + ' ' + attr).trim(); + } + + document.body.appendChild(el); + + return el; + } + + /** **************** Rule tests **************** */ + + + /* Add a Rule */ + describe('addRule', function() { + it('Add Rule', function() { + cm.activeDocument = { "_document": document }; + var rule = cm.addRule('div#Div_1 { background-color: rgb(0, 0, 0) }'); + expect(rule.cssText).toEqual("div#Div_1 { background-color: rgb(0, 0, 0); }"); + + }); + + }); + + /* Create OverRide Rule */ + describe('createOverrideRule', function() { + it('Override rule created successfully', function() { + var object = sm.createOverrideRule('div#Div_1 { background-color: black }', 'div'); + expect(object.rule).toEqual("div#Div_1 { background-color: black }"); + + }); + + }); + + + /*Delete a Rule*/ + describe('Delete Rule', function() { + it('Rule deleted successfully', function() { + var index = sm.deleteRule('div#Div_1 { background-color: black }'); + expect(index).toBeGreaterThan(-1); + }); + + }); + + + /* Get Dominant Rule for an Element */ + describe('GetDominantRule-Element', function() { + + it('Got Dominant rule for element successfully', function() { + + var rules = ['div#Div_1 { background-color: black }', + '#UserContent div#Div_1 { background-color: blue }', + '#UserContent #Div_1 { background-color: white }', + 'div div#Div_1 { background-color: red }']; + + rules.forEach(function(rule) { + stylesController.addRule(rule); + }); + + var rule = sm.getDominantRuleForElement('div','background-color',true); + expect(rule).toEqual("#UserContent div#Div_1 { background-color: blue }"); + + }); + + }); + + /* Disable a Rule */ + describe('DisableRule', function() { + + it('Rule disabled successfully', function() { + //Type of rule is not a number + var rule = sm.disableRule('div#Div_1 { background-color: black }'); + expect(rule).toEqual('div#Div_1'+ sm.CONST.GARBAGE_SELECTOR); + + }); + + }); + + + /* Enable a Rule */ + describe('EnableRule', function() { + it('Rule enabled successfully', function() { + + //Type of rule is not a number + var rule = sm.enableRule('div#Div_1 { background-color: black }'); + expect(rule.selectorText).toEqual('div#Div_1'); + + //Type of rule is a number ie index + var rule = sm.enableRule('div#Div_1 { background-color: black }'); + expect(rule).toEqual("div#Div_1 { background-color: black }"); + + }); + + }); + + + /* Set Rule Selector */ + describe('SetRuleSelector', function() { + + it('Set Rule Selector successfully', function() { + var rule = sm.setRuleSelector('div#Div_1 { background-color: black }', 'Div'); + expect(rule).toEqual("Div { background-color: black }"); + expect(rule.specificity.specificity.id).toEqual(0); + //expect(rule.specificity.specificity.class).toEqual(0); + expect(rule.specificity.specificity.element).toEqual(1); + }); + + }); + + + /*Calculate Specificity */ + describe('Calculate Specificity', function() { + + it('Calculated specificity successfully', function() { + var specificity = sm.calculateSpecificity(0,1); + expect(specificity.specificity[2]).toEqual(1); + }); + + }); + +}); \ No newline at end of file -- cgit v1.2.3