UNPKG

2.53 kBJavaScriptView Raw
1'use strict';
2
3var hasOwnProperty = require('../src/hasOwnProperty'),
4 assert = require('chai').assert;
5
6describe('hasOwnProperty', function() {
7 it('returns a function if only property provided', function() {
8 assert.ok(hasOwnProperty('property') instanceof Function);
9 });
10
11 it('throws a TypeError is property is not a string', function() {
12 assert.throws(function() {
13 hasOwnProperty({});
14 }, TypeError, /must be a string/);
15
16 assert.throws(function() {
17 hasOwnProperty({})({});
18 }, TypeError, /must be a string/);
19 });
20
21 it('checks whether an object has own property', function() {
22 var objectWithUndefinedProperty = {
23 property: undefined
24 },
25 objectWithNotEnumerableProperty = {},
26 objectWithProperty = {
27 property: 'value'
28 },
29 objectWithPropertyInPrototype = Object.create({
30 property: 'value'
31 }),
32 objectWithoutPrototype = Object.create(null);
33
34 objectWithoutPrototype.property = 'value';
35
36 Object.defineProperty(objectWithNotEnumerableProperty, 'property', {
37 enumerable: false,
38 value: 10
39 });
40
41 assert.ok(hasOwnProperty('property'), objectWithUndefinedProperty);
42 assert.ok(hasOwnProperty('property', objectWithUndefinedProperty));
43 assert.ok(hasOwnProperty('property', objectWithNotEnumerableProperty));
44 assert.ok(hasOwnProperty('property')(objectWithNotEnumerableProperty));
45 assert.ok(hasOwnProperty('property', objectWithProperty));
46 assert.ok(hasOwnProperty('property')(objectWithProperty));
47 assert.ok(hasOwnProperty('property', objectWithPropertyInPrototype) === false);
48 assert.ok(hasOwnProperty('property')(objectWithPropertyInPrototype) === false);
49 assert.ok(hasOwnProperty('property', objectWithoutPrototype));
50 assert.ok(hasOwnProperty('property')(objectWithoutPrototype));
51 assert.ok(hasOwnProperty('property', {}) === false);
52 assert.ok(hasOwnProperty('property')({}) === false);
53 assert.ok(hasOwnProperty('property', null) === false);
54 assert.ok(hasOwnProperty('property')(null) === false);
55 assert.ok(hasOwnProperty('property', 'str') === false);
56 assert.ok(hasOwnProperty('property')('str') === false);
57 assert.ok(hasOwnProperty('property', []) === false);
58 assert.ok(hasOwnProperty('property')([]) === false);
59 });
60});