Skip to content
Snippets Groups Projects
LowAndHighTrackSpec.js 5.38 KiB
Newer Older
  • Learn to ignore specific revisions
  • Laura Cappelli's avatar
    Laura Cappelli committed
    /*
    	**********************
    
    	Left/Right Track Tests
    
    	**********************
    
    	This spec has tests for checking that the widths of the left and right
    	segments are the correct widths and colors, based on their CSS.
     */
    describe("Low/High Track Tests", function() {
    
    	var unstyledID = "low-high-slider";
    	var styledID = "low-high-slider-styled";
    
    	var testSlider;
    
    	describe("Single-value sliders, no styling", function() {
    
    		var id = unstyledID;
    
    		beforeEach(function() {
    			testSlider = $("#testSlider1").slider({
    				id: id,
    				min: 0,
    				max: 10,
    				value: 5
    			});
    		});
    
    		it("low track width is zero", function()
    		{
    			var leftTrack = $("#" + id + " .slider-track-low");
    			expect($(leftTrack).css("width")).toBe("0px");
    		});
    
    		it("high track width is 50%", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var trackWidth = rightTrack.parent().width();
    			expect($(rightTrack).css("width")).toBe((trackWidth / 2) + "px");
    		});
    
    		it("high track is transparent", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var rightColor = rightTrack.css("background-color");
    			var isTransparent = rightColor.match(/rgba\([0-9]{1,3}, [0-9]{1,3}, [0-9]{1,3}, 0\)/);
    			expect(isTransparent).toBeTruthy();
    		});
    
    		afterEach(function() {
    			if(testSlider) {
    				testSlider.slider('destroy');
    				testSlider = null;
    			}
    		});
    	});
    
    	describe("Single-value sliders, with styling", function() {
    
    		var id = styledID;
    
    		beforeEach(function() {
    			testSlider = $("#testSlider1").slider({
    				id: id,
    				min: 0,
    				max: 10,
    				value: 5
    			});
    		});
    
    		it("low track width is zero", function()
    		{
    			var leftTrack = $("#" + id + " .slider-track-low");
    			expect($(leftTrack).css("width")).toBe("0px");
    		});
    
    		it("high track width is 50%", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var trackWidth = rightTrack.parent().width();
    			expect($(rightTrack).css("width")).toBe((trackWidth / 2) + "px");
    		});
    
    		it("high track is red", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var rightColor = rightTrack.css("background-color");
    			expect(rightColor).toBe("rgb(255, 0, 0)");
    		});
    
    		afterEach(function() {
    			if(testSlider) {
    				testSlider.slider('destroy');
    				testSlider = null;
    			}
    		});
    	});
    
    	describe("Range sliders, no styling", function() {
    
    		var id = unstyledID;
    		var values = {
    			min: 0,
    			max: 10,
    			values: [ 4, 6 ]
    		};
    
    		beforeEach(function() {
    			testSlider = $("#testSlider1").slider({
    				id: id,
    				min: values.min,
    				max: values.max,
    				range: true,
    				value: values.values
    			});
    		});
    
    		it("low track width is correct", function()
    		{
    			var leftTrack = $("#" + id + " .slider-track-low");
    
    			var trackWidth = leftTrack.parent().width();
    			var expectedWidth = ((values.values[0] - values.min) / (values.max - values.min)) * trackWidth;
    
    			expect($(leftTrack).css("width")).toBe(expectedWidth + "px");
    		});
    
    		it("high track width is correct", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var trackWidth = rightTrack.parent().width();
    
    			var expectedWidth = ((values.max - values.values[1]) / (values.max - values.min)) * trackWidth;
    
    			expect($(rightTrack).css("width")).toBe(expectedWidth + "px");
    		});
    
    		it("low track is transparent", function()
    		{
    			var leftTrack = $("#" + id + " .slider-track-low");
    			var leftColor = leftTrack.css("background-color");
    			var isTransparent = leftColor.match(/rgba\([0-9]{1,3}, [0-9]{1,3}, [0-9]{1,3}, 0\)/);
    			expect(isTransparent).toBeTruthy();
    		});
    
    		it("high track is transparent", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var rightColor = rightTrack.css("background-color");
    			var isTransparent = rightColor.match(/rgba\([0-9]{1,3}, [0-9]{1,3}, [0-9]{1,3}, 0\)/);
    			expect(isTransparent).toBeTruthy();
    		});
    
    		afterEach(function() {
    			if(testSlider) {
    				testSlider.slider('destroy');
    				testSlider = null;
    			}
    		});
    	});
    
    	describe("Range sliders, with styling", function() {
    
    		var id = styledID;
    		var values = {
    			min: 0,
    			max: 10,
    			values: [ 4, 6 ]
    		};
    
    		beforeEach(function() {
    			testSlider = $("#testSlider1").slider({
    				id: id,
    				min: values.min,
    				max: values.max,
    				range: true,
    				value: values.values
    			});
    		});
    
    		it("low track width is correct", function()
    		{
    			var leftTrack = $("#" + id + " .slider-track-low");
    
    			var trackWidth = leftTrack.parent().width();
    			var expectedWidth = ((values.values[0] - values.min) / (values.max - values.min)) * trackWidth;
    
    			expect($(leftTrack).css("width")).toBe(expectedWidth + "px");
    		});
    
    		it("high track width is correct", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var trackWidth = rightTrack.parent().width();
    
    			var expectedWidth = ((values.max - values.values[1]) / (values.max - values.min)) * trackWidth;
    
    			expect($(rightTrack).css("width")).toBe(expectedWidth + "px");
    		});
    
    		it("low track is green", function()
    		{
    			var leftTrack = $("#" + id + " .slider-track-low");
    			var leftColor = leftTrack.css("background-color");
    			expect(leftColor).toBe("rgb(0, 255, 0)");
    		});
    
    		it("high track is red", function()
    		{
    			var rightTrack = $("#" + id + " .slider-track-high");
    			var rightColor = rightTrack.css("background-color");
    			expect(rightColor).toBe("rgb(255, 0, 0)");
    		});
    
    		afterEach(function() {
    			if(testSlider) {
    				testSlider.slider('destroy');
    				testSlider = null;
    			}
    		});
    	});
    });