Sha256: 4187ff30182f945597086df8884b367b436d2d781f178411b379c94c3cbf9617
Contents?: true
Size: 1.78 KB
Versions: 4
Compression:
Stored size: 1.78 KB
Contents
module Screengem # # Mixin that allows an actor to perform tasks, ask questions, and to remember and # recall tagged values. # # Return self for those methods that may be chained in the step definition DSL. # # The ability to remember and recall values is used to carry state forward from one # step definition to another (as the preferred alternative to instance variables). # # Question and task instances (aka primitives) are configured with: # (1) a reference to the actor that is interacting with the primitive # (2) a reference to the screen instance that hosts accessors to the screen elements. # module Actor # # Used by an actor to ask one or more questions in a step definition. # def asks(*questions) questions.each do |question| question.configure(self, screen).answer end self end # # Used by an actor to perform one or more tasks in a step definition. # def performs(*tasks) tasks.each do |task| task.configure(self, screen).perform end self end # # Used by an actor to recall a value for the specified tag. # def recall(tag, reload: true) unless recollections.key?(tag) raise <<~MSG #{name} does not recall #{tag} #{name} recalls: #{recollections.keys.to_sentence} MSG end recollections.fetch(tag).tap do |value| value.reload if reload && value.respond_to?(:reload) end end # # Used by an actor to remember one or more tagged values. # def remember(facts) recollections.merge!(facts) self end private def recollections ActorMemory.instance.recollections(self) end def screen Screengem::ScreenElements.instance end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
screengem-0.14.0 | lib/screengem/actor.rb |
screengem-0.13.0 | lib/screengem/actor.rb |
screengem-0.12.0 | lib/screengem/actor.rb |
screengem-0.11.0 | lib/screengem/actor.rb |