Exemplo n.º 1
0
  it('passes the rest of the factory arguments', function () {
    var args1, args2;
    var SubStamp1 = compose({
      initializers: [function (_, ref) {
        args1 = ref.args;
      }]
    });
    var SubStamp2 = compose({
      initializers: [function (_, ref) {
        args2 = ref.args;
      }]
    });
    var MainStamp = InitProperty.compose({
      properties: {
        prop1: SubStamp1,
        prop2: SubStamp2
      }
    });

    var argA = {A: 1}, argB = {B: 2};
    MainStamp(null, argA, argB);

    expect(args1[1]).toBe(argA);
    expect(args1[2]).toBe(argB);
    expect(args2[1]).toBe(argA);
    expect(args2[2]).toBe(argB);
  });
Exemplo n.º 2
0
  it('passes same named value from opts', function () {
    var opts1, opts2;
    var SubStamp1 = compose({
      initializers: [function (opts) {
        opts1 = opts;
      }]
    });
    var SubStamp2 = compose({
      initializers: [function (opts) {
        opts2 = opts;
      }]
    });
    var MainStamp = InitProperty.compose({
      properties: {
        prop1: SubStamp1,
        prop2: SubStamp2
      }
    });

    var opts = {prop1: {}, prop2: {}};
    MainStamp(opts);

    expect(opts1).toBe(opts.prop1);
    expect(opts2).toBe(opts.prop2);
  });
Exemplo n.º 3
0
  it('should push the initializer to the beginning of the list', function () {
    var Stamp1 = compose({
      initializers: [function () {}]
    });
    var Stamp2 = compose({
      initializers: [function () {}]
    });
    var Stamp = compose(Stamp1, InitProperty, Stamp2);

    expect(Stamp.compose.initializers[0]).toBe(InitProperty.compose.initializers[0]);
  });
Exemplo n.º 4
0
    it('should not overwrite collided methods', function () {
      var on = jest.fn();
      var off = jest.fn();
      var MyStamp = compose(EventEmittable, {
        methods: {on: on, off: off}
      });

      expect(MyStamp().on).toBe(on);
      expect(MyStamp().off).toBe(off);
    });
Exemplo n.º 5
0
  it('creates sub instance from stamps assigned to properties', function () {
    var SubStamp1 = compose({
      properties: {subStamp1: true}
    });
    var SubStamp2 = compose({
      properties: {subStamp2: true}
    });
    var MainStamp = InitProperty.compose({
      properties: {
        prop1: SubStamp1,
        prop2: SubStamp2
      }
    });

    var opts = {prop1: {}, prop2: {}};
    var instance = MainStamp(opts);

    expect(instance.prop1).toEqual({subStamp1: true});
    expect(instance.prop2).toEqual({subStamp2: true});
  });
Exemplo n.º 6
0
    it('should allow composition', function () {
      var MyStamp = compose({
        methods: {
          foo: function () {
            this.emit('foo');
          }
        }
      })
        .compose(EventEmittable);

      var objectInstance = MyStamp();
      var listener = jest.fn();
      objectInstance.on('foo', listener);
      objectInstance.foo();
      expect(listener.mock.calls.length).toBe(1);
    });
Exemplo n.º 7
0
 it('default name is "Stamp"', function () {
   var S = compose();
   expect(S.name).toBe('Stamp');
 });
Exemplo n.º 8
0
 it('setName overwrites existing name', function () {
   var S = compose(Named).setName('foo');
   expect(S.setName('bar').name).toBe('bar');
 });
Exemplo n.º 9
0
 it('setName sets the name', function () {
   var S = compose(Named).setName('foo');
   expect(S.name).toBe('foo');
 });