superdupe 0.4.0 → 0.5.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.
- data/README.markdown +37 -1
- data/lib/superdupe/active_resource_extensions.rb +2 -1
- data/lib/superdupe/dupe.rb +15 -14
- data/lib/superdupe/mock.rb +6 -2
- data/lib/superdupe/record.rb +7 -1
- data/spec/lib_specs/active_resource_extensions_spec.rb +78 -114
- data/spec/spec_helper.rb +1 -1
- metadata +4 -36
- data/spec/lib_specs/attribute_template_spec.rb +0 -173
- data/spec/lib_specs/database_spec.rb +0 -163
- data/spec/lib_specs/dupe_spec.rb +0 -522
- data/spec/lib_specs/hash_pruner_spec.rb +0 -73
- data/spec/lib_specs/log_spec.rb +0 -78
- data/spec/lib_specs/logged_request_spec.rb +0 -22
- data/spec/lib_specs/mock_definitions_spec.rb +0 -58
- data/spec/lib_specs/mock_spec.rb +0 -194
- data/spec/lib_specs/model_spec.rb +0 -95
- data/spec/lib_specs/network_spec.rb +0 -130
- data/spec/lib_specs/record_spec.rb +0 -70
- data/spec/lib_specs/rest_validation_spec.rb +0 -17
- data/spec/lib_specs/schema_spec.rb +0 -109
- data/spec/lib_specs/sequence_spec.rb +0 -39
- data/spec/lib_specs/string_spec.rb +0 -31
- data/spec/lib_specs/symbol_spec.rb +0 -17
@@ -1,70 +0,0 @@
|
|
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
|
@@ -1,17 +0,0 @@
|
|
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
|
@@ -1,109 +0,0 @@
|
|
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
|
-
|
91
|
-
describe "#uniquify" do
|
92
|
-
before do
|
93
|
-
@schema = Dupe::Model::Schema.new
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should only accept a list of symbols" do
|
97
|
-
proc { @schema.uniquify }.should raise_error(ArgumentError, "You must pass at least one attribute to uniquify.")
|
98
|
-
proc { @schema.uniquify :hash => 'value' }.should raise_error(ArgumentError, "You may only pass symbols to uniquify.")
|
99
|
-
proc { @schema.uniquify :one, :two}.should_not raise_error
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should create after_create_callbacks for each symbol passed to it" do
|
103
|
-
@schema.after_create_callbacks.should be_empty
|
104
|
-
@schema.uniquify :title, :label
|
105
|
-
@schema.after_create_callbacks.length.should == 2
|
106
|
-
@schema.after_create_callbacks.first.should be_kind_of(Proc)
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
@@ -1,39 +0,0 @@
|
|
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
|
-
|
10
|
-
it "should accept a block that takes a single parameter" do
|
11
|
-
proc {Sequence.new 1, proc {}}.should raise_error(ArgumentError, "Your block must accept a single parameter")
|
12
|
-
proc {Sequence.new 1, proc {|n| n}}.should_not raise_error
|
13
|
-
proc {Sequence.new 1, proc {|n,m| n}}.should raise_error(ArgumentError, "Your block must accept a single parameter")
|
14
|
-
s = Sequence.new 1, proc {|n| "email-#{n}@address.com"}
|
15
|
-
s.current_value.should == 1
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe "next" do
|
20
|
-
it "should return the next value in the sequence, then increment the current value" do
|
21
|
-
s = Sequence.new
|
22
|
-
s.next.should == 1
|
23
|
-
s.current_value.should == 2
|
24
|
-
s.next.should == 2
|
25
|
-
s.current_value.should == 3
|
26
|
-
|
27
|
-
s = Sequence.new(500)
|
28
|
-
s.next.should == 500
|
29
|
-
s.current_value.should == 501
|
30
|
-
s.next.should == 501
|
31
|
-
s.current_value.should == 502
|
32
|
-
|
33
|
-
s = Sequence.new 1, proc {|n| "email-#{n}@address.com"}
|
34
|
-
s.next.should == "email-1@address.com"
|
35
|
-
s.next.should == "email-2@address.com"
|
36
|
-
s.current_value.should == 3
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,31 +0,0 @@
|
|
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
|
@@ -1,17 +0,0 @@
|
|
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
|