Skip to content

Commit

Permalink
Update run and view to utilize ask statement default
Browse files Browse the repository at this point in the history
  • Loading branch information
pblesi authored and Patrick Blesi committed Apr 12, 2019
1 parent 2ab93a5 commit 075d95c
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 6 deletions.
2 changes: 1 addition & 1 deletion lib/runbook/run.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def runbook__statements__ask(object, metadata)
return
end

result = metadata[:toolbox].ask(object.prompt)
result = metadata[:toolbox].ask(object.prompt, default: object.default)
object.parent.define_singleton_method(object.into.to_sym) do
result
end
Expand Down
4 changes: 2 additions & 2 deletions lib/runbook/toolbox.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ def initialize
@prompt = TTY::Prompt.new
end

def ask(msg)
prompt.ask(msg)
def ask(msg, default: nil)
prompt.ask(msg, default: default)
end

def expand(msg, choices)
Expand Down
3 changes: 2 additions & 1 deletion lib/runbook/views/markdown.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ def self.runbook__entities__step(object, output, metadata)
end

def self.runbook__statements__ask(object, output, metadata)
output << " #{object.prompt}\n\n"
default_msg = object.default ? " (default: #{object.default})" : ""
output << " #{object.prompt} into #{object.into}#{default_msg}\n\n"
end

def self.runbook__statements__assert(object, output, metadata)
Expand Down
18 changes: 17 additions & 1 deletion spec/run_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -232,12 +232,28 @@

it "prompts the user and stores the result on the parent object" do
result = "result"
expect(toolbox).to receive(:ask).with(prompt).and_return(result)
expect(toolbox).to receive(:ask).with(prompt, default: nil).and_return(result)

subject.execute(object, metadata)

expect(object.parent.sky_color).to eq(result)
end

context "when default specified" do
let (:default) { "Pope where a hat?" }
let (:object) {
Runbook::Statements::Ask.new(prompt, into: into, default: default)
}

it "passes the default value to the ask statement" do
result = "result"
expect(toolbox).to receive(:ask).with(prompt, default: default).and_return(result)

subject.execute(object, metadata)

expect(object.parent.sky_color).to eq(result)
end
end
end

describe "runbook__entities__confirm" do
Expand Down
8 changes: 7 additions & 1 deletion spec/toolbox_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
let(:prompt) { instance_double("TTY::Prompt") }
let(:toolbox) { Runbook::Toolbox.new }
let(:msg) { "Something I want to say" }
let(:default) { "default" }
let(:choices) { [
{ key: "y", name: "Yes", value: true },
] }
Expand All @@ -20,9 +21,14 @@

describe "ask" do
it "passes its argument to prompt.ask" do
expect(prompt).to receive(:ask).with(msg)
expect(prompt).to receive(:ask).with(msg, default: nil)
toolbox.ask(msg)
end

it "passes its default to prompt.ask" do
expect(prompt).to receive(:ask).with(msg, default: default)
toolbox.ask(msg, default: default)
end
end

describe "expand" do
Expand Down

0 comments on commit 075d95c

Please sign in to comment.