Run Jasmine Unit Tests In JSFiddle

Starting point for running unit tests with Jasmine in JSFiddle. Simply fork this fiddle to get started.

by Alex Alex

HTML

<link rel="stylesheet" href="//cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script src="//cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script src="//cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>

JavaScript

let menuItems
let level
//	Unit tests setup function
function setUp(items, lvl) {
	menuItems = items
  level = lvl
}

function printMenu(items) {
    if (!items) {
        items = menuItems.filter(item => !item.parentId);
    }
    items.sort(({name: a}, {name: b}) => a.localeCompare(b));
    for (let i = 0; i < items.length; i++) {
        let item = items[i];
        if (item.isHidden) {
            continue;
        }
        const children = menuItems.filter(({parentId}) => item.id === parentId);
        console.log(`.${"...".repeat(level)} ${item.name}`);
        if (children.length) {
            level++;
            printMenu(children, level);
            level--;
        }
    }
}

describe("Checking printMenu", function(){
    it("printMenu 11 times", function(){
       	setUp([
           {id: 1, name: 'Company', parentId: null, isHidden: false},
           {id: 2, name: 'About Us', parentId: 1, isHidden: false},
           {id: 11, name: 'Contact', parentId: 1, isHidden: false},
           {id: 3, name: 'Mission', parentId: 1, isHidden: false},
           {id: 12, name: 'Goals', parentId: 3, isHidden: false},
           {id: 13, name: '2021', parentId: 12, isHidden: false},
           {id: 4, name: 'Team', parentId: 2, isHidden: false},
           {id: 5, name: 'Client 2', parentId: 10, isHidden: false},
           {id: 6, name: 'Client 1', parentId: 10, isHidden: false},
           {id: 7, name: 'Client 4', parentId: 10, isHidden: true},
           {id: 8, name: 'Client 5', parentId: 20, isHidden: false},
           {id: 10, name: 'References', parentId: null, isHidden: false},
           {id: 14, name: 'Prices', parentId: null, isHidden: false},
        ], 0)
        let counter = 0
        let output = ''
        console.log = function(str) {
        	counter++
          if (counter === 9) {
         		output = str
          }
        }
        printMenu()
        expect(counter).toBe(11)
      	expect(output).toBe('. References')
    });
    
 ...