Module: Watirmark::Model::CucumberHelper
- Included in:
- CukeHelper, Factory
- Defined in:
- lib/watirmark/models/cucumber_helper.rb
Instance Method Summary collapse
- #format_value(value) ⇒ Object
- #insert_model(text) ⇒ Object
- #merge_cucumber_table(cuke_table) ⇒ Object
Instance Method Details
#format_value(value) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/watirmark/models/cucumber_helper.rb', line 6 def format_value(value) value = insert_model(value) case value when String if value[0, 1].eql?("=") #straight eval eval(value[1..value.length]) elsif value == "true" true elsif value == "false" false elsif value.strip == '' nil else value end else value end end |
#insert_model(text) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/watirmark/models/cucumber_helper.rb', line 26 def insert_model(text) # cucumber 2.0 defines a Core module between Cucumber and Ast doc_class = Cucumber::Ast.const_defined?(:DocString) ? Cucumber::Ast::DocString : Cucumber::Core::Ast::DocString return text unless text.is_a?(String) || text.is_a?(doc_class) result = text method_regexp = /\[([^\[\]]+)\]\.(\w+)/ model_regexp = /\[([^\[\]]+)\]/ if text =~ method_regexp while result =~ method_regexp #get value from models model_name = $1 method = $2 value = DataModels[model_name].send method.to_sym result.sub!(method_regexp, value.to_s) end elsif text =~ model_regexp model_name = $1 result = DataModels[model_name] if DataModels[model_name] != nil end result end |
#merge_cucumber_table(cuke_table) ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/watirmark/models/cucumber_helper.rb', line 47 def merge_cucumber_table(cuke_table) cuke_table.rows_hash.each do |key, value| method_chain = key.to_s.split('.') method = method_chain.pop method_chain.inject(self) { |obj, m| obj.send m}.send "#{method}=", format_value(value) end Watirmark.logger.info "Updated #{inspect}" self end |