pry--pry/spec/commands/gist_spec.rb

71 lines
1.8 KiB
Ruby
Raw Normal View History

require 'helper'
describe 'gist' do
2012-12-10 02:19:34 +00:00
Pad.jist_calls = {}
# In absence of normal mocking, just monkeysmash these with no undoing after.
module Jist
class << self
2012-12-10 02:19:34 +00:00
def login!; Pad.jist_calls[:login!] = true end
def gist(*args)
2012-12-10 02:19:34 +00:00
Pad.jist_calls[:gist_args] = args
{'html_url' => 'http://gist.blahblah'}
end
2012-12-10 02:19:34 +00:00
def copy(content); Pad.jist_calls[:copy_args] = content end
end
end
2012-12-10 05:21:18 +00:00
module Pry::Gist
# a) The actual require fails for jruby for some odd reason.
# b) 100% of jist should be stubbed by the above, so this ensures that.
def self.require_jist; 'nope' end
end
it 'nominally logs in' do
pry_eval 'gist --login'
2012-12-10 02:19:34 +00:00
Pad.jist_calls[:login!].should.not.be.nil
Pad.jist_calls = {}
end
EXAMPLE_REPL_METHOD = <<-EOT
# docdoc
def my_method
# line 1
'line 2'
line 3
Line.four
end
EOT
2012-12-07 05:14:04 +00:00
RANDOM_COUPLE_OF_LINES = %w(a=1 b=2)
run_case = proc do |sym|
actual_command = Pry::Gist.example_code(sym)
pry_eval EXAMPLE_REPL_METHOD, RANDOM_COUPLE_OF_LINES, actual_command
end
it 'deduces filenames' do
2012-12-07 05:14:04 +00:00
Pry::Gist::INVOCATIONS.keys.each do |e|
run_case.call(e)
2012-12-10 02:19:34 +00:00
if Pad.jist_calls[:gist_args]
text, args = Pad.jist_calls[:gist_args]
args[:filename].should.not == '(pry)'
end
2012-12-10 02:19:34 +00:00
Pad.jist_calls[:copy_args].should.not.be.nil
Pad.jist_calls = {}
end
end
it 'equates aliae' do
run_case.call(:clipit).should == run_case.call(:cliponly)
run_case.call(:jist).should == run_case.call(:class)
end
2012-12-07 05:14:04 +00:00
it 'has a reasonable --help' do
help = pry_eval('gist --help')
Pry::Gist::INVOCATIONS.keys.each do |e|
help.should.include? Pry::Gist.example_code(e)
help.should.include? Pry::Gist.example_description(e)
end
end
end