Jasmine 2.0.3 - custom matcher - toHaveFirstAndLastName

toHaveFirstAndLastName matcher

HTML

<link rel="stylesheet" href="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine.css">
<script src="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine-2.0.3-concated.js"></script>

JavaScript

var Person = function (firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

describe('Person', function() {
    
    beforeEach(function() {
        jasmine.addMatchers({
            toHaveFirstAndLastName: function () {
                function compare(actual) {
                        var person = actual;
                        return {
                            pass: person.firstName && person.lastName
                        }
                    }
                return {
                    compare: compare
                }
            }
        })
    });

    it('has first and last name', function() {
        var p = new Person('John', 'Doe');
        var r = new Person('Only first name');
        var q = new Person('0', 'undefined');
        expect(p).toEqual(jasmine.any(Person))
        expect(p).toHaveFirstAndLastName();
        expect(r).not.toHaveFirstAndLastName();
        expect(q).toEqual(jasmine.any(Person))
    });
    
});