stikjs/stik-core

View on GitHub
specs/injectable_spec.js

Summary

Maintainability
A
1 hr
Test Coverage
require("./spec_helper");

var stik = window.stik;

describe("Injectable", function(){
  describe("#resolve", function(){
    it("an instantiable module", function(){
      var templateCheck, customModuleCheck, dependencies;

      function MockClass($template, customModule){
        templateCheck = $template;
        customModuleCheck = customModule;
      }

      dependencies = {
        $template: stik.injectable({ module:{} }),
        customModule: stik.injectable({ module: {} })
      };

      injectable = stik.injectable({
        module: MockClass,
        instantiable: true
      });

      expect(
        injectable.resolve(dependencies).constructor.name
      ).toEqual("MockClass");
      expect(
        templateCheck
      ).toEqual(dependencies.$template.resolve());
      expect(
        customModuleCheck
      ).toEqual(dependencies.customModule.resolve());
    });

    it("a simple function module", function(){
      var dependencies, mockFunc;

      dependencies = {
        $template: stik.injectable({ module: {} }),
        customModule: stik.injectable({ module: {} })
      };

      mockFunc = function(){};

      injectable = stik.injectable({
        module: mockFunc
      });

      expect(
        injectable.resolve(dependencies)
      ).toEqual(mockFunc);
    });

    it("a resolvable function module", function(){
      var dependencies, mockFunc;

      dependencies = {
        $template: stik.injectable({ module: "worked!" }),
        customModule: stik.injectable({ module: {} })
      };

      mockFunc = function($template){ return $template };

      injectable = stik.injectable({
        module: mockFunc,
        resolvable: true
      });

      expect(
        injectable.resolve(dependencies)
      ).toEqual("worked!");
    });

    it("a simple object module", function(){
      var dependencies, mockObj;

      dependencies = {
        $template: stik.injectable({ module: {} }),
        customModule: stik.injectable({ module: {} })
      };

      mockObj = {};

      injectable = stik.injectable({
        module: mockObj
      });

      expect(
        injectable.resolve(dependencies)
      ).toEqual(mockObj);
    });
  });
});