Sha256: a48d3bbc8178dd8d3469535f6349bc1a047214e8bb1f32271837fad3d66a17f2

Contents?: true

Size: 1002 Bytes

Versions: 7

Compression:

Stored size: 1002 Bytes

Contents

require 'helper'

describe Toy::Plugins do
  uses_constants('User', 'Game')

  it "keeps track of class that include toy store" do
    Toy.models.should == [User, Game].to_set
  end

  describe ".plugin" do
    before do
      class_methods_mod    = Module.new { def foo; 'foo' end }
      instance_methods_mod = Module.new { def bar; 'bar' end }

      @mod = Module.new { extend ActiveSupport::Concern }
      @mod.const_set(:ClassMethods,    class_methods_mod)
      @mod.const_set(:InstanceMethods, instance_methods_mod)

      Toy.plugin(@mod)
    end

    it "includes module in all models" do
      [User, Game].each do |model|
        model.foo.should     == 'foo'
        model.new.bar.should == 'bar'
      end
    end

    it "adds plugin to plugins" do
      Toy.plugins.should == [@mod].to_set
    end

    it "adds plugins to classes declared after plugin was called" do
      create_constant('Move')
      Move.foo.should     == 'foo'
      Move.new.bar.should == 'bar'
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
toystore-0.6.5 spec/toy/plugins_spec.rb
toystore-0.6.4 spec/toy/plugins_spec.rb
toystore-0.6.3 spec/toy/plugins_spec.rb
toystore-0.6.2 spec/toy/plugins_spec.rb
toystore-0.6.1 spec/toy/plugins_spec.rb
toystore-0.6 spec/toy/plugins_spec.rb
toystore-0.5 spec/toy/plugins_spec.rb