define(["sugar-web/graphics/radiobuttonsgroup"], function ( radioButtonsGroup) { 'use strict'; var elem1; var elem2; var elem3; beforeEach(function () { elem1 = document.createElement('button'); elem2 = document.createElement('button'); elem3 = document.createElement('button'); }); describe("radioToolButton", function () { var wasClicked; it("should construct", function () { var radio = new radioButtonsGroup.RadioButtonsGroup( [elem1, elem2, elem3]); expect(radio.elems.length).toBe(3); }); it("should start active the first by default", function () { var radio = new radioButtonsGroup.RadioButtonsGroup( [elem1, elem2, elem3]); expect(radio.getActive()).toBe(elem1); }); it("should start active the first with 'active' class", function () { elem2.className = "active red"; elem3.className = "active blue"; var radio = new radioButtonsGroup.RadioButtonsGroup( [elem1, elem2, elem3]); expect(radio.getActive()).toBe(elem2); }); it("should add 'active' class to the selected item", function () { var radio = new radioButtonsGroup.RadioButtonsGroup( [elem1, elem2, elem3]); var elem = radio.getActive(); expect(elem.classList.contains('active')).toBe(true); }); it("should change the active one on click", function () { var radio = new radioButtonsGroup.RadioButtonsGroup( [elem1, elem2, elem3]); // let's click elem2 runs(function () { wasClicked = false; elem2.onclick = function () { wasClicked = true; }; elem2.click(); }); waitsFor(function () { return wasClicked; }, "the element should be clicked"); runs(function () { var elem = radio.getActive(); expect(elem).toBe(elem2); expect(elem.classList.contains('active')).toBe(true); }); // now let's click elem1 runs(function () { wasClicked = false; elem1.onclick = function () { wasClicked = true; }; elem1.click(); }); waitsFor(function () { return wasClicked; }, "the element should be clicked"); runs(function () { var elem = radio.getActive(); expect(elem).toBe(elem1); expect(elem.classList.contains('active')).toBe(true); }); }); }); });