Sha256: 6d875190cdb2f9a6e991af3dcdd8fe76f4aec6f904cea025ea3a3700f0d9ecdb

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

require 'active_support/concern'

module SpecHelpers
  module StoresCleaner
    extend ActiveSupport::Concern
    include CircuitBlueprints

    included do
      around :each do |example|
        orig_site_store = Circuit::Storage::Sites.instance_variable_get(:@instance)
        orig_node_store = Circuit::Storage::Nodes.instance_variable_get(:@instance)
        clear_storage

        if @storage
          Circuit.set_site_store @storage
          Circuit.set_node_store @storage
          ensure_blueprints
        end

        example.run

        clear_storage
        silence_warnings do
          Circuit.set_site_store orig_site_store
          Circuit.set_node_store orig_node_store
        end
        ensure_blueprints
      end
    end

    module ClassMethods
      def use_storage(val)
        before(:all) { @storage = val }
      end
    end

    private

    def clear_storage
      Circuit::Storage::Sites.instance_variable_set(:@instance, nil)
      Circuit::Storage::Nodes.instance_variable_set(:@instance, nil)
      Circuit.send(:remove_const, :Site) rescue NameError
      Circuit.send(:remove_const, :Node) rescue NameError
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
circuit-0.2.0 spec/support/spec_helpers/stores_cleaner.rb