sugarcrm 0.9.12 → 0.9.13
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.rdoc +16 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/sugarcrm/attributes/attribute_methods.rb +1 -1
- data/lib/sugarcrm/attributes/attribute_validations.rb +29 -4
- data/lib/sugarcrm/base.rb +77 -18
- data/lib/sugarcrm/connection/request.rb +4 -0
- data/lib/sugarcrm/connection/response.rb +1 -0
- data/lib/sugarcrm/connection_pool.rb +1 -1
- data/lib/sugarcrm/finders/finder_methods.rb +59 -53
- data/lib/sugarcrm/session.rb +2 -6
- data/sugarcrm.gemspec +5 -6
- data/test/test_connection_pool.rb +3 -3
- data/test/test_finders.rb +183 -0
- data/test/test_sugarcrm.rb +73 -140
- metadata +34 -25
- data/sugarcrm.tmproj +0 -952
@@ -0,0 +1,183 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestFinders < ActiveSupport::TestCase
|
4
|
+
context "A SugarCRM::Base instance" do
|
5
|
+
should "always return an Array when :all" do
|
6
|
+
users = SugarCRM::User.all(:limit => 10)
|
7
|
+
assert_instance_of Array, users
|
8
|
+
users = SugarCRM::User.find(:all, :conditions => {:user_name => '= admin'})
|
9
|
+
assert_instance_of Array, users
|
10
|
+
assert users.length == 1
|
11
|
+
users = SugarCRM::User.find(:all, :conditions => {:user_name => '= invalid_user_123'})
|
12
|
+
assert_instance_of Array, users
|
13
|
+
assert users.length == 0
|
14
|
+
end
|
15
|
+
|
16
|
+
should "support finding first instance (sorted by attribute)" do
|
17
|
+
account = SugarCRM::Account.first({
|
18
|
+
:order_by => 'name'
|
19
|
+
})
|
20
|
+
assert_instance_of SugarCRM::Account, account
|
21
|
+
end
|
22
|
+
|
23
|
+
should "support finding last instance (sorted by attribute)" do
|
24
|
+
expected_account = SugarCRM::Account.first({:order_by => 'name DESC'})
|
25
|
+
account = SugarCRM::Account.last({:order_by => 'name'})
|
26
|
+
assert_equal expected_account.id, account.id
|
27
|
+
|
28
|
+
expected_account = SugarCRM::Account.first({:order_by => 'name DESC'})
|
29
|
+
account = SugarCRM::Account.last({:order_by => 'name ASC'})
|
30
|
+
assert_equal expected_account.id, account.id
|
31
|
+
|
32
|
+
expected_account = SugarCRM::Account.first({:order_by => 'name ASC'})
|
33
|
+
account = SugarCRM::Account.last({:order_by => 'name DESC'})
|
34
|
+
assert_equal expected_account.id, account.id
|
35
|
+
end
|
36
|
+
|
37
|
+
should "support finding last instance with symbol as :order_by option" do
|
38
|
+
expected_account = SugarCRM::Account.first({:order_by => 'id DESC'})
|
39
|
+
account = SugarCRM::Account.last({:order_by => :id})
|
40
|
+
assert_equal expected_account.id, account.id
|
41
|
+
end
|
42
|
+
|
43
|
+
should "support finding last instance (last created)" do
|
44
|
+
expected_account = SugarCRM::Account.first({:order_by => 'date_entered DESC'})
|
45
|
+
account = SugarCRM::Account.last
|
46
|
+
assert_equal expected_account.id, account.id
|
47
|
+
end
|
48
|
+
|
49
|
+
should "support returning only certain fields" do
|
50
|
+
user = SugarCRM::User.first(:fields => [:first_name, :department])
|
51
|
+
assert_instance_of SugarCRM::User, user
|
52
|
+
end
|
53
|
+
|
54
|
+
should "raise a RuntimeError when searching for last instance with multiple order clauses" do
|
55
|
+
assert_raise(RuntimeError){ SugarCRM::Account.last({:order_by => 'name, id DESC'}) }
|
56
|
+
end
|
57
|
+
|
58
|
+
should "raise a RuntimeError when searching for last instance if order clause has weird format" do
|
59
|
+
assert_raise(RuntimeError){ SugarCRM::Account.last({:order_by => 'name id DESC'}) }
|
60
|
+
assert_raise(RuntimeError){ SugarCRM::Account.last({:order_by => 'name DESC id'}) }
|
61
|
+
end
|
62
|
+
|
63
|
+
should "support searching based on conditions" do
|
64
|
+
accounts = SugarCRM::Account.all({
|
65
|
+
:conditions => { :billing_address_postalcode => ["> '70000'", "< '79999'" ] },
|
66
|
+
:limit => 2,
|
67
|
+
:order_by => 'billing_address_postalcode'
|
68
|
+
})
|
69
|
+
assert_instance_of SugarCRM::Account, accounts.first
|
70
|
+
end
|
71
|
+
|
72
|
+
should "support searching based on SQL operators" do
|
73
|
+
accounts = SugarCRM::Account.all({
|
74
|
+
:conditions => { :name => "LIKE '%Inc%'" }
|
75
|
+
})
|
76
|
+
assert accounts
|
77
|
+
assert_instance_of SugarCRM::Account, accounts.first
|
78
|
+
end
|
79
|
+
|
80
|
+
should "return an an instance of itself when sent #find(id)" do
|
81
|
+
assert_instance_of SugarCRM::User, SugarCRM::User.find(1)
|
82
|
+
end
|
83
|
+
|
84
|
+
should "receive a response containing all fields when sent #get_entry" do
|
85
|
+
u = SugarCRM::User.find(1)
|
86
|
+
assert_equal u.user_name, "admin"
|
87
|
+
end
|
88
|
+
|
89
|
+
should "return an array of records when sent #find([id1, id2, id3])" do
|
90
|
+
users = SugarCRM::User.find(["seed_sarah_id", 1])
|
91
|
+
assert_equal "admin", users.last.user_name
|
92
|
+
end
|
93
|
+
|
94
|
+
# test Base#find_by_sql edge case
|
95
|
+
should "return an array of records with small limit and an offset of 0" do
|
96
|
+
accounts = SugarCRM::Account.all(:limit => 3, :offset => 0)
|
97
|
+
assert_equal 3, accounts.size
|
98
|
+
end
|
99
|
+
|
100
|
+
# test Base#find_by_sql edge case: force slize size to vary up and down
|
101
|
+
should "return an array of records with small offset and a limit greater than 5 but not divisible by 5" do
|
102
|
+
accounts = SugarCRM::Account.all(:limit => 13, :offset => 2)
|
103
|
+
assert_equal 13, accounts.size
|
104
|
+
end
|
105
|
+
|
106
|
+
# test Base#find_by_sql standard case
|
107
|
+
should "return an array of records with high limit" do
|
108
|
+
accounts = SugarCRM::Account.all(:limit => 12)
|
109
|
+
assert_equal 12, accounts.size
|
110
|
+
end
|
111
|
+
|
112
|
+
should "accept a block" do
|
113
|
+
# try small limit which will return result on the first result slice (and call yield block only once)
|
114
|
+
count = 0
|
115
|
+
assert_nothing_raised do
|
116
|
+
SugarCRM::Account.all(:limit => 2){|a|
|
117
|
+
count += 1
|
118
|
+
}
|
119
|
+
end
|
120
|
+
assert_equal 2, count
|
121
|
+
|
122
|
+
# try larger limit which will require multiple result slices to be fetched and yielded individually (yield block called for each result slice)
|
123
|
+
count = 0
|
124
|
+
assert_nothing_raised do
|
125
|
+
SugarCRM::Account.all(:limit => 12){|a|
|
126
|
+
count += 1
|
127
|
+
}
|
128
|
+
end
|
129
|
+
assert_equal 12, count
|
130
|
+
end
|
131
|
+
|
132
|
+
should "retrieve all records (with no limit option) correctly" do
|
133
|
+
count = 0
|
134
|
+
SugarCRM::Account.all{|a|
|
135
|
+
count += 1
|
136
|
+
}
|
137
|
+
assert_equal SugarCRM::Account.count, count
|
138
|
+
end
|
139
|
+
|
140
|
+
should "return an array of records when using :order_by, :limit, and :offset options" do
|
141
|
+
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 3, :offset => 10)
|
142
|
+
accounts_api = SugarCRM.connection.get_entry_list('Accounts', '1=1', :order_by => 'name', :limit => 3, :offset => 10)
|
143
|
+
assert_equal accounts_api, accounts
|
144
|
+
end
|
145
|
+
|
146
|
+
should "return an array of records working around a SugarCRM bug when :limit > :offset" do
|
147
|
+
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 10, :offset => 2)
|
148
|
+
assert_equal 10, accounts.size
|
149
|
+
end
|
150
|
+
|
151
|
+
should "return an array of 1 record with :limit => 1, :offset => 1" do
|
152
|
+
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 1, :offset => 1)
|
153
|
+
assert_equal 1, accounts.size
|
154
|
+
end
|
155
|
+
|
156
|
+
should "ignore :offset => 0" do
|
157
|
+
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 3)
|
158
|
+
accounts_offset = SugarCRM::Account.all(:order_by => 'name', :limit => 3, :offset => 0)
|
159
|
+
assert_equal accounts, accounts_offset
|
160
|
+
end
|
161
|
+
|
162
|
+
should "compute offsets correctly" do
|
163
|
+
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 10, :offset => 3)
|
164
|
+
accounts_first_slice = SugarCRM::Account.all(:order_by => 'name', :limit => 5, :offset => 3)
|
165
|
+
accounts_second_slice = SugarCRM::Account.all(:order_by => 'name', :limit => 5, :offset => 8)
|
166
|
+
assert_equal accounts, accounts_first_slice.concat(accounts_second_slice)
|
167
|
+
end
|
168
|
+
|
169
|
+
should "return an instance of User when sent User#find_by_username" do
|
170
|
+
u = SugarCRM::User.find_by_user_name("sarah")
|
171
|
+
assert_equal "sarah@example.com", u.email_addresses.first.email_address
|
172
|
+
end
|
173
|
+
|
174
|
+
should "create or retrieve a record when #find_or_create_by_name" do
|
175
|
+
a = SugarCRM::Account.find_or_create_by_name("Really Important Co. Name")
|
176
|
+
assert_instance_of SugarCRM::Account, a
|
177
|
+
assert !a.new?
|
178
|
+
b = SugarCRM::Account.find_or_create_by_name("Really Important Co. Name")
|
179
|
+
assert a == b
|
180
|
+
assert a.delete
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
data/test/test_sugarcrm.rb
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
class TestSugarCRM < ActiveSupport::TestCase
|
4
|
+
context "A class inheriting SugarCRM::Base" do
|
5
|
+
should "implement self.class.count" do
|
6
|
+
nb_accounts = SugarCRM::Account.count
|
7
|
+
assert nb_accounts > 0
|
8
|
+
nb_inc_accounts = SugarCRM::Account.count(:conditions => {:name => "LIKE '%Inc'"})
|
9
|
+
nb_inc_accounts_size = SugarCRM::Account.all(:conditions => {:name => "LIKE '%Inc'"}).size
|
10
|
+
assert nb_inc_accounts > 0
|
11
|
+
assert nb_inc_accounts < nb_accounts
|
12
|
+
assert_equal nb_inc_accounts_size, nb_inc_accounts
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
4
16
|
context "A SugarCRM::Base instance" do
|
5
17
|
|
6
18
|
should "return the module name" do
|
@@ -11,7 +23,7 @@ class TestSugarCRM < ActiveSupport::TestCase
|
|
11
23
|
assert_instance_of ActiveSupport::HashWithIndifferentAccess, SugarCRM::Account._module.fields
|
12
24
|
end
|
13
25
|
|
14
|
-
should "
|
26
|
+
should "respond to self#methods" do
|
15
27
|
assert_instance_of Array, SugarCRM::User.new.methods
|
16
28
|
end
|
17
29
|
|
@@ -50,17 +62,6 @@ class TestSugarCRM < ActiveSupport::TestCase
|
|
50
62
|
end
|
51
63
|
end
|
52
64
|
|
53
|
-
should "always return an Array when :all" do
|
54
|
-
users = SugarCRM::User.all(:limit => 10)
|
55
|
-
assert_instance_of Array, users
|
56
|
-
users = SugarCRM::User.find(:all, :conditions => {:user_name => '= admin'})
|
57
|
-
assert_instance_of Array, users
|
58
|
-
assert users.length == 1
|
59
|
-
users = SugarCRM::User.find(:all, :conditions => {:user_name => '= invalid_user_123'})
|
60
|
-
assert_instance_of Array, users
|
61
|
-
assert users.length == 0
|
62
|
-
end
|
63
|
-
|
64
65
|
should "create, modify, and delete a record" do
|
65
66
|
u = SugarCRM::User.new
|
66
67
|
assert u.email1?
|
@@ -81,131 +82,9 @@ class TestSugarCRM < ActiveSupport::TestCase
|
|
81
82
|
assert m.destroyed?
|
82
83
|
end
|
83
84
|
|
84
|
-
should "
|
85
|
-
|
86
|
-
|
87
|
-
})
|
88
|
-
assert_instance_of SugarCRM::Account, account
|
89
|
-
end
|
90
|
-
|
91
|
-
should "support finding last instance (sorted by attribute)" do
|
92
|
-
expected_account = SugarCRM::Account.first({:order_by => 'name DESC'})
|
93
|
-
account = SugarCRM::Account.last({:order_by => 'name'})
|
94
|
-
assert_equal expected_account.id, account.id
|
95
|
-
|
96
|
-
expected_account = SugarCRM::Account.first({:order_by => 'name DESC'})
|
97
|
-
account = SugarCRM::Account.last({:order_by => 'name ASC'})
|
98
|
-
assert_equal expected_account.id, account.id
|
99
|
-
|
100
|
-
expected_account = SugarCRM::Account.first({:order_by => 'name ASC'})
|
101
|
-
account = SugarCRM::Account.last({:order_by => 'name DESC'})
|
102
|
-
assert_equal expected_account.id, account.id
|
103
|
-
end
|
104
|
-
|
105
|
-
should "support finding last instance (last created)" do
|
106
|
-
expected_account = SugarCRM::Account.first({:order_by => 'date_entered DESC'})
|
107
|
-
account = SugarCRM::Account.last
|
108
|
-
assert_equal expected_account.id, account.id
|
109
|
-
end
|
110
|
-
|
111
|
-
should "support returning only certain fields" do
|
112
|
-
user = SugarCRM::User.first(:fields => [:first_name, :department])
|
113
|
-
assert_instance_of SugarCRM::User, user
|
114
|
-
end
|
115
|
-
|
116
|
-
should "raise a RuntimeError when searching for last instance with multiple order clauses" do
|
117
|
-
assert_raise(RuntimeError){ SugarCRM::Account.last({:order_by => 'name, id DESC'}) }
|
118
|
-
end
|
119
|
-
|
120
|
-
should "raise a RuntimeError when searching for last instance if order clause has weird format" do
|
121
|
-
assert_raise(RuntimeError){ SugarCRM::Account.last({:order_by => 'name id DESC'}) }
|
122
|
-
assert_raise(RuntimeError){ SugarCRM::Account.last({:order_by => 'name DESC id'}) }
|
123
|
-
end
|
124
|
-
|
125
|
-
should "support searching based on conditions" do
|
126
|
-
accounts = SugarCRM::Account.all({
|
127
|
-
:conditions => { :billing_address_postalcode => ["> '70000'", "< '79999'" ] },
|
128
|
-
:limit => '10',
|
129
|
-
:order_by => 'billing_address_postalcode'
|
130
|
-
})
|
131
|
-
assert_instance_of SugarCRM::Account, accounts.first
|
132
|
-
end
|
133
|
-
|
134
|
-
should "support searching based on SQL operators" do
|
135
|
-
accounts = SugarCRM::Account.all({
|
136
|
-
:conditions => { :name => "LIKE '%Inc%'" }
|
137
|
-
})
|
138
|
-
assert accounts
|
139
|
-
assert_instance_of SugarCRM::Account, accounts.first
|
140
|
-
end
|
141
|
-
|
142
|
-
should "return an an instance of itself when sent #find(id)" do
|
143
|
-
assert_instance_of SugarCRM::User, SugarCRM::User.find(1)
|
144
|
-
end
|
145
|
-
|
146
|
-
should "receive a response containing all fields when sent #get_entry" do
|
147
|
-
u = SugarCRM::User.find(1)
|
148
|
-
assert_equal u.user_name, "admin"
|
149
|
-
end
|
150
|
-
|
151
|
-
should "return an array of records when sent #find([id1, id2, id3])" do
|
152
|
-
users = SugarCRM::User.find(["seed_sarah_id", 1])
|
153
|
-
assert_equal "admin", users.last.user_name
|
154
|
-
end
|
155
|
-
|
156
|
-
# test Base#find_by_sql edge case
|
157
|
-
should "return an array of records with small limit and an offset of 0" do
|
158
|
-
accounts = SugarCRM::Account.all(:limit => 3, :offset => 0)
|
159
|
-
assert_equal 3, accounts.size
|
160
|
-
end
|
161
|
-
|
162
|
-
# test Base#find_by_sql standard case
|
163
|
-
should "return an array of records with high limit" do
|
164
|
-
accounts = SugarCRM::Account.all(:limit => 12)
|
165
|
-
assert_equal 12, accounts.size
|
166
|
-
end
|
167
|
-
|
168
|
-
should "return an array of records when using :order_by, :limit, and :offset options" do
|
169
|
-
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 3, :offset => 10)
|
170
|
-
accounts_api = SugarCRM.connection.get_entry_list('Accounts', '1=1', :order_by => 'name', :limit => 3, :offset => 10)
|
171
|
-
assert_equal accounts_api, accounts
|
172
|
-
end
|
173
|
-
|
174
|
-
should "return an array of records working around a SugarCRM bug when :limit > :offset" do
|
175
|
-
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 10, :offset => 2)
|
176
|
-
assert_equal 10, accounts.size
|
177
|
-
end
|
178
|
-
|
179
|
-
should "return an array of 1 record with :limit => 1, :offset => 1" do
|
180
|
-
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 1, :offset => 1)
|
181
|
-
assert_equal 1, accounts.size
|
182
|
-
end
|
183
|
-
|
184
|
-
should "ignore :offset => 0" do
|
185
|
-
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 3)
|
186
|
-
accounts_offset = SugarCRM::Account.all(:order_by => 'name', :limit => 3, :offset => 0)
|
187
|
-
assert_equal accounts, accounts_offset
|
188
|
-
end
|
189
|
-
|
190
|
-
should "compute offsets correctly" do
|
191
|
-
accounts = SugarCRM::Account.all(:order_by => 'name', :limit => 10, :offset => 3)
|
192
|
-
accounts_first_slice = SugarCRM::Account.all(:order_by => 'name', :limit => 5, :offset => 3)
|
193
|
-
accounts_second_slice = SugarCRM::Account.all(:order_by => 'name', :limit => 5, :offset => 8)
|
194
|
-
assert_equal accounts, accounts_first_slice.concat(accounts_second_slice)
|
195
|
-
end
|
196
|
-
|
197
|
-
should "return an instance of User when sent User#find_by_username" do
|
198
|
-
u = SugarCRM::User.find_by_user_name("sarah")
|
199
|
-
assert_equal "sarah@example.com", u.email_addresses.first.email_address
|
200
|
-
end
|
201
|
-
|
202
|
-
should "create or retrieve a record when #find_or_create_by_name" do
|
203
|
-
a = SugarCRM::Account.find_or_create_by_name("Really Important Co. Name")
|
204
|
-
assert_instance_of SugarCRM::Account, a
|
205
|
-
assert !a.new?
|
206
|
-
b = SugarCRM::Account.find_or_create_by_name("Really Important Co. Name")
|
207
|
-
assert a == b
|
208
|
-
assert a.delete
|
85
|
+
should "respond to destroy" do
|
86
|
+
a = SugarCRM::Account.first
|
87
|
+
assert a.respond_to? :destroy
|
209
88
|
end
|
210
89
|
|
211
90
|
should "support saving of records with special characters in them" do
|
@@ -232,10 +111,64 @@ class TestSugarCRM < ActiveSupport::TestCase
|
|
232
111
|
b.last_name = orig_last_name
|
233
112
|
b.save!
|
234
113
|
end
|
235
|
-
|
114
|
+
|
115
|
+
should "implement Base#update_attribute" do
|
116
|
+
a = SugarCRM::Account.first
|
117
|
+
orig_name = a.name
|
118
|
+
assert a.update_attribute('name', orig_name + 'test')
|
119
|
+
assert_not_equal orig_name, a.name
|
120
|
+
assert a.update_attribute('name', orig_name) # revert changes
|
121
|
+
end
|
122
|
+
|
123
|
+
should "implement Base#update_attribute!" do
|
124
|
+
a = SugarCRM::Account.first
|
125
|
+
orig_name = a.name
|
126
|
+
assert_nothing_raised do
|
127
|
+
a.update_attribute!('name', orig_name + 'test')
|
128
|
+
end
|
129
|
+
assert_not_equal orig_name, a.name
|
130
|
+
assert a.update_attribute('name', orig_name) # revert changes
|
131
|
+
end
|
132
|
+
|
133
|
+
should "implement Base#update_attributes" do
|
134
|
+
a = SugarCRM::Account.first
|
135
|
+
orig_name = a.name
|
136
|
+
orig_street = a.billing_address_street
|
137
|
+
assert a.update_attributes(:name => orig_name + 'test', :billing_address_street => orig_street + 'test')
|
138
|
+
assert_not_equal orig_name, a.name
|
139
|
+
assert_not_equal orig_street, a.billing_address_street
|
140
|
+
assert a.update_attributes(:name => orig_name, :billing_address_street => orig_street) # revert changes
|
141
|
+
end
|
142
|
+
|
143
|
+
should "implement Base#update_attributes!" do
|
144
|
+
a = SugarCRM::Account.first
|
145
|
+
orig_name = a.name
|
146
|
+
orig_street = a.billing_address_street
|
147
|
+
assert_nothing_raised do
|
148
|
+
a.update_attributes!(:name => orig_name + 'test', :billing_address_street => orig_street + 'test')
|
149
|
+
end
|
150
|
+
assert_not_equal orig_name, a.name
|
151
|
+
assert_not_equal orig_street, a.billing_address_street
|
152
|
+
assert a.update_attributes(:name => orig_name, :billing_address_street => orig_street) # revert changes
|
153
|
+
end
|
154
|
+
|
155
|
+
should "implement Base#persisted?" do
|
156
|
+
a = SugarCRM::Account.new(:name => 'temp')
|
157
|
+
assert ! a.persisted?
|
158
|
+
a.save!
|
159
|
+
assert a.persisted?
|
160
|
+
a.delete
|
161
|
+
assert ! a.persisted?
|
162
|
+
end
|
236
163
|
|
237
|
-
|
238
|
-
|
164
|
+
should "respond to #pretty_print" do
|
165
|
+
assert_respond_to SugarCRM::User.new, :pretty_print
|
166
|
+
end
|
167
|
+
|
168
|
+
should "return an instance's URL" do
|
169
|
+
user = SugarCRM::User.first
|
170
|
+
assert_equal "#{SugarCRM.session.config[:base_url]}/index.php?module=Users&action=DetailView&record=#{user.id}", user.url
|
171
|
+
end
|
239
172
|
end
|
240
173
|
|
241
174
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugarcrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 33
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 9
|
8
|
-
-
|
9
|
-
version: 0.9.
|
9
|
+
- 13
|
10
|
+
version: 0.9.13
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Carl Hicks
|
@@ -15,92 +16,98 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2011-
|
19
|
+
date: 2011-04-06 00:00:00 -07:00
|
19
20
|
default_executable: sugarcrm
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
23
|
+
prerelease: false
|
24
|
+
type: :runtime
|
23
25
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
26
|
none: false
|
25
27
|
requirements:
|
26
28
|
- - ">="
|
27
29
|
- !ruby/object:Gem::Version
|
30
|
+
hash: 7
|
28
31
|
segments:
|
29
32
|
- 3
|
30
33
|
- 0
|
31
34
|
- 0
|
32
35
|
version: 3.0.0
|
33
|
-
|
34
|
-
prerelease: false
|
36
|
+
name: activesupport
|
35
37
|
version_requirements: *id001
|
36
38
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
39
|
+
prerelease: false
|
40
|
+
type: :runtime
|
38
41
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
42
|
none: false
|
40
43
|
requirements:
|
41
44
|
- - ">="
|
42
45
|
- !ruby/object:Gem::Version
|
46
|
+
hash: 3
|
43
47
|
segments:
|
44
48
|
- 0
|
45
49
|
version: "0"
|
46
|
-
|
47
|
-
prerelease: false
|
50
|
+
name: i18n
|
48
51
|
version_requirements: *id002
|
49
52
|
- !ruby/object:Gem::Dependency
|
50
|
-
|
53
|
+
prerelease: false
|
54
|
+
type: :runtime
|
51
55
|
requirement: &id003 !ruby/object:Gem::Requirement
|
52
56
|
none: false
|
53
57
|
requirements:
|
54
58
|
- - ">="
|
55
59
|
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
56
61
|
segments:
|
57
62
|
- 0
|
58
63
|
version: "0"
|
59
|
-
|
60
|
-
prerelease: false
|
64
|
+
name: json
|
61
65
|
version_requirements: *id003
|
62
66
|
- !ruby/object:Gem::Dependency
|
63
|
-
|
67
|
+
prerelease: false
|
68
|
+
type: :development
|
64
69
|
requirement: &id004 !ruby/object:Gem::Requirement
|
65
70
|
none: false
|
66
71
|
requirements:
|
67
72
|
- - ">="
|
68
73
|
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
69
75
|
segments:
|
70
76
|
- 0
|
71
77
|
version: "0"
|
72
|
-
|
73
|
-
prerelease: false
|
78
|
+
name: shoulda
|
74
79
|
version_requirements: *id004
|
75
80
|
- !ruby/object:Gem::Dependency
|
76
|
-
|
81
|
+
prerelease: false
|
82
|
+
type: :development
|
77
83
|
requirement: &id005 !ruby/object:Gem::Requirement
|
78
84
|
none: false
|
79
85
|
requirements:
|
80
86
|
- - ~>
|
81
87
|
- !ruby/object:Gem::Version
|
88
|
+
hash: 23
|
82
89
|
segments:
|
83
90
|
- 1
|
84
91
|
- 0
|
85
92
|
- 0
|
86
93
|
version: 1.0.0
|
87
|
-
|
88
|
-
prerelease: false
|
94
|
+
name: bundler
|
89
95
|
version_requirements: *id005
|
90
96
|
- !ruby/object:Gem::Dependency
|
91
|
-
|
97
|
+
prerelease: false
|
98
|
+
type: :development
|
92
99
|
requirement: &id006 !ruby/object:Gem::Requirement
|
93
100
|
none: false
|
94
101
|
requirements:
|
95
102
|
- - ~>
|
96
103
|
- !ruby/object:Gem::Version
|
104
|
+
hash: 7
|
97
105
|
segments:
|
98
106
|
- 1
|
99
107
|
- 5
|
100
108
|
- 2
|
101
109
|
version: 1.5.2
|
102
|
-
|
103
|
-
prerelease: false
|
110
|
+
name: jeweler
|
104
111
|
version_requirements: *id006
|
105
112
|
description:
|
106
113
|
email: carl.hicks@gmail.com
|
@@ -173,7 +180,6 @@ files:
|
|
173
180
|
- ./lib/sugarcrm/module_methods.rb
|
174
181
|
- ./lib/sugarcrm/session.rb
|
175
182
|
- ./sugarcrm.gemspec
|
176
|
-
- ./sugarcrm.tmproj
|
177
183
|
- LICENSE
|
178
184
|
- README.rdoc
|
179
185
|
- test/connection/test_get_available_modules.rb
|
@@ -196,6 +202,7 @@ files:
|
|
196
202
|
- test/test_associations.rb
|
197
203
|
- test/test_connection.rb
|
198
204
|
- test/test_connection_pool.rb
|
205
|
+
- test/test_finders.rb
|
199
206
|
- test/test_module.rb
|
200
207
|
- test/test_response.rb
|
201
208
|
- test/test_session.rb
|
@@ -215,7 +222,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
215
222
|
requirements:
|
216
223
|
- - ">="
|
217
224
|
- !ruby/object:Gem::Version
|
218
|
-
hash:
|
225
|
+
hash: 3
|
219
226
|
segments:
|
220
227
|
- 0
|
221
228
|
version: "0"
|
@@ -224,13 +231,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
224
231
|
requirements:
|
225
232
|
- - ">="
|
226
233
|
- !ruby/object:Gem::Version
|
234
|
+
hash: 3
|
227
235
|
segments:
|
228
236
|
- 0
|
229
237
|
version: "0"
|
230
238
|
requirements: []
|
231
239
|
|
232
240
|
rubyforge_project:
|
233
|
-
rubygems_version: 1.
|
241
|
+
rubygems_version: 1.6.2
|
234
242
|
signing_key:
|
235
243
|
specification_version: 3
|
236
244
|
summary: A less clunky way to interact with SugarCRM via REST.
|
@@ -255,6 +263,7 @@ test_files:
|
|
255
263
|
- test/test_associations.rb
|
256
264
|
- test/test_connection.rb
|
257
265
|
- test/test_connection_pool.rb
|
266
|
+
- test/test_finders.rb
|
258
267
|
- test/test_module.rb
|
259
268
|
- test/test_response.rb
|
260
269
|
- test/test_session.rb
|