Skip to content

Instantly share code, notes, and snippets.

@tzkmx
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tzkmx/81e9ab074dd8d0370bdd to your computer and use it in GitHub Desktop.
Save tzkmx/81e9ab074dd8d0370bdd to your computer and use it in GitHub Desktop.
Init Namespace with Jasmine Tests (+extend)
extend = (inject, template) ->
(template[prop] = inject[prop]) for own prop of inject
null
init_namespace = (nameString, obj, container) ->
container ?= window
names = nameString.split('.')
(container[name] or= {} ;
container = container[name]) while name = names.shift()
extend(obj, container)
describe "Namespace DRY initializer", ->
describe "A simple name init", ->
it "a simple name should be available in global object", ->
init_namespace "simple"
expect(window.simple).toBeDefined()
describe "A two levels nested name path", ->
beforeEach ->
window.simple = null
init_namespace "simple.nested"
it "makes available its top name in container", ->
expect(window.simple).toBeDefined()
it "makes available its child name in container", ->
expect(window.simple.nested).toBeDefined()
describe "A custom passed object", ->
it "set its properties to ns' deepest child", ->
window.simple = null
init_namespace("simple.nested.ns",
custom: true
queryable: false
)
ns=window.simple.nested.ns
expect(ns.custom).toBeTruthy()
expect(ns.queryable).toBeFalsy()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment