Closest to Zero

by prakgarnly

HTML

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine-html.js"></script>
<title>Jasmine Spec Runner</title>
<ul>
<li>4</li>
<li>4</li>
<li>6</li>
<li>1</li>
<li>-2</li>
<li>99</li>
</ul>

JavaScript

var model = {
  numbers = document.getElementsByTagName('li');    
}




/* */


describe('Jasmine Spy/Mock exercise', function () {

    it('has no spies and calls the real functions', function () {
        var mine = control;
        mine.init(model)

        expect(mine.data.length).toBe(4);
        expect(mine.data[0].id).toBe(1);
    });

    it('spies and returns faked object', function () {
        spyOn(model, 'find').andReturn([{id:4}]);
        
        var mine = control;
        mine.init(model)

        expect(mine.data.length).toBe(1);
        expect(mine.data[0].id).toBe(4);
        expect(model.find).toHaveBeenCalledWith('3');
    });

   
    it('spy and call a function', function () {
        spyOn(model, 'find').andCallFake(function(term){
            return [{id:56}];
        });
        
        var mine = control;
        mine.init(model)

        expect(mine.data.length).toBe(1);
        expect(mine.data[0].id).toBe(56);
        expect(model.find).toHaveBeenCalledWith('3');
    });

    it('spy and call thru', function () {
        spyOn(model, 'find').andCallThrough();
        
        var mine = control;
        mine.init(model)

        expect(mine.data.length).toBe(4);
        expect(mine.data[0].id).toBe(1);
        expect(model.find).toHaveBeenCalledWith('3');
    });
   
    
});


// load jasmine htmlReporter
$(function() {
  var env = jasmine.getEnv();
  env.addReporter(new jasmine.HtmlReporter());
  env.execute();
});