lib/symbiont/generators.rb in symbiont-0.0.1 vs lib/symbiont/generators.rb in symbiont-0.0.2

- old
+ new

@@ -13,7 +13,82 @@ define_method("view") do @platform.visit(url) end end + # This method allows for a begin_at() method in definitions. The + # URL provided can be navigated to using the generated start() + # method on a definition instance. + # + # @see Symbiont::Generators#url_is + # @param [String] url the resource identifier to access + # @return [Nil] + def begin_at(url) + define_method("start") do + @platform.visit(url) + end + end + + # Definition method for links. Methods for the following actions will + # be created: + # * reference a link (identifier_object, identifier_link) + # * click a link (identifier) + # @param [Symbol] identifier the friendly name of the web object + # @param [optional, Hash] locator the key/values that identify the object + # @return [Object] instance of Symbiont::WebObjects::Link + def link(identifier, locator) + define_method("#{identifier}_object") do + @platform.get_link_for(locator.clone) + end + + alias_method "#{identifier}_link".to_sym, "#{identifier}_object".to_sym + + define_method(identifier) do + @platform.click_link_for(locator.clone) + end + end + + # Definition method for buttons. Methods for the following actions will + # be created: + # * reference a button (identifier_object, identifier_button) + # * click a button (identifier) + # @param [Symbol] identifier the friendly name of the web object + # @param [optional, Hash] locator the key/values that identify the object + # @return [Object] instance of Symbiont::WebObjects::Button + def button(identifier, locator) + define_method("#{identifier}_object") do + @platform.get_button_for(locator.clone) + end + + alias_method "#{identifier}_button".to_sym, "#{identifier}_object".to_sym + + define_method(identifier) do + @platform.click_button_for(locator.clone) + end + end + + # Definition method for text fields. Methods for the following actions + # will be created: + # * reference a text field (identifier_object, identifier_button) + # * get text from a text field (identifier) + # * set text in a text field (identifier=) + # @param [Symbol] identifier the friendly name of the web object + # @param [optional, Hash] locator the key/values that identify the object + # @return [Object] instance of Symbiont::WebObjects::TextField + def text_field(identifier, locator) + define_method("#{identifier}_object") do + @platform.get_text_field_for(locator.clone) + end + + alias_method "#{identifier}_text_field".to_sym, "#{identifier}_object".to_sym + + define_method(identifier) do + @platform.get_text_field_value_for(locator.clone) + end + + define_method("#{identifier}=") do |value| + @platform.set_text_field_value_for(locator.clone, value) + end + end + end # module: Generators end # module: Symbiont \ No newline at end of file