summaryrefslogtreecommitdiff
path: root/node_modules/ua-parser/js/test/with_fixtures.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/ua-parser/js/test/with_fixtures.js')
-rw-r--r--node_modules/ua-parser/js/test/with_fixtures.js73
1 files changed, 73 insertions, 0 deletions
diff --git a/node_modules/ua-parser/js/test/with_fixtures.js b/node_modules/ua-parser/js/test/with_fixtures.js
new file mode 100644
index 0000000..c632bc9
--- /dev/null
+++ b/node_modules/ua-parser/js/test/with_fixtures.js
@@ -0,0 +1,73 @@
+var assert = require('assert'),
+ path = require('path'),
+ fs = require('fs'),
+ yaml = require('yamlparser'),
+ uaParser = require('../index');
+
+function readYAML(fileName) {
+ var file = path.join(__dirname, '..', '..', 'test_resources', fileName);
+ var fixtures = fs.readFileSync(file, 'utf8');
+ fixtures = yaml.eval(fixtures);
+ return fixtures;
+}
+
+function msg(name, actual, expected) {
+ return "Expected " + name + " to be " + JSON.stringify(expected) + " got " + JSON.stringify(actual) + " instead.";
+}
+
+['firefox_user_agent_strings.yaml', 'test_user_agent_parser.yaml', 'pgts_browser_list.yaml'].forEach(function(fileName) {
+ var fixtures = readYAML(fileName).test_cases;
+ suite(fileName, function() {
+ fixtures.forEach(function(f) {
+ if (f.js_ua) return;
+ test(f.user_agent_string, function() {
+ var ua = uaParser.parse(f.user_agent_string).userAgent;
+ fixFixture(f, ['major', 'minor', 'patch']);
+ assert.strictEqual(ua.family, f.family, msg('ua.family', ua.family, f.family));
+ assert.strictEqual(ua.major, f.major, msg('ua.major', ua.major, f.major));
+ assert.strictEqual(ua.minor, f.minor, msg('ua.minor', ua.minor, f.minor));
+ assert.strictEqual(ua.patch, f.patch, msg('ua.patch', ua.patch, f.patch));
+ });
+ });
+ });
+});
+
+['test_user_agent_parser_os.yaml', 'additional_os_tests.yaml'].forEach(function(fileName) {
+ var fixtures = readYAML(fileName).test_cases;
+ suite(fileName, function() {
+ fixtures.forEach(function(f) {
+ test(f.user_agent_string, function() {
+ var os = uaParser.parse(f.user_agent_string).os;
+ fixFixture(f, ['major', 'minor', 'patch', 'patch_minor']);
+ assert.strictEqual(os.family, f.family, msg('os.family', os.family, f.family));
+ assert.strictEqual(os.major, f.major, msg('os.major', os.major, f.major));
+ assert.strictEqual(os.minor, f.minor, msg('os.minor', os.minor, f.minor));
+ assert.strictEqual(os.patch, f.patch, msg('os.patch', os.patch, f.patch));
+ assert.strictEqual(os.patchMinor, f.patch_minor, msg('os.patchMinor', os.patchMinor, f.patch_minor));
+ });
+ });
+ });
+});
+
+['test_device.yaml'].forEach(function(fileName) {
+ var fixtures = readYAML(fileName).test_cases;
+ suite(fileName, function() {
+ fixtures.forEach(function(f) {
+ test(f.user_agent_string, function() {
+ var device = uaParser.parse(f.user_agent_string).device;
+ assert.strictEqual(device.family, f.family, msg('device.family', device.family, f.family));
+ });
+ });
+ });
+});
+
+function fixFixture(f, props) {
+ // A bug in the YAML parser makes empty fixture props
+ // return a vanila object.
+ props.forEach(function(p) {
+ if (typeof f[p] === 'object') {
+ f[p] = null;
+ }
+ })
+ return f;
+}