mirror of
https://github.com/lancedikson/bowser
synced 2024-10-27 20:34:22 +00:00
e6a39a02f1
Fix for https://github.com/ded/bowser/issues/55 Added Safari as the browser name (this is expected) so that it is consistent with the results for other devices. Updated tests accordingly.
76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
/**
|
|
* Loop through all entries in our user agents object and test everything.
|
|
*
|
|
* @see src/useragents.js
|
|
* @author hannes.diercks@jimdo.com
|
|
*/
|
|
|
|
var g
|
|
, ua
|
|
, p
|
|
, assert = require('assert')
|
|
, browser = require('../src/bowser')
|
|
, allUserAgents = require('../src/useragents').useragents
|
|
|
|
/**
|
|
* Get the length of an object.
|
|
* http://stackoverflow.com/questions/5223/length-of-javascript-object-ie-associative-array
|
|
*
|
|
* @param {Object} obj
|
|
* @return {Number}
|
|
*/
|
|
function objLength(obj) {
|
|
var size = 0
|
|
, key
|
|
for (key in obj) {
|
|
if (obj.hasOwnProperty(key)) size++
|
|
}
|
|
return size
|
|
}
|
|
|
|
function objKeys(obj) {
|
|
var keys = []
|
|
, key
|
|
for (key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
keys.push(key)
|
|
}
|
|
}
|
|
keys.sort();
|
|
return keys.join(', ')
|
|
}
|
|
|
|
/* Groups */
|
|
for (g in allUserAgents) { (function(group, userAgents) {
|
|
describe(group, function() {
|
|
|
|
/* User Agents */
|
|
for (ua in userAgents) { (function(userAgent, expections) {
|
|
describe('user agent "' + userAgent + '"', function() {
|
|
|
|
expections.name = expections.name || group
|
|
|
|
/* Get the result from bowser. */
|
|
var result = browser._detect(userAgent)
|
|
|
|
/* At first, check if the result has the correct length. */
|
|
it('should have ' + objLength(expections) + ' properties', function() {
|
|
assert.equal(objKeys(result), objKeys(expections))
|
|
})
|
|
|
|
/* Properties */
|
|
for (p in expections) { (function(property, value, resultValue) {
|
|
|
|
/* Now ensure correctness of every property. */
|
|
it('\'s Property "' + property + '" should be ' + value, function() {
|
|
assert.equal(resultValue, value)
|
|
})
|
|
|
|
})(p, expections[p], result[p])}
|
|
|
|
})
|
|
})(ua, userAgents[ua])}
|
|
|
|
})
|
|
})(g, allUserAgents[g])}
|