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')
});
...