response_mate 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -8,7 +8,7 @@ tmp
8
8
  .rbenv*
9
9
 
10
10
  spec/source/responses
11
- spec/source/responses.last_recording
11
+ spec/source/other_output_dir
12
12
 
13
13
  output
14
14
  oauth.yml
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- response_mate (0.2.0)
4
+ response_mate (0.2.2)
5
5
  activesupport
6
6
  addressable
7
7
  awesome_print
@@ -6,6 +6,7 @@ module ResponseMate
6
6
 
7
7
  desc 'record', 'Perform requests and record their output'
8
8
  method_option :requests_manifest, aliases: '-r'
9
+ method_option :output_dir, aliases: '-o', type: :string
9
10
  method_option :keys, aliases: '-k', type: :array, default: []
10
11
  def record
11
12
  ResponseMate::Commands::Record.new(args, options).run
@@ -9,13 +9,10 @@ module ResponseMate
9
9
  manifest = ResponseMate::Manifest.new(options[:requests_manifest], environment)
10
10
 
11
11
  options[:manifest] = manifest
12
+
12
13
  recorder = ResponseMate::Recorder.new(options)
13
14
 
14
15
  recorder.record(options[:keys])
15
-
16
- File.open(ResponseMate.configuration.output_dir + '.last_recording', 'w') do |f|
17
- f << Time.current
18
- end
19
16
  end
20
17
  end
21
18
  end
@@ -3,11 +3,12 @@
3
3
  module ResponseMate
4
4
  # Handles recording requests
5
5
  class Recorder
6
- attr_accessor :conn, :manifest, :keys
6
+ attr_accessor :conn, :manifest, :keys, :output_dir
7
7
 
8
8
  def initialize(args = {})
9
9
  @manifest = args[:manifest]
10
10
  @conn = ResponseMate::Connection.new
11
+ @output_dir = args[:output_dir]
11
12
  end
12
13
 
13
14
  def record(keys)
@@ -22,7 +23,11 @@ module ResponseMate
22
23
  meta = request.meta
23
24
  puts request.to_cli_format
24
25
 
25
- ResponseMate::Tape.new.write(request.key, request, conn.fetch(request), meta)
26
+ ResponseMate::Tape.new.write(request.key,
27
+ request,
28
+ conn.fetch(request),
29
+ meta,
30
+ output_dir)
26
31
  end
27
32
  end
28
33
  end
@@ -1,8 +1,9 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  class ResponseMate::Tape
4
- def write(key, request, response, meta = {})
5
- output_dir = ResponseMate.configuration.output_dir
4
+ def write(key, request, response, meta = {}, output_dir = nil)
5
+ output_dir = output_dir || ResponseMate.configuration.output_dir
6
+
6
7
  output_path = File.join output_dir, "#{key}.yml"
7
8
 
8
9
  File.open(output_path, 'w') do |f|
@@ -1,5 +1,5 @@
1
1
  # coding: utf-8
2
2
 
3
3
  module ResponseMate
4
- VERSION = '0.2.1'
4
+ VERSION = '0.2.2'
5
5
  end
@@ -18,6 +18,50 @@ describe ResponseMate::Commands::Record do
18
18
  end
19
19
  end
20
20
 
21
+ context 'with output_dir option specified' do
22
+ let(:other_output_dir) do
23
+ File.expand_path('spec/source/other_output_dir')
24
+ end
25
+
26
+ let(:cmd_with_output_dir) do
27
+ quietly do
28
+ ResponseMate::Commands::Record.new([], {
29
+ keys: [],
30
+ output_dir: [other_output_dir]
31
+ }).run
32
+ end
33
+ end
34
+
35
+ context 'when the specified directory exists' do
36
+ let(:output_files) { ->{ Dir[other_output_dir + '/*'] } }
37
+
38
+ before { cmd_with_output_dir }
39
+ after { output_files.call.each { |file| File.delete(file) } }
40
+
41
+ it 'created the tapes in the specified directory' do
42
+ expect(output_files.call).to have_exactly(2).items
43
+ end
44
+ end
45
+
46
+ context 'when the specified directory does not exist' do
47
+ let(:other_output_dir) do
48
+ File.expand_path('spec/source/i_do_not_exist')
49
+ end
50
+
51
+ it 'raises ResponeMate::OutputDirError' do
52
+ expect { cmd_with_output_dir }.to raise_error(ResponseMate::OutputDirError)
53
+ end
54
+ end
55
+ end
56
+
57
+ context 'with output_dir option unspecified' do
58
+ it 'creates the tapes in the default output directory' do
59
+ quietly { ResponseMate::Commands::Record.new([], { keys: [] }).run }
60
+
61
+ expect(output_files.call).to have_exactly(2).items
62
+ end
63
+ end
64
+
21
65
  context 'with keys option specified' do
22
66
  context 'when the requested key exists' do
23
67
  before do
@@ -28,15 +28,45 @@ describe ResponseMate::Tape do
28
28
  describe '#write' do
29
29
  let(:tape) { YAML.load_file(output_files.call.last) }
30
30
 
31
- before do
32
- ResponseMate::Tape.new.write(key, request, response, meta)
31
+ let(:output_dir) { nil }
32
+
33
+ let(:write) do
34
+ ResponseMate::Tape.new.write(key, request, response, meta, output_dir)
33
35
  end
34
36
 
37
+ subject { write }
38
+
35
39
  it 'creates a new tape with key parameter as the filename' do
40
+ subject
36
41
  expect(File.basename(output_files.call.last)).to eq("#{key}.yml")
37
42
  end
38
43
 
44
+ describe 'tape location' do
45
+ context 'when the specified output_dir exists' do
46
+ let(:output_dir) { File.expand_path('./spec/source/other_output_dir') }
47
+ let(:output_files) { ->{ Dir[output_dir + '/*'] } }
48
+
49
+ after { output_files.call.each { |file| File.delete(file) } }
50
+
51
+ it 'is inside the specified output_dir' do
52
+ subject
53
+ expect(tape).to be
54
+ end
55
+ end
56
+
57
+ context 'when the specified output_dir does not exist' do
58
+ let(:output_dir) do
59
+ File.expand_path('spec/source/i_do_not_exist')
60
+ end
61
+
62
+ it 'raises ResponeMate::OutputDirError' do
63
+ expect { subject }.to raise_error(ResponseMate::OutputDirError)
64
+ end
65
+ end
66
+ end
67
+
39
68
  describe 'the created tape' do
69
+ before { write }
40
70
  subject { tape }
41
71
 
42
72
  it 'is valid YAML' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: response_mate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-14 00:00:00.000000000 Z
12
+ date: 2014-07-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -246,6 +246,7 @@ files:
246
246
  - spec/lib/response_mate/tape_spec.rb
247
247
  - spec/lib/response_mate_spec.rb
248
248
  - spec/source/environment.yml
249
+ - spec/source/other_output_dir/.gitkeep
249
250
  - spec/source/requests.yml
250
251
  - spec/source/responses/.gitkeep
251
252
  - spec/spec_helper.rb
@@ -287,6 +288,7 @@ test_files:
287
288
  - spec/lib/response_mate/tape_spec.rb
288
289
  - spec/lib/response_mate_spec.rb
289
290
  - spec/source/environment.yml
291
+ - spec/source/other_output_dir/.gitkeep
290
292
  - spec/source/requests.yml
291
293
  - spec/source/responses/.gitkeep
292
294
  - spec/spec_helper.rb