dupe 0.3.7 → 0.4.0

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.
Files changed (44) hide show
  1. data/README.rdoc +390 -147
  2. data/lib/dupe/active_resource_extensions.rb +25 -0
  3. data/lib/dupe/attribute_template.rb +71 -0
  4. data/lib/dupe/cucumber_hooks.rb +15 -7
  5. data/lib/dupe/custom_mocks.rb +102 -0
  6. data/lib/dupe/database.rb +51 -0
  7. data/lib/dupe/dupe.rb +359 -372
  8. data/lib/dupe/log.rb +38 -0
  9. data/lib/dupe/mock.rb +50 -0
  10. data/lib/dupe/model.rb +55 -0
  11. data/lib/dupe/network.rb +38 -0
  12. data/lib/dupe/record.rb +35 -56
  13. data/lib/dupe/rest_validation.rb +16 -0
  14. data/lib/dupe/schema.rb +36 -0
  15. data/lib/dupe/sequence.rb +11 -10
  16. data/lib/dupe/singular_plural_detection.rb +9 -0
  17. data/lib/dupe/string.rb +6 -8
  18. data/lib/dupe/symbol.rb +3 -0
  19. data/lib/dupe.rb +13 -12
  20. data/rails_generators/dupe/templates/custom_mocks.rb +4 -34
  21. data/rails_generators/dupe/templates/dupe_setup.rb +3 -23
  22. data/spec/lib_specs/active_resource_extensions_spec.rb +29 -0
  23. data/spec/lib_specs/attribute_template_spec.rb +173 -0
  24. data/spec/lib_specs/database_spec.rb +133 -0
  25. data/spec/lib_specs/dupe_spec.rb +307 -0
  26. data/spec/lib_specs/log_spec.rb +78 -0
  27. data/spec/lib_specs/logged_request_spec.rb +22 -0
  28. data/spec/lib_specs/mock_definitions_spec.rb +32 -0
  29. data/spec/lib_specs/mock_spec.rb +67 -0
  30. data/spec/lib_specs/model_spec.rb +90 -0
  31. data/spec/lib_specs/network_spec.rb +77 -0
  32. data/spec/lib_specs/record_spec.rb +70 -0
  33. data/spec/lib_specs/rest_validation_spec.rb +17 -0
  34. data/spec/lib_specs/schema_spec.rb +90 -0
  35. data/spec/lib_specs/sequence_spec.rb +26 -0
  36. data/spec/lib_specs/string_spec.rb +31 -0
  37. data/spec/lib_specs/symbol_spec.rb +17 -0
  38. data/spec/spec_helper.rb +2 -5
  39. metadata +29 -7
  40. data/lib/dupe/active_resource.rb +0 -135
  41. data/lib/dupe/attribute.rb +0 -17
  42. data/lib/dupe/configuration.rb +0 -20
  43. data/lib/dupe/mock_service_response.rb +0 -55
  44. data/spec/lib_specs/dupe_record_spec.rb +0 -57
@@ -0,0 +1,22 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Dupe::Network::Log::Request do
4
+ describe "##new" do
5
+ it "should set the verb, url, and response_body" do
6
+ r = Dupe::Network::Log::Request.new :get, "/knock-knock", "who's there?"
7
+ r.verb.should == :get
8
+ r.path.should == "/knock-knock"
9
+ r.response_body.should == "who's there?"
10
+ end
11
+ end
12
+
13
+ describe "#pretty_print" do
14
+ it "should show the request type, request path, and request response" do
15
+ r = Dupe::Network::Log::Request.new :get, "/knock-knock", "who's there?"
16
+ r.pretty_print.should ==
17
+ "Request: GET /knock-knock\n" +
18
+ "Response:\n" +
19
+ " who's there?"
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,32 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "Mock Definition Methods" do
4
+ before do
5
+ Dupe.reset
6
+ end
7
+
8
+ describe "Get" do
9
+ it "should require a url pattern that is a regex" do
10
+ proc { Get() }.should raise_error(ArgumentError)
11
+ proc { Get 'not a regexp' }.should raise_error(ArgumentError)
12
+ proc { Get %r{/some_url} }.should_not raise_error
13
+ end
14
+
15
+ it "should create and return a Dupe::Network::Mock of type :get" do
16
+ Dupe.network.mocks[:get].should be_empty
17
+ @book = Dupe.create :book, :label => 'rooby'
18
+ Dupe.network.mocks[:get].should_not be_empty
19
+ Dupe.network.mocks[:get].length.should == 2
20
+
21
+ mock = Get %r{/books/([^&]+)\.xml} do |label|
22
+ Dupe.find(:book) {|b| b.label == label}
23
+ end
24
+
25
+ Dupe.network.mocks[:get].length.should == 3
26
+ Dupe.network.mocks[:get].last.should == mock
27
+ Dupe.network.mocks[:get].last.url_pattern.should == %r{/books/([^&]+)\.xml}
28
+ book = Dupe.find(:book)
29
+ Dupe.network.request(:get, '/books/rooby.xml').should == book.to_xml(:root => 'book')
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,67 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Dupe::Network::Mock do
4
+ before do
5
+ Dupe.reset
6
+ end
7
+
8
+ describe "new" do
9
+ it "should require a valid REST type" do
10
+ proc { Dupe::Network::Mock.new :unknown, /\//, proc {} }.should raise_error(Dupe::Network::UnknownRestVerbError)
11
+ proc { Dupe::Network::Mock.new :get, /\//, proc {} }.should_not raise_error
12
+ proc { Dupe::Network::Mock.new :post, /\//, proc {} }.should_not raise_error
13
+ proc { Dupe::Network::Mock.new :put, /\//, proc {} }.should_not raise_error
14
+ proc { Dupe::Network::Mock.new :delete, /\//, proc {} }.should_not raise_error
15
+ end
16
+
17
+ it "should require the url be a kind of regular expression" do
18
+ proc { Dupe::Network::Mock.new :get, '', proc {} }.should raise_error(
19
+ ArgumentError,
20
+ "The URL pattern parameter must be a type of regular expression."
21
+ )
22
+ end
23
+
24
+ it "should set the @verb, @url, and @response parameters accordingly" do
25
+ url_pattern = /\//
26
+ response = proc {}
27
+ mock = Dupe::Network::Mock.new :get, url_pattern, response
28
+ mock.verb.should == :get
29
+ mock.url_pattern.should == url_pattern
30
+ mock.response.should == response
31
+ end
32
+ end
33
+
34
+ describe "match?" do
35
+ it "should determine if a given string matches the mock's url pattern" do
36
+ url = %r{/blogs/(\d+).xml}
37
+ response = proc {}
38
+ mock = Dupe::Network::Mock.new :get, url, response
39
+ mock.match?('/blogs/1.xml').should == true
40
+ mock.match?('/bogs/1.xml').should == false
41
+ end
42
+ end
43
+
44
+ describe "mocked_response" do
45
+ describe "on a mock object whose response returns a Dupe.find" do
46
+ it "should convert the response result to xml" do
47
+ url_pattern = %r{/books/(\d+)\.xml}
48
+ response = proc {|id| Dupe.find(:book) {|b| b.id == id.to_i}}
49
+ book = Dupe.create :book
50
+ mock = Dupe::Network::Mock.new :get, url_pattern, response
51
+ mock.mocked_response('/books/1.xml').should == book.to_xml(:root => 'book')
52
+ end
53
+
54
+ it "should add a request to the Dupe::Network#log" do
55
+ url_pattern = %r{/books/([a-zA-Z0-9-]+)\.xml}
56
+ response = proc {|label| Dupe.find(:book) {|b| b.label == label}}
57
+ book = Dupe.create :book, :label => 'rooby'
58
+ mock = Dupe::Network::Mock.new :get, url_pattern, response
59
+ Dupe.network.log.requests.length.should == 0
60
+ mock.mocked_response('/books/rooby.xml')
61
+ Dupe.network.log.requests.length.should == 1
62
+ end
63
+ end
64
+ end
65
+
66
+
67
+ end
@@ -0,0 +1,90 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Dupe::Model do
4
+ describe "new" do
5
+ it "should require a model name" do
6
+ proc { Dupe::Model.new }.should raise_error(ArgumentError)
7
+ end
8
+
9
+ it "should set the model name to what was passed in during initialization" do
10
+ m = Dupe::Model.new :book
11
+ m.name.should == :book
12
+ end
13
+
14
+ it "should initialize an empty schema" do
15
+ m = Dupe::Model.new :book
16
+ m.schema.should be_kind_of(Dupe::Model::Schema)
17
+ end
18
+
19
+ it "should setup an id_sequence initialized to 0" do
20
+ m = Dupe::Model.new :book
21
+ m.id_sequence.current_value.should == 1
22
+ end
23
+ end
24
+
25
+ describe "define" do
26
+ describe "when passed a proc" do
27
+ before do
28
+ @model = Dupe::Model.new :book
29
+ @definition = proc { |attrs|
30
+ attrs.author('Anonymous') do |dont_care|
31
+ 'Flying Spaghetti Monster'
32
+ end
33
+ }
34
+ end
35
+
36
+ it "should pass that proc off to it's schema" do
37
+ @model.schema.should_receive(:method_missing).once
38
+ @model.define @definition
39
+ end
40
+
41
+ it "should result in a schema with the desired attribute templates" do
42
+ @model.define @definition
43
+ @model.schema.attribute_templates[:author].name.should == :author
44
+ @model.schema.attribute_templates[:author].default.should == 'Anonymous'
45
+ @model.schema.attribute_templates[:author].transformer.call(
46
+ 'dont care'
47
+ ).should == 'Flying Spaghetti Monster'
48
+ end
49
+ end
50
+ end
51
+
52
+ describe "create" do
53
+ before do
54
+ Dupe.define :book do |attrs|
55
+ attrs.title 'Untitled'
56
+ attrs.author 'Anon' do |author|
57
+ "Author: #{author}"
58
+ end
59
+ attrs.after_create do |book|
60
+ book.label = book.title.downcase.gsub(/\ +/, '-')
61
+ end
62
+ end
63
+
64
+ @book_model = Dupe.models[:book]
65
+ end
66
+
67
+ it "shouldn't require any parameters" do
68
+ proc {
69
+ @book_model.create
70
+ }.should_not raise_error
71
+ end
72
+
73
+ it "should return a Dupe::Database::Record instance with the desired parameters" do
74
+ book = @book_model.create
75
+ book.should be_kind_of(Dupe::Database::Record)
76
+ book.__model__.name.should == :book
77
+ book.id.should == 1
78
+ book.title.should == 'Untitled'
79
+ book.author.should == 'Anon'
80
+ book.label.should == 'untitled'
81
+
82
+ book = @book_model.create :title => 'Rooby On Rails', :author => 'Matt Parker'
83
+ book.__model__.name.should == :book
84
+ book.id.should == 2
85
+ book.title.should == 'Rooby On Rails'
86
+ book.label.should == 'rooby-on-rails'
87
+ book.author.should == 'Author: Matt Parker'
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,77 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Dupe::Network do
4
+
5
+ describe "new" do
6
+ before do
7
+ @network = Dupe::Network.new
8
+ end
9
+
10
+ it "should initialize @mocks to a hash of empty arrays keyed with valid REST verbs" do
11
+ Dupe::Network::VERBS.each do |verb|
12
+ @network.mocks[verb].should == []
13
+ end
14
+ end
15
+
16
+ it "should initialize @log to a new Dupe::Network::Log" do
17
+ @network.log.should be_kind_of(Dupe::Network::Log)
18
+ end
19
+ end
20
+
21
+ describe "request" do
22
+ before do
23
+ @network = Dupe::Network.new
24
+ end
25
+
26
+ it "should require a valid REST verb" do
27
+ proc { @network.request }.should raise_error
28
+ proc { @network.request :invalid_rest_verb, '/some_url' }.should raise_error(Dupe::Network::UnknownRestVerbError)
29
+ proc { @network.request :get, '/some_url' }.should_not raise_error(Dupe::Network::UnknownRestVerbError)
30
+ end
31
+
32
+ it "should require a URL" do
33
+ proc { @network.request :get }.should raise_error(ArgumentError)
34
+ proc { @network.request :get, 'some_url'}.should_not raise_error(ArgumentError)
35
+ end
36
+
37
+ it "should raise an exception if the network has no mocks that match the url" do
38
+ proc { @network.request(:get, '/some_url')}.should raise_error(Dupe::Network::RequestNotFoundError)
39
+ end
40
+
41
+ it "should return the appropriate mock response if a mock matches the url" do
42
+ @network.define_service_mock :get, %r{/greeting$}, proc { "hello" }
43
+ @network.request(:get, '/greeting').should == 'hello'
44
+ end
45
+ end
46
+
47
+ describe "define_service_mock" do
48
+ before do
49
+ @network = Dupe::Network.new
50
+ end
51
+
52
+ it "should require a valid REST verb" do
53
+ proc { @network.define_service_mock }.should raise_error
54
+ proc { @network.define_service_mock :invalid_rest_verb, // }.should raise_error(Dupe::Network::UnknownRestVerbError)
55
+ proc { @network.define_service_mock :get, // }.should_not raise_error(Dupe::Network::UnknownRestVerbError)
56
+ end
57
+
58
+ it "should require a valid Regexp url pattern" do
59
+ proc { @network.define_service_mock :get, 'not a regular expression' }.should raise_error(ArgumentError)
60
+ proc { @network.define_service_mock :get, // }.should_not raise_error
61
+ end
62
+
63
+ it "should create and return a new service mock when given valid parameters" do
64
+ verb = :get
65
+ pattern = //
66
+ response = proc { 'test' }
67
+ @network.mocks[:get].should be_empty
68
+ mock = @network.define_service_mock verb, pattern, response
69
+ @network.mocks[:get].should_not be_empty
70
+ @network.mocks[:get].length.should == 1
71
+ @network.mocks[:get].first.should == mock
72
+ end
73
+
74
+
75
+ end
76
+
77
+ end
@@ -0,0 +1,70 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Dupe::Database::Record do
4
+ describe "new" do
5
+ it "should create an object that is a kind of Hash" do
6
+ Dupe::Database::Record.new.should be_kind_of(Hash)
7
+ end
8
+ end
9
+
10
+ describe "id" do
11
+ it "should allow us to set the record id (and not the object id)" do
12
+ d = Dupe::Database::Record.new
13
+ d.id.should == nil
14
+ d[:id].should == nil
15
+ d.id = 1
16
+ d.id.should == 1
17
+ d[:id].should == 1
18
+ end
19
+ end
20
+
21
+ describe "method_missing" do
22
+ it "should allow us to access hash keys as if they were object attributes" do
23
+ d = Dupe::Database::Record.new
24
+ d[:some_key].should == nil
25
+ d.some_key.should == nil
26
+ d.some_key = 1
27
+ d.some_key.should == 1
28
+ d[:some_key].should == 1
29
+ d[:another_key] = 2
30
+ d.another_key.should == 2
31
+ d[:another_key].should == 2
32
+ end
33
+ end
34
+
35
+ describe "inspect" do
36
+ it "should show the class name" do
37
+ d = Dupe::Database::Record.new
38
+ d.inspect.should match(/^<#Dupe::Database::Record/)
39
+ end
40
+
41
+ it "should show the key/value pairs as attributes" do
42
+ d = Dupe::Database::Record.new
43
+ d.title = 'test'
44
+ d.inspect.should match(/title="test"/)
45
+ d.author = Dupe::Database::Record.new
46
+ d.inspect.should match(/author=<#Dupe::Database::Record/)
47
+ end
48
+
49
+ it "should show Fake::<model_name> when the record has a model" do
50
+ b = Dupe.create :book
51
+ b.inspect.should match(/^<#Duped::Book/)
52
+ b.author = Dupe.create :author
53
+ b.inspect.should match(/^<#Duped::Book/)
54
+ b.inspect.should match(/author=<#Duped::Author/)
55
+ end
56
+ end
57
+
58
+ describe "__model__" do
59
+ it "should have a __model__ instance variable" do
60
+ proc {Dupe::Database::Record.new.__model__}.should_not raise_error
61
+ end
62
+
63
+ it "should all you to set the __model_name__ instance variable" do
64
+ r = Dupe::Database::Record.new
65
+ proc {r.__model__ = :book}.should_not raise_error
66
+ r.__model__.should == :book
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,17 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Dupe::Network::RestValidation do
4
+ before do
5
+ class TestRestValidation
6
+ include Dupe::Network::RestValidation
7
+ end
8
+ end
9
+
10
+ describe "validate_request_type" do
11
+ it "should raise an exception if the request type isn't :get, :post, :put, or :delete" do
12
+ proc {
13
+ TestRestValidation.new.validate_request_type(:unknown_request_type)
14
+ }.should raise_error(Dupe::Network::UnknownRestVerbError)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,90 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Dupe::Model::Schema do
4
+ describe "new" do
5
+ it "should initialize attribute_templates to an empty hash" do
6
+ Dupe::Model::Schema.new.attribute_templates.should == {}
7
+ end
8
+
9
+ it "should initialize after_create_callbacks to an empty array" do
10
+ Dupe::Model::Schema.new.after_create_callbacks.should == []
11
+ end
12
+ end
13
+
14
+ describe "dynamic attribute_template creation methods" do
15
+ before do
16
+ @schema = Dupe::Model::Schema.new
17
+ end
18
+
19
+ describe "called with no parameters" do
20
+ it "should create a new attribute template with no transformer and no default value" do
21
+ @schema.title
22
+ @schema.attribute_templates[:title].should be_kind_of(Dupe::Model::Schema::AttributeTemplate)
23
+ @schema.attribute_templates[:title].name.should == :title
24
+ @schema.attribute_templates[:title].default.should be_nil
25
+ @schema.attribute_templates[:title].transformer.should be_nil
26
+ end
27
+ end
28
+
29
+ describe "called with a single parameter, but no block" do
30
+ it "should create a new attribute template with a default value but no transformer" do
31
+ @schema.title 'Untitled'
32
+ @schema.attribute_templates[:title].should be_kind_of(Dupe::Model::Schema::AttributeTemplate)
33
+ @schema.attribute_templates[:title].name.should == :title
34
+ @schema.attribute_templates[:title].default.should == 'Untitled'
35
+ @schema.attribute_templates[:title].transformer.should be_nil
36
+ end
37
+ end
38
+
39
+ describe "called with a block that accepts a parameter" do
40
+ it "should create a new attribute template without a default value, but with a tranformer" do
41
+ @schema.title {|dont_care| 'test'}
42
+ @schema.attribute_templates[:title].should be_kind_of(Dupe::Model::Schema::AttributeTemplate)
43
+ @schema.attribute_templates[:title].name.should == :title
44
+ @schema.attribute_templates[:title].default.should be_nil
45
+ @schema.attribute_templates[:title].transformer.should be_kind_of(Proc)
46
+ end
47
+ end
48
+
49
+ describe "called with a block that doesn't accept a parameter" do
50
+ it "should create a new attribute template without a transformer, and with the block as the default value" do
51
+ @schema.title { 'knock' * 3 }
52
+ @schema.attribute_templates[:title].should be_kind_of(Dupe::Model::Schema::AttributeTemplate)
53
+ @schema.attribute_templates[:title].name.should == :title
54
+ @schema.attribute_templates[:title].default.should be_kind_of(Proc)
55
+ @schema.attribute_templates[:title].default.call.should == "knockknockknock"
56
+ @schema.attribute_templates[:title].transformer.should be_nil
57
+ end
58
+ end
59
+
60
+ describe "called with a block and a parameter" do
61
+ it "should create a new attribute template with a default value AND with a tranformer" do
62
+ @schema.title('Untitled') {|dont_care| 'test'}
63
+ @schema.attribute_templates[:title].should be_kind_of(Dupe::Model::Schema::AttributeTemplate)
64
+ @schema.attribute_templates[:title].name.should == :title
65
+ @schema.attribute_templates[:title].default.should == 'Untitled'
66
+ @schema.attribute_templates[:title].transformer.should be_kind_of(Proc)
67
+ end
68
+ end
69
+ end
70
+
71
+ describe "#after_create" do
72
+ before do
73
+ @schema = Dupe::Model::Schema.new
74
+ end
75
+
76
+ it "should require a block that accepts a single parameter" do
77
+ proc { @schema.after_create }.should raise_error(ArgumentError)
78
+ proc { @schema.after_create { "parameterless block" } }.should raise_error(ArgumentError)
79
+ proc { @schema.after_create {|s| s.title = 'test' } }.should_not raise_error
80
+ end
81
+
82
+ it "should add the callback to the list of after_create_callbacks" do
83
+ @schema.after_create_callbacks.should be_empty
84
+ @schema.after_create {|s| s.title = 'test'}
85
+ @schema.after_create_callbacks.length.should == 1
86
+ @schema.after_create_callbacks.first.should be_kind_of(Proc)
87
+ end
88
+
89
+ end
90
+ end
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Sequence do
4
+ describe "new" do
5
+ it "should intialize the current value to whatever is passed in (or 1 by default)" do
6
+ Sequence.new.current_value.should == 1
7
+ Sequence.new(500).current_value.should == 500
8
+ end
9
+ end
10
+
11
+ describe "next" do
12
+ it "should return the next value in the sequence, then increment the current value" do
13
+ s = Sequence.new
14
+ s.next.should == 1
15
+ s.current_value.should == 2
16
+ s.next.should == 2
17
+ s.current_value.should == 3
18
+
19
+ s = Sequence.new(500)
20
+ s.next.should == 500
21
+ s.current_value.should == 501
22
+ s.next.should == 501
23
+ s.current_value.should == 502
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,31 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe String do
4
+ describe "plural?" do
5
+ it "should report plural symbols as plural" do
6
+ 'apples'.plural?.should == true
7
+ 'apple'.plural?.should == false
8
+ end
9
+ end
10
+
11
+ describe "singular?" do
12
+ it "should report singular items as singular" do
13
+ 'apples'.singular?.should == false
14
+ 'apple'.singular?.should == true
15
+ end
16
+ end
17
+
18
+ describe "indent" do
19
+ it "should default the indentional level to 2 spaces" do
20
+ 'apples'.indent.should == " apples"
21
+ end
22
+
23
+ it "should accept an indentional level" do
24
+ 'apples'.indent(4).should == " apples"
25
+ end
26
+
27
+ it "should indent each line of the string" do
28
+ "apples\noranges".indent(2).should == " apples\n oranges"
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,17 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe Symbol do
4
+ describe "plural?" do
5
+ it "should report plural symbols as plural" do
6
+ :apples.plural?.should == true
7
+ :apple.plural?.should == false
8
+ end
9
+ end
10
+
11
+ describe "singular?" do
12
+ it "should report singular items as singular" do
13
+ :apples.singular?.should == false
14
+ :apple.singular?.should == true
15
+ end
16
+ end
17
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,8 @@
1
- $LOAD_PATH << './lib'
2
- # require 'rubygems'
3
- # gem 'activeresource'
4
- # gem 'rspec'
1
+ $LOAD_PATH.unshift './lib'
5
2
  require 'rubygems'
6
3
  gem 'activeresource'
7
4
  gem 'rspec'
8
5
  gem 'cucumber'
9
6
  require 'cucumber'
10
- require 'activeresource'
7
+ require 'active_resource'
11
8
  require 'dupe'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dupe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.7
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Parker
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-28 00:00:00 -05:00
12
+ date: 2009-12-30 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -36,15 +36,23 @@ extra_rdoc_files:
36
36
  files:
37
37
  - README.rdoc
38
38
  - lib/dupe.rb
39
- - lib/dupe/active_resource.rb
40
- - lib/dupe/attribute.rb
41
- - lib/dupe/configuration.rb
39
+ - lib/dupe/active_resource_extensions.rb
40
+ - lib/dupe/attribute_template.rb
42
41
  - lib/dupe/cucumber_hooks.rb
42
+ - lib/dupe/custom_mocks.rb
43
+ - lib/dupe/database.rb
43
44
  - lib/dupe/dupe.rb
44
- - lib/dupe/mock_service_response.rb
45
+ - lib/dupe/log.rb
46
+ - lib/dupe/mock.rb
47
+ - lib/dupe/model.rb
48
+ - lib/dupe/network.rb
45
49
  - lib/dupe/record.rb
50
+ - lib/dupe/rest_validation.rb
51
+ - lib/dupe/schema.rb
46
52
  - lib/dupe/sequence.rb
53
+ - lib/dupe/singular_plural_detection.rb
47
54
  - lib/dupe/string.rb
55
+ - lib/dupe/symbol.rb
48
56
  - rails_generators/dupe/dupe_generator.rb
49
57
  - rails_generators/dupe/templates/custom_mocks.rb
50
58
  - rails_generators/dupe/templates/dupe_setup.rb
@@ -77,6 +85,20 @@ signing_key:
77
85
  specification_version: 3
78
86
  summary: A tool that helps you mock services while cuking.
79
87
  test_files:
80
- - spec/lib_specs/dupe_record_spec.rb
88
+ - spec/lib_specs/active_resource_extensions_spec.rb
89
+ - spec/lib_specs/attribute_template_spec.rb
90
+ - spec/lib_specs/database_spec.rb
81
91
  - spec/lib_specs/dupe_spec.rb
92
+ - spec/lib_specs/log_spec.rb
93
+ - spec/lib_specs/logged_request_spec.rb
94
+ - spec/lib_specs/mock_definitions_spec.rb
95
+ - spec/lib_specs/mock_spec.rb
96
+ - spec/lib_specs/model_spec.rb
97
+ - spec/lib_specs/network_spec.rb
98
+ - spec/lib_specs/record_spec.rb
99
+ - spec/lib_specs/rest_validation_spec.rb
100
+ - spec/lib_specs/schema_spec.rb
101
+ - spec/lib_specs/sequence_spec.rb
102
+ - spec/lib_specs/string_spec.rb
103
+ - spec/lib_specs/symbol_spec.rb
82
104
  - spec/spec_helper.rb