agree2 0.1.1
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/History.txt +0 -0
- data/License.txt +20 -0
- data/README.rdoc +165 -0
- data/Rakefile +97 -0
- data/lib/agree2/agreement.rb +71 -0
- data/lib/agree2/base.rb +147 -0
- data/lib/agree2/client.rb +101 -0
- data/lib/agree2/party.rb +23 -0
- data/lib/agree2/proxy_collection.rb +76 -0
- data/lib/agree2/template.rb +100 -0
- data/lib/agree2/user.rb +73 -0
- data/lib/agree2.rb +34 -0
- data/spec/agreement_spec.rb +190 -0
- data/spec/client_spec.rb +49 -0
- data/spec/fixtures/agreement.json +50 -0
- data/spec/fixtures/party.json +15 -0
- data/spec/party_spec.rb +138 -0
- data/spec/proxy_collection_spec.rb +124 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/template_spec.rb +89 -0
- data/spec/user_spec.rb +77 -0
- metadata +118 -0
data/spec/party_spec.rb
ADDED
@@ -0,0 +1,138 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
require 'open-uri'
|
3
|
+
#require 'hpricot'
|
4
|
+
require 'oauth/request_proxy/rack_request'
|
5
|
+
require 'rack/request'
|
6
|
+
require 'rack/mock'
|
7
|
+
|
8
|
+
include Agree2
|
9
|
+
describe Party do
|
10
|
+
before(:each) do
|
11
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
12
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
13
|
+
@agreement=Agreement.new @user,{:permalink=>'hello'}
|
14
|
+
@json=IO.read(File.join(File.dirname(__FILE__),"fixtures","party.json"))
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "Create new" do
|
18
|
+
before(:each) do
|
19
|
+
@party=Party.new(@agreement,{:first_name=>"Bob",:last_name=>"Wildcat",:email=>'bob@gmail.inv'})
|
20
|
+
end
|
21
|
+
it "should be new record" do
|
22
|
+
@party.should be_new_record
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should have agreement" do
|
26
|
+
@party.agreement.should==@agreement
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a user" do
|
30
|
+
@party.user.should==@user
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should have first_name" do
|
34
|
+
@party.first_name.should=="Bob"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should have last_name" do
|
38
|
+
@party.last_name.should=="Wildcat"
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "Save to Server" do
|
42
|
+
before(:each) do
|
43
|
+
@user.should_receive(:post).with("/agreements/hello/parties",
|
44
|
+
{'party'=>{:first_name=>"Bob",:last_name=>"Wildcat",:email=>'bob@gmail.inv'}}).and_return(@json)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should save and return true" do
|
48
|
+
@party.save
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should no longer be new record" do
|
52
|
+
@party.save
|
53
|
+
@party.should_not be_new_record
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should have a permalink" do
|
57
|
+
@party.save
|
58
|
+
@party.id.should==1102
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "from json" do
|
65
|
+
|
66
|
+
before(:each) do
|
67
|
+
@party=Party.new(@agreement,@json)
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should have agreement" do
|
71
|
+
@party.agreement.should==@agreement
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should have a user" do
|
75
|
+
@party.user.should==@user
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should have first_name" do
|
79
|
+
@party.first_name.should=="Bob"
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should have last_name" do
|
83
|
+
@party.last_name.should=="Wildcat"
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should have a path" do
|
87
|
+
@party.path.should=="/agreements/hello/parties/1102"
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should have a url" do
|
91
|
+
@party.to_url.should=="https://agree2.com/agreements/hello/parties/1102"
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should generate present url" do
|
95
|
+
present_url=@party.present
|
96
|
+
present_url=~/^(http.*)\?(.*)$/
|
97
|
+
$1.should=="https://agree2.com/present/hello/to/bob@gmail.inv"
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should verify present url" do
|
101
|
+
present_url=@party.present
|
102
|
+
request = Rack::Request.new(Rack::MockRequest.env_for(present_url))
|
103
|
+
OAuth::Signature.verify(request,{:consumer=>@client.consumer,:token=>@user.access_token}).should==true
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "Save to Server" do
|
108
|
+
before(:each) do
|
109
|
+
@user.should_receive(:put).with("/agreements/hello/parties/1102",
|
110
|
+
{'party'=>@party.attributes}).and_return(@json)
|
111
|
+
end
|
112
|
+
|
113
|
+
it "should save and return true" do
|
114
|
+
@party.save
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
describe Agree2::Party, "party hash validation" do
|
123
|
+
before(:each) do
|
124
|
+
@hash={:first_name=>'Bob',:last_name=>'Wilson',:email=>'bob@gmail.com',:organization_name=>'SomeCo Inc.'}
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should validate" do
|
128
|
+
lambda {Party.validate_party_hash(@hash).should==true}.should_not raise_error
|
129
|
+
end
|
130
|
+
|
131
|
+
[:first_name,:last_name,:email].each do |field|
|
132
|
+
it "should require #{field.to_s}" do
|
133
|
+
@hash.delete(field)
|
134
|
+
lambda {Party.validate_party_hash(@hash)}.should raise_error(ArgumentError)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Agree2::ProxyCollection do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
7
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
8
|
+
end
|
9
|
+
describe "load" do
|
10
|
+
before(:each) do
|
11
|
+
@agreements=Agree2::ProxyCollection.new(@user,"/agreements")
|
12
|
+
@json="[#{IO.read(File.join(File.dirname(__FILE__),"fixtures","agreement.json"))}]"
|
13
|
+
@user.stub!(:get).and_return(@json)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have a path" do
|
17
|
+
@agreements.path.should=="/agreements"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have singular" do
|
21
|
+
@agreements.singular.should=='Agreement'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should call web service" do
|
25
|
+
@user.should_receive(:get).with("/agreements").and_return(@json)
|
26
|
+
@agreements.length.should==1
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should have a user" do
|
30
|
+
@agreements.user.should==@user
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "with default value" do
|
35
|
+
before(:each) do
|
36
|
+
@agreements=Agree2::ProxyCollection.new(@user,"/agreements",nil,[{:permalink=>'hello'}])
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should have a path" do
|
40
|
+
@agreements.path.should=="/agreements"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should have singular" do
|
44
|
+
@agreements.singular.should=='Agreement'
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should have a user" do
|
48
|
+
@agreements.user.should==@user
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should have one item" do
|
52
|
+
@agreements.length.should==1
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should not call web service" do
|
56
|
+
@user.should_not_receive(:get)
|
57
|
+
@agreements.first
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should find an individual resource" do
|
61
|
+
@user.should_receive(:get).with('/agreements/something').and_return(
|
62
|
+
IO.read(File.join(File.dirname(__FILE__),"fixtures","agreement.json")))
|
63
|
+
@agreements.find('something')
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should instantiate a new party" do
|
67
|
+
Agree2::Agreement.should_receive(:new).with(@user,{:title=>"Test",:body=>"Body"})
|
68
|
+
@agreements.build :title=>"Test",:body=>"Body"
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should create and save a new party" do
|
72
|
+
@agreement=mock("agreement")
|
73
|
+
Agree2::Agreement.should_receive(:new).with(@user,{:title=>"Test",:body=>"Body"}).and_return(@agreement)
|
74
|
+
@agreement.should_receive(:save)
|
75
|
+
@agreements.create :title=>"Test",:body=>"Body"
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "nested load" do
|
81
|
+
before(:each) do
|
82
|
+
@agreement=Agree2::Agreement.new(@user,{:permalink=>'hello'})
|
83
|
+
@parties=@agreement.parties
|
84
|
+
@json="[#{IO.read(File.join(File.dirname(__FILE__),"fixtures","party.json"))}]"
|
85
|
+
@user.stub!(:get).and_return(@json)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should have a path" do
|
89
|
+
@parties.path.should=="/agreements/hello/parties"
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should have singular" do
|
93
|
+
@parties.singular.should=='Party'
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should call web service" do
|
97
|
+
@user.should_receive(:get).with("/agreements/hello/parties").and_return(@json)
|
98
|
+
@parties.length.should==1
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should have a user" do
|
102
|
+
@parties.user.should==@user
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should find an individual resource" do
|
106
|
+
@user.should_receive(:get).with('/agreements/hello/parties/123').and_return(
|
107
|
+
IO.read(File.join(File.dirname(__FILE__),"fixtures","party.json")))
|
108
|
+
@parties.find(123)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should instantiate a new party" do
|
112
|
+
Agree2::Party.should_receive(:new).with(@agreement,{:first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'})
|
113
|
+
@parties.build :first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should create and save a new party" do
|
117
|
+
@party=mock("party")
|
118
|
+
Agree2::Party.should_receive(:new).with(@agreement,{:first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'}).and_return(@party)
|
119
|
+
@party.should_receive(:save)
|
120
|
+
@parties.create :first_name=>"Bob",:last_name=>"Galbraith",:email=>'bob@bob.inv'
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Agree2::Template do
|
4
|
+
before(:each) do
|
5
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
6
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
7
|
+
@template=Agree2::Template.new(@user,{:permalink=>'hello'})
|
8
|
+
@fields={:amount=>100}
|
9
|
+
@bob={:first_name=>'Bob',:last_name=>'Green',:email=>'bob@green.inv'}
|
10
|
+
@json=IO.read(File.join(File.dirname(__FILE__),"fixtures","agreement.json"))
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have a user" do
|
15
|
+
@template.user.should==@user
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have correct path" do
|
19
|
+
@template.path.should=="/masters/hello"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have correct url" do
|
23
|
+
@template.to_url.should=="https://agree2.com/masters/hello"
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "prepare" do
|
27
|
+
before(:each) do
|
28
|
+
@agreement=mock('agreement')
|
29
|
+
@user.stub!(:get).and_return(@agreement)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should call raw_prepare with correct parameters" do
|
33
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,:parties=>{:client=>@bob})
|
34
|
+
@template.prepare(@fields,{:client=>@bob})
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should call raw_prepare with correct parameters for application" do
|
38
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,:parties=>{:client=>@bob,'service'=>:application})
|
39
|
+
@template.prepare(@fields,{:client=>@bob},'service')
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should call raw_prepare with correct parameters" do
|
43
|
+
@user.should_receive(:post).with("/masters/hello/prepare",:fields=>@fields,:parties=>{:client=>@bob}).and_return(@json)
|
44
|
+
@template.prepare(@fields,{:client=>@bob})
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should raise exception and not receive raw_prepare when parties aren't valid" do
|
48
|
+
@bob.delete(:email)
|
49
|
+
@template.should_not_receive(:raw_prepare)
|
50
|
+
lambda {@template.prepare(@fields,{:client=>@bob})}.should raise_error(ArgumentError)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "prepare and sign" do
|
55
|
+
before(:each) do
|
56
|
+
@agreement=mock('agreement')
|
57
|
+
@user.stub!(:get).and_return(@agreement)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should call raw_prepare with correct parameters" do
|
61
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,
|
62
|
+
:parties=>{:client=>@bob,'application'=>:application},:sign=>'application')
|
63
|
+
@template.prepare_and_sign(@fields,{:client=>@bob})
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should call raw_prepare with correct parameters for application" do
|
67
|
+
@template.should_receive(:raw_prepare).with(:fields=>@fields,:parties=>{:client=>@bob,'service'=>:application},:sign=>'service')
|
68
|
+
@template.prepare_and_sign(@fields,{:client=>@bob},'service')
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should call raw_prepare with correct parameters" do
|
72
|
+
@user.should_receive(:post).with("/masters/hello/prepare",:fields=>@fields,
|
73
|
+
:parties=>{:client=>@bob,'application'=>:application},:sign=>'application').and_return(@json)
|
74
|
+
@template.prepare_and_sign(@fields,{:client=>@bob})
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should raise exception and not receive raw_prepare when parties aren't valid" do
|
78
|
+
@bob.delete(:email)
|
79
|
+
@template.should_not_receive(:raw_prepare)
|
80
|
+
lambda {@template.prepare_and_sign(@fields,{:client=>@bob})}.should raise_error(ArgumentError)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should raise exception and not receive raw_prepare when no parties are present" do
|
84
|
+
@bob.delete(:email)
|
85
|
+
@template.should_not_receive(:raw_prepare)
|
86
|
+
lambda {@template.prepare_and_sign(@fields,{})}.should raise_error(ArgumentError)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/spec/user_spec.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
+
|
3
|
+
describe Agree2::User do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@client=Agree2::Client.new "client_key","client_secret"
|
7
|
+
@user=Agree2::User.new(@client,"token","token_secret")
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should create user" do
|
11
|
+
@user.client.should==@client
|
12
|
+
@user.access_token.consumer.should==@client.consumer
|
13
|
+
@user.token.should=="token"
|
14
|
+
@user.secret.should=="token_secret"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should find all agreements" do
|
18
|
+
@agreements=[]
|
19
|
+
@json="[]"
|
20
|
+
@user.should_receive(:get).with("/agreements").and_return(@json)
|
21
|
+
@user.agreements.length.should==0
|
22
|
+
@user.agreements.should==@agreements
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should find all templates" do
|
26
|
+
@templates=[]
|
27
|
+
@json="[]"
|
28
|
+
@user.should_receive(:get).with("/masters").and_return(@json)
|
29
|
+
@user.templates.length.should==0
|
30
|
+
@user.templates.should==@templates
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "http calls" do
|
34
|
+
before(:each) do
|
35
|
+
@token=@user.access_token
|
36
|
+
@json='{"hello":"world"}'
|
37
|
+
@response=mock("response")
|
38
|
+
@response.stub!(:code).and_return("200")
|
39
|
+
@response.stub!(:body).and_return(@json)
|
40
|
+
end
|
41
|
+
|
42
|
+
[:get,:head,:delete].each do |m|
|
43
|
+
it "should perform http #{m.to_s}" do
|
44
|
+
@token.should_receive(m).with("/test",{'Content-Type'=>'application/json','Accept'=>'application/json'}).and_return(@response)
|
45
|
+
@user.send(m,"/test").should==@json
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
[:post,:put].each do |m|
|
50
|
+
it "should perform http #{m.to_s} with no data" do
|
51
|
+
@token.should_receive(m).with("/test",nil,{'Content-Type'=>'application/json','Accept'=>'application/json'}).and_return(@response)
|
52
|
+
@user.send(m,"/test").should==@json
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should perform http #{m.to_s} with hash" do
|
56
|
+
@token.should_receive(m).with("/test",'{"test":"this"}',{'Content-Type'=>'application/json','Accept'=>'application/json'}).and_return(@response)
|
57
|
+
@user.send(m,"/test",{:test=>'this'}).should==@json
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "handle_response" do
|
62
|
+
it "should return body" do
|
63
|
+
@user.send(:handle_response,@response).should==@json
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should return handle redirect" do
|
67
|
+
@response.stub!(:code).and_return("302")
|
68
|
+
@response.stub!(:[]).and_return('https://agree2.com/agreements/my_agreement')
|
69
|
+
@user.should_receive(:get).with('/agreements/my_agreement').and_return('{"permalink":"my_agreement","title":"hello there"}')
|
70
|
+
@agreement=@user.send(:handle_response,@response)
|
71
|
+
@agreement.permalink.should=='my_agreement'
|
72
|
+
@agreement.title.should=='hello there'
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
metadata
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: agree2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pelle Braendgaard
|
8
|
+
- Lau Taarnskov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2008-08-23 00:00:00 -04:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: ruby-hmac
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 0.3.1
|
25
|
+
version:
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: oauth
|
28
|
+
type: :runtime
|
29
|
+
version_requirement:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.2.4
|
35
|
+
version:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: json
|
38
|
+
type: :runtime
|
39
|
+
version_requirement:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 1.1.3
|
45
|
+
version:
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: activesupport
|
48
|
+
type: :runtime
|
49
|
+
version_requirement:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.0.2
|
55
|
+
version:
|
56
|
+
description: Agree2 Ruby client library
|
57
|
+
email:
|
58
|
+
- support@agree2.com
|
59
|
+
executables: []
|
60
|
+
|
61
|
+
extensions: []
|
62
|
+
|
63
|
+
extra_rdoc_files:
|
64
|
+
- History.txt
|
65
|
+
- License.txt
|
66
|
+
- README.rdoc
|
67
|
+
files:
|
68
|
+
- History.txt
|
69
|
+
- License.txt
|
70
|
+
- README.rdoc
|
71
|
+
- Rakefile
|
72
|
+
- lib/agree2.rb
|
73
|
+
- lib/agree2/base.rb
|
74
|
+
- lib/agree2/client.rb
|
75
|
+
- lib/agree2/user.rb
|
76
|
+
- lib/agree2/agreement.rb
|
77
|
+
- lib/agree2/party.rb
|
78
|
+
- lib/agree2/proxy_collection.rb
|
79
|
+
- lib/agree2/template.rb
|
80
|
+
has_rdoc: true
|
81
|
+
homepage: http://agree2.rubyforge.org
|
82
|
+
licenses: []
|
83
|
+
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options:
|
86
|
+
- --main
|
87
|
+
- README.rdoc
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: "0"
|
95
|
+
version:
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: "0"
|
101
|
+
version:
|
102
|
+
requirements: []
|
103
|
+
|
104
|
+
rubyforge_project: agree2
|
105
|
+
rubygems_version: 1.3.2
|
106
|
+
signing_key:
|
107
|
+
specification_version: 2
|
108
|
+
summary: Agree2 Ruby client library
|
109
|
+
test_files:
|
110
|
+
- spec/spec_helper.rb
|
111
|
+
- spec/agreement_spec.rb
|
112
|
+
- spec/client_spec.rb
|
113
|
+
- spec/party_spec.rb
|
114
|
+
- spec/proxy_collection_spec.rb
|
115
|
+
- spec/template_spec.rb
|
116
|
+
- spec/user_spec.rb
|
117
|
+
- spec/fixtures/agreement.json
|
118
|
+
- spec/fixtures/party.json
|