dependencyMapper.js

var path = require("path"),
    assert = require("assert"),
    DependencyMapper = require("../modules/dependencyMapper")

suite("dependencyMapper", function () {
    test("methods exist", function () {
        assert(DependencyMapper, "dependency mapper does not exist")
        assert(DependencyMapper.map, "dependency mapper.map does not exist")
    })

    test("maps dependencies correctly", function (done) {
        DependencyMapper.map({
            jsonUri: path.join(__dirname, "modules", "dependency.json"),
            uri: path.join(__dirname, "modules")
        }, function (err, json) {

            assert.equal(err, null, "error is null")
            assert(json["foo.js"], "no foo.js")
            assert(json["bar/bar.js"], "no bar/bar.js")
            assert(json["bar/foo.js"], "no bar/foo.js")

            assert.equal(json["foo.js"]["bar"], "bar/bar.js",
                "foo.js bar is wrong")
            assert.equal(json["foo.js"]["foo"], "bar/foo.js",
                "foo.js foo is wrong")
            assert.equal(json["foo.js"]["baz"], "baz.js",
                "foo.js baz is wrong")

            assert.equal(json["bar/bar.js"]["foo"], "foo.js",
                "bar/bar.js foo is wrong")
            assert.deepEqual(json["bar/bar.js"]["bars"], {
                "bar": "bar/bar.js",
                "foo": "bar/foo.js"
            }, "bar/bar.js bars is wrong")
            assert.equal(json["bar/bar.js"]["foobar"], "bar/bar.js",
                "bar/bar.js foobar is wrong")

            assert.equal(json["bar/foo.js"]["foo"], "foo.js",
                "bar/foo.js foo is wrong")
            assert.deepEqual(json["bar/foo.js"]["bars"], {
                "bar": "bar/bar.js",
                "foo": "bar/foo.js"
            }, "bar/foo.js bars is wrong")
            assert.equal(json["bar/foo.js"]["foobar"], "bar/foo.js",
                "bar/foo.js foobar is wrong")

            assert.deepEqual(json["deep/foo.js"]["shallow"], {
                "bar": "shallow/foo/bar.js",
                "baz": "shallow/foo/baz.js"
            })

            assert.deepEqual(json["deep/foo.js"]["tree"], {
                foo: {
                    bar: "shallow/foo/bar.js",
                    baz: "shallow/foo/baz.js"
                }
            })

            assert.equal(json["shallow/foo/bar.js"]["deep"], "deep/foo.js")

            assert.equal(json["shallow/foo/baz.js"]["deep"], "deep/foo.js")

            done()
        })
    })
})