Sha256: e51febf4616dbd8898b489e5272ac509bc85e47dd3dc211450292634fd40b1cd
Contents?: true
Size: 2 KB
Versions: 3
Compression:
Stored size: 2 KB
Contents
module SharedShould::TestClassHelper def self.included(base_test_class) base_test_class.class_eval do attr_accessor :shared_value @@shared_proxies_executed = {} @@setup_blocks = {} def self.execute_class_shared_proxies if @@shared_proxies_executed[self].nil? shared_proxies.each do |shared_proxy| shared_proxy.share_execute end @@shared_proxies_executed[self] = true end end def self.shared_context_block_owner(context_or_test_class) return context_or_test_class.kind_of?(Shoulda::Context) ? context_or_test_class : Test::Unit::TestCase end def execute_class_shared_setups_if_not_executed if !@shared_setups_executed @shared_setups_executed = true (@@setup_blocks[self.class] || []).each do |setup_block| setup_block.bind(self).call end end end def self.setup(&setup_block) @@setup_blocks[self] = [] unless @@setup_blocks[self] @@setup_blocks[self] << setup_block end def setup_shared_value(initialization_block) self.shared_value = initialization_block.nil? ? nil : initialization_block.bind(self).call end def call_block_with_shared_value(test_block) return nil unless test_block execute_class_shared_setups_if_not_executed if test_block.arity == 1 # check arity of 1 before checking if value is an array. If one parameter, never treat the shared_value as variable args test_block.bind(self).call(self.shared_value) elsif self.shared_value.class == Array && test_block.arity == self.shared_value.length test_block.bind(self).call(*self.shared_value) else test_block.bind(self).call() end end def call_block_config(block_config) ret_val = call_block_with_shared_value(block_config[:block]) self.shared_value = ret_val if block_config[:action] == :given end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
shared_should-0.10.0 | lib/shared_should/test_class_helper.rb |
shared_should-0.9.0 | lib/shared_should/test_class_helper.rb |
shared_should-0.8.3 | lib/shared_should/test_class_helper.rb |