Sha256: d629a8cdf78586e44698fd0c29c9f8917dfd9838a6a595018fe7a57f9d8c56b2

Contents?: true

Size: 988 Bytes

Versions: 7

Compression:

Stored size: 988 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]
  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]
    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.9.0 spec/toy/plugins_spec.rb
toystore-0.8.3 spec/toy/plugins_spec.rb
toystore-0.8.2 spec/toy/plugins_spec.rb
toystore-0.8.1 spec/toy/plugins_spec.rb
toystore-0.8.0 spec/toy/plugins_spec.rb
toystore-0.7.0 spec/toy/plugins_spec.rb
toystore-0.6.6 spec/toy/plugins_spec.rb