activeforce 1.7.1 → 1.8.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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -12
- data/Gemfile.lock +85 -87
- data/Rakefile +1 -21
- data/activeforce.gemspec +18 -139
- data/lib/activeforce.rb +2 -1
- data/lib/activeforce/version.rb +3 -0
- data/lib/ruby_187_range_extension.rb +10 -0
- data/lib/salesforce/attributes.rb +3 -5
- data/lib/salesforce/authentication.rb +1 -1
- data/lib/salesforce/bulk/batch.rb +7 -3
- data/lib/salesforce/column.rb +8 -4
- data/test/salesforce/authentication_test.rb +2 -2
- data/test/salesforce/base_test.rb +9 -8
- data/test/salesforce/bulk/batch_test.rb +11 -6
- data/test/salesforce/bulk/update_job_test.rb +2 -2
- data/test/salesforce/column_test.rb +18 -18
- data/test/salesforce/connection/async_test.rb +1 -1
- data/test/salesforce/connection/http_methods_test.rb +1 -1
- data/test/test_helper.rb +2 -0
- metadata +31 -141
- data/VERSION +0 -1
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA512:
|
|
3
|
+
data.tar.gz: 3677373f8d2f88bfbc535ff345e25a2682af1f2e4d8e237f2efebd2e9f5a06317b1159a5238563b41b59df1dd35cad781b7579e76ea323665bff3f8e16861ab5
|
|
4
|
+
metadata.gz: b8fe6ebdc9af91c5a981923ef600ab8c85473a50008d12895b47131f2ccfd1e2a6197a03c084e9cb112f9853dcccf5d14aa0856ed77a1b273ac2fcd5bc404be0
|
|
5
|
+
SHA1:
|
|
6
|
+
data.tar.gz: 758e87d2f47d73b4e802ce38d7a46f80b65ef4be
|
|
7
|
+
metadata.gz: 0b7190d439284ef237ed95ff98f76a2e011e6a4f
|
data/.gitignore
ADDED
data/Gemfile
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
source "http://rubygems.org"
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
gem 'savon'
|
|
5
|
-
gem 'blockenspiel'
|
|
6
|
-
gem 'rest-client'
|
|
7
|
-
gem "fastercsv"
|
|
3
|
+
gemspec
|
|
8
4
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
gem "bundler", "~> 1.0.0"
|
|
13
|
-
gem "jeweler", "~> 1.6.4"
|
|
14
|
-
gem "rcov", ">= 0"
|
|
15
|
-
end
|
|
5
|
+
gem 'mocha', '0.14.0', :require => false
|
|
6
|
+
gem "yard", "~> 0.6.0"
|
|
7
|
+
gem "bundler", "~> 1.0"
|
data/Gemfile.lock
CHANGED
|
@@ -1,114 +1,118 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
activeforce (1.8.0)
|
|
5
|
+
blockenspiel
|
|
6
|
+
fastercsv
|
|
7
|
+
rails (>= 3.0)
|
|
8
|
+
rest-client
|
|
9
|
+
savon (~> 1.0)
|
|
10
|
+
|
|
1
11
|
GEM
|
|
2
12
|
remote: http://rubygems.org/
|
|
3
13
|
specs:
|
|
4
|
-
actionmailer (3.
|
|
5
|
-
actionpack (= 3.
|
|
6
|
-
mail (~> 2.
|
|
7
|
-
actionpack (3.
|
|
8
|
-
activemodel (= 3.
|
|
9
|
-
activesupport (= 3.
|
|
14
|
+
actionmailer (3.2.14)
|
|
15
|
+
actionpack (= 3.2.14)
|
|
16
|
+
mail (~> 2.5.4)
|
|
17
|
+
actionpack (3.2.14)
|
|
18
|
+
activemodel (= 3.2.14)
|
|
19
|
+
activesupport (= 3.2.14)
|
|
10
20
|
builder (~> 3.0.0)
|
|
11
21
|
erubis (~> 2.7.0)
|
|
12
|
-
|
|
13
|
-
rack (~> 1.
|
|
14
|
-
rack-cache (~> 1.
|
|
15
|
-
rack-mount (~> 0.8.2)
|
|
22
|
+
journey (~> 1.0.4)
|
|
23
|
+
rack (~> 1.4.5)
|
|
24
|
+
rack-cache (~> 1.2)
|
|
16
25
|
rack-test (~> 0.6.1)
|
|
17
|
-
sprockets (~> 2.
|
|
18
|
-
activemodel (3.
|
|
19
|
-
activesupport (= 3.
|
|
20
|
-
bcrypt-ruby (~> 3.0.0)
|
|
26
|
+
sprockets (~> 2.2.1)
|
|
27
|
+
activemodel (3.2.14)
|
|
28
|
+
activesupport (= 3.2.14)
|
|
21
29
|
builder (~> 3.0.0)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
arel (~> 2.2.1)
|
|
30
|
+
activerecord (3.2.14)
|
|
31
|
+
activemodel (= 3.2.14)
|
|
32
|
+
activesupport (= 3.2.14)
|
|
33
|
+
arel (~> 3.0.2)
|
|
27
34
|
tzinfo (~> 0.3.29)
|
|
28
|
-
activeresource (3.
|
|
29
|
-
activemodel (= 3.
|
|
30
|
-
activesupport (= 3.
|
|
31
|
-
activesupport (3.
|
|
35
|
+
activeresource (3.2.14)
|
|
36
|
+
activemodel (= 3.2.14)
|
|
37
|
+
activesupport (= 3.2.14)
|
|
38
|
+
activesupport (3.2.14)
|
|
39
|
+
i18n (~> 0.6, >= 0.6.4)
|
|
32
40
|
multi_json (~> 1.0)
|
|
33
|
-
akami (1.
|
|
41
|
+
akami (1.2.0)
|
|
34
42
|
gyoku (>= 0.4.0)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
blockenspiel (0.4.
|
|
38
|
-
builder (3.0.
|
|
43
|
+
nokogiri (>= 1.4.0)
|
|
44
|
+
arel (3.0.2)
|
|
45
|
+
blockenspiel (0.4.5)
|
|
46
|
+
builder (3.0.4)
|
|
39
47
|
erubis (2.7.0)
|
|
40
|
-
fastercsv (1.5.
|
|
41
|
-
|
|
42
|
-
gyoku (0.4.4)
|
|
48
|
+
fastercsv (1.5.5)
|
|
49
|
+
gyoku (0.4.6)
|
|
43
50
|
builder (>= 2.1.2)
|
|
44
|
-
hike (1.2.
|
|
45
|
-
httpi (
|
|
51
|
+
hike (1.2.3)
|
|
52
|
+
httpi (1.1.1)
|
|
46
53
|
rack
|
|
47
|
-
i18n (0.6.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
rake
|
|
52
|
-
mail (2.3.0)
|
|
53
|
-
i18n (>= 0.4.0)
|
|
54
|
+
i18n (0.6.5)
|
|
55
|
+
journey (1.0.4)
|
|
56
|
+
json (1.8.0)
|
|
57
|
+
mail (2.5.4)
|
|
54
58
|
mime-types (~> 1.16)
|
|
55
59
|
treetop (~> 1.4.8)
|
|
56
60
|
metaclass (0.0.1)
|
|
57
|
-
mime-types (1.
|
|
58
|
-
mocha (0.
|
|
61
|
+
mime-types (1.24)
|
|
62
|
+
mocha (0.14.0)
|
|
59
63
|
metaclass (~> 0.0.1)
|
|
60
|
-
multi_json (1.
|
|
61
|
-
nokogiri (1.5.
|
|
62
|
-
nori (1.
|
|
63
|
-
polyglot (0.3.
|
|
64
|
-
rack (1.
|
|
65
|
-
rack-cache (1.
|
|
64
|
+
multi_json (1.7.9)
|
|
65
|
+
nokogiri (1.5.10)
|
|
66
|
+
nori (1.1.3)
|
|
67
|
+
polyglot (0.3.3)
|
|
68
|
+
rack (1.4.5)
|
|
69
|
+
rack-cache (1.2)
|
|
66
70
|
rack (>= 0.4)
|
|
67
|
-
rack-
|
|
68
|
-
rack (>= 1.0.0)
|
|
69
|
-
rack-ssl (1.3.2)
|
|
71
|
+
rack-ssl (1.3.3)
|
|
70
72
|
rack
|
|
71
|
-
rack-test (0.6.
|
|
73
|
+
rack-test (0.6.2)
|
|
72
74
|
rack (>= 1.0)
|
|
73
|
-
rails (3.
|
|
74
|
-
actionmailer (= 3.
|
|
75
|
-
actionpack (= 3.
|
|
76
|
-
activerecord (= 3.
|
|
77
|
-
activeresource (= 3.
|
|
78
|
-
activesupport (= 3.
|
|
75
|
+
rails (3.2.14)
|
|
76
|
+
actionmailer (= 3.2.14)
|
|
77
|
+
actionpack (= 3.2.14)
|
|
78
|
+
activerecord (= 3.2.14)
|
|
79
|
+
activeresource (= 3.2.14)
|
|
80
|
+
activesupport (= 3.2.14)
|
|
79
81
|
bundler (~> 1.0)
|
|
80
|
-
railties (= 3.
|
|
81
|
-
railties (3.
|
|
82
|
-
actionpack (= 3.
|
|
83
|
-
activesupport (= 3.
|
|
82
|
+
railties (= 3.2.14)
|
|
83
|
+
railties (3.2.14)
|
|
84
|
+
actionpack (= 3.2.14)
|
|
85
|
+
activesupport (= 3.2.14)
|
|
84
86
|
rack-ssl (~> 1.3.2)
|
|
85
87
|
rake (>= 0.8.7)
|
|
86
88
|
rdoc (~> 3.4)
|
|
87
|
-
thor (
|
|
88
|
-
rake (
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
thor (>= 0.14.6, < 2.0)
|
|
90
|
+
rake (10.1.0)
|
|
91
|
+
rdoc (3.12.2)
|
|
92
|
+
json (~> 1.4)
|
|
91
93
|
rest-client (1.6.7)
|
|
92
94
|
mime-types (>= 1.16)
|
|
93
|
-
savon (
|
|
94
|
-
akami (~> 1.0)
|
|
95
|
+
savon (1.2.0)
|
|
96
|
+
akami (~> 1.2.0)
|
|
95
97
|
builder (>= 2.1.2)
|
|
96
|
-
gyoku (
|
|
97
|
-
httpi (~> 0
|
|
98
|
+
gyoku (~> 0.4.5)
|
|
99
|
+
httpi (~> 1.1.0)
|
|
98
100
|
nokogiri (>= 1.4.0)
|
|
99
|
-
nori (~> 1.0)
|
|
100
|
-
wasabi (~> 2.0)
|
|
101
|
-
sprockets (2.
|
|
101
|
+
nori (~> 1.1.0)
|
|
102
|
+
wasabi (~> 2.5.0)
|
|
103
|
+
sprockets (2.2.2)
|
|
102
104
|
hike (~> 1.2)
|
|
105
|
+
multi_json (~> 1.0)
|
|
103
106
|
rack (~> 1.0)
|
|
104
107
|
tilt (~> 1.1, != 1.3.0)
|
|
105
|
-
thor (0.
|
|
106
|
-
tilt (1.
|
|
107
|
-
treetop (1.4.
|
|
108
|
+
thor (0.18.1)
|
|
109
|
+
tilt (1.4.1)
|
|
110
|
+
treetop (1.4.15)
|
|
108
111
|
polyglot
|
|
109
112
|
polyglot (>= 0.3.1)
|
|
110
|
-
tzinfo (0.3.
|
|
111
|
-
wasabi (2.
|
|
113
|
+
tzinfo (0.3.37)
|
|
114
|
+
wasabi (2.5.0)
|
|
115
|
+
httpi (~> 1.0)
|
|
112
116
|
nokogiri (>= 1.4.0)
|
|
113
117
|
yard (0.6.8)
|
|
114
118
|
|
|
@@ -116,13 +120,7 @@ PLATFORMS
|
|
|
116
120
|
ruby
|
|
117
121
|
|
|
118
122
|
DEPENDENCIES
|
|
119
|
-
|
|
120
|
-
bundler (~> 1.0
|
|
121
|
-
|
|
122
|
-
jeweler (~> 1.6.4)
|
|
123
|
-
mocha
|
|
124
|
-
rails
|
|
125
|
-
rcov
|
|
126
|
-
rest-client
|
|
127
|
-
savon
|
|
123
|
+
activeforce!
|
|
124
|
+
bundler (~> 1.0)
|
|
125
|
+
mocha (= 0.14.0)
|
|
128
126
|
yard (~> 0.6.0)
|
data/Rakefile
CHANGED
|
@@ -11,20 +11,8 @@ rescue Bundler::BundlerError => e
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
require 'rake'
|
|
14
|
-
require 'jeweler'
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
|
18
|
-
gem.name = "activeforce"
|
|
19
|
-
gem.homepage = "http://github.com/appfolio/activeforce"
|
|
20
|
-
gem.license = "MIT"
|
|
21
|
-
gem.summary = %Q{A Simple gem to interact with the Salesforce REST API}
|
|
22
|
-
gem.description = %Q{ Activeforce provides a simple to use and extend interface to Salesforce using the REST API}
|
|
23
|
-
gem.email = "andrew.mutz@appfolio.com"
|
|
24
|
-
gem.authors = "Andrew Mutz"
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
Jeweler::RubygemsDotOrgTasks.new
|
|
15
|
+
require 'bundler/gem_tasks'
|
|
28
16
|
|
|
29
17
|
require 'rake/testtask'
|
|
30
18
|
Rake::TestTask.new(:test) do |test|
|
|
@@ -33,14 +21,6 @@ Rake::TestTask.new(:test) do |test|
|
|
|
33
21
|
test.verbose = true
|
|
34
22
|
end
|
|
35
23
|
|
|
36
|
-
require 'rcov/rcovtask'
|
|
37
|
-
Rcov::RcovTask.new do |test|
|
|
38
|
-
test.libs << 'test'
|
|
39
|
-
test.pattern = 'test/**/*_test.rb'
|
|
40
|
-
test.verbose = true
|
|
41
|
-
test.rcov_opts = ['--exclude "gems/*"']
|
|
42
|
-
end
|
|
43
|
-
|
|
44
24
|
task :default => :test
|
|
45
25
|
|
|
46
26
|
require 'yard'
|
data/activeforce.gemspec
CHANGED
|
@@ -1,151 +1,30 @@
|
|
|
1
|
-
# Generated by jeweler
|
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
+
$LOAD_PATH.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require 'activeforce/version'
|
|
5
4
|
|
|
6
5
|
Gem::Specification.new do |s|
|
|
7
6
|
s.name = "activeforce"
|
|
8
|
-
s.version =
|
|
7
|
+
s.version = Activeforce::VERSION
|
|
9
8
|
|
|
10
|
-
s.
|
|
11
|
-
s.
|
|
12
|
-
s.
|
|
13
|
-
s.
|
|
14
|
-
s.email = "andrew.mutz@appfolio.com"
|
|
9
|
+
s.authors = ["Tushar Ranka", "Andrew Mutz"]
|
|
10
|
+
s.date = "2013-08-27"
|
|
11
|
+
s.description = " Activeforce provides a simple to use and extend interface to Salesforce using the REST API"
|
|
12
|
+
s.email = ["tusharranka@gmail.com", "andrew.mutz@appfolio.com"]
|
|
15
13
|
s.extra_rdoc_files = [
|
|
16
14
|
"LICENSE.txt",
|
|
17
15
|
"README.md"
|
|
18
16
|
]
|
|
19
|
-
s.files
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"VERSION",
|
|
26
|
-
"activeforce.gemspec",
|
|
27
|
-
"app/models/salesforce/account.rb",
|
|
28
|
-
"app/models/salesforce/activity_history.rb",
|
|
29
|
-
"app/models/salesforce/approval.rb",
|
|
30
|
-
"app/models/salesforce/campaign.rb",
|
|
31
|
-
"app/models/salesforce/campaign_feed.rb",
|
|
32
|
-
"app/models/salesforce/campaign_member.rb",
|
|
33
|
-
"app/models/salesforce/case.rb",
|
|
34
|
-
"app/models/salesforce/case_comment.rb",
|
|
35
|
-
"app/models/salesforce/case_contact_role.rb",
|
|
36
|
-
"app/models/salesforce/case_feed.rb",
|
|
37
|
-
"app/models/salesforce/case_history.rb",
|
|
38
|
-
"app/models/salesforce/case_share.rb",
|
|
39
|
-
"app/models/salesforce/case_solution.rb",
|
|
40
|
-
"app/models/salesforce/case_status.rb",
|
|
41
|
-
"app/models/salesforce/case_team_member.rb",
|
|
42
|
-
"app/models/salesforce/community.rb",
|
|
43
|
-
"app/models/salesforce/contact.rb",
|
|
44
|
-
"app/models/salesforce/contact_feed.rb",
|
|
45
|
-
"app/models/salesforce/contact_history.rb",
|
|
46
|
-
"app/models/salesforce/contract.rb",
|
|
47
|
-
"app/models/salesforce/document.rb",
|
|
48
|
-
"app/models/salesforce/event.rb",
|
|
49
|
-
"app/models/salesforce/feed_item.rb",
|
|
50
|
-
"app/models/salesforce/group.rb",
|
|
51
|
-
"app/models/salesforce/group_member.rb",
|
|
52
|
-
"app/models/salesforce/idea.rb",
|
|
53
|
-
"app/models/salesforce/lead.rb",
|
|
54
|
-
"app/models/salesforce/lead_status.rb",
|
|
55
|
-
"app/models/salesforce/name.rb",
|
|
56
|
-
"app/models/salesforce/note.rb",
|
|
57
|
-
"app/models/salesforce/open_activity.rb",
|
|
58
|
-
"app/models/salesforce/opportunity.rb",
|
|
59
|
-
"app/models/salesforce/organization.rb",
|
|
60
|
-
"app/models/salesforce/partner.rb",
|
|
61
|
-
"app/models/salesforce/period.rb",
|
|
62
|
-
"app/models/salesforce/product2.rb",
|
|
63
|
-
"app/models/salesforce/product2_feed.rb",
|
|
64
|
-
"app/models/salesforce/profile.rb",
|
|
65
|
-
"app/models/salesforce/quote.rb",
|
|
66
|
-
"app/models/salesforce/solution.rb",
|
|
67
|
-
"app/models/salesforce/task.rb",
|
|
68
|
-
"app/models/salesforce/task_feed.rb",
|
|
69
|
-
"app/models/salesforce/task_priority.rb",
|
|
70
|
-
"app/models/salesforce/task_status.rb",
|
|
71
|
-
"app/models/salesforce/user.rb",
|
|
72
|
-
"app/models/salesforce/user_role.rb",
|
|
73
|
-
"app/models/salesforce/vote.rb",
|
|
74
|
-
"lib/activeforce.rb",
|
|
75
|
-
"lib/salesforce/attributes.rb",
|
|
76
|
-
"lib/salesforce/authentication.rb",
|
|
77
|
-
"lib/salesforce/base.rb",
|
|
78
|
-
"lib/salesforce/bulk/batch.rb",
|
|
79
|
-
"lib/salesforce/bulk/job.rb",
|
|
80
|
-
"lib/salesforce/bulk/operations.rb",
|
|
81
|
-
"lib/salesforce/bulk/update_job.rb",
|
|
82
|
-
"lib/salesforce/column.rb",
|
|
83
|
-
"lib/salesforce/columns.rb",
|
|
84
|
-
"lib/salesforce/config.rb",
|
|
85
|
-
"lib/salesforce/connection.rb",
|
|
86
|
-
"lib/salesforce/connection/async.rb",
|
|
87
|
-
"lib/salesforce/connection/conversion.rb",
|
|
88
|
-
"lib/salesforce/connection/http_methods.rb",
|
|
89
|
-
"lib/salesforce/connection/rest_api.rb",
|
|
90
|
-
"lib/salesforce/connection/soap_api.rb",
|
|
91
|
-
"lib/salesforce/engine.rb",
|
|
92
|
-
"lib/salesforce/errors.rb",
|
|
93
|
-
"test/salesforce/authentication_test.rb",
|
|
94
|
-
"test/salesforce/base_test.rb",
|
|
95
|
-
"test/salesforce/bulk/batch_test.rb",
|
|
96
|
-
"test/salesforce/bulk/update_job_test.rb",
|
|
97
|
-
"test/salesforce/column_test.rb",
|
|
98
|
-
"test/salesforce/config_test.rb",
|
|
99
|
-
"test/salesforce/connection/async_test.rb",
|
|
100
|
-
"test/salesforce/connection/http_methods_test.rb",
|
|
101
|
-
"test/salesforce/connection/rest_api_test.rb",
|
|
102
|
-
"test/salesforce/connection/soap_api_test.rb",
|
|
103
|
-
"test/salesforce/connection_test.rb",
|
|
104
|
-
"test/test_helper.rb"
|
|
105
|
-
]
|
|
106
|
-
s.homepage = "http://github.com/appfolio/activeforce"
|
|
107
|
-
s.licenses = ["MIT"]
|
|
108
|
-
s.require_paths = ["lib"]
|
|
109
|
-
s.rubygems_version = "1.8.24"
|
|
110
|
-
s.summary = "A Simple gem to interact with the Salesforce REST API"
|
|
111
|
-
|
|
112
|
-
if s.respond_to? :specification_version then
|
|
113
|
-
s.specification_version = 3
|
|
17
|
+
s.files = `git ls-files`.split("\n")
|
|
18
|
+
s.homepage = "http://github.com/appfolio/activeforce"
|
|
19
|
+
s.licenses = ["MIT"]
|
|
20
|
+
s.require_paths = ["lib"]
|
|
21
|
+
s.rubygems_version = "2.0.3"
|
|
22
|
+
s.summary = "A Simple gem to interact with the Salesforce REST API"
|
|
114
23
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
s.add_runtime_dependency(%q<fastercsv>, [">= 0"])
|
|
121
|
-
s.add_development_dependency(%q<mocha>, [">= 0"])
|
|
122
|
-
s.add_development_dependency(%q<yard>, ["~> 0.6.0"])
|
|
123
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
124
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
125
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
126
|
-
else
|
|
127
|
-
s.add_dependency(%q<rails>, [">= 0"])
|
|
128
|
-
s.add_dependency(%q<savon>, [">= 0"])
|
|
129
|
-
s.add_dependency(%q<blockenspiel>, [">= 0"])
|
|
130
|
-
s.add_dependency(%q<rest-client>, [">= 0"])
|
|
131
|
-
s.add_dependency(%q<fastercsv>, [">= 0"])
|
|
132
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
|
133
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
|
134
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
135
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
136
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
|
137
|
-
end
|
|
138
|
-
else
|
|
139
|
-
s.add_dependency(%q<rails>, [">= 0"])
|
|
140
|
-
s.add_dependency(%q<savon>, [">= 0"])
|
|
141
|
-
s.add_dependency(%q<blockenspiel>, [">= 0"])
|
|
142
|
-
s.add_dependency(%q<rest-client>, [">= 0"])
|
|
143
|
-
s.add_dependency(%q<fastercsv>, [">= 0"])
|
|
144
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
|
145
|
-
s.add_dependency(%q<yard>, ["~> 0.6.0"])
|
|
146
|
-
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
147
|
-
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
|
148
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
|
149
|
-
end
|
|
24
|
+
s.add_dependency(%q<rails>, [">= 3.0"])
|
|
25
|
+
s.add_dependency(%q<savon>, ["~> 1.0"])
|
|
26
|
+
s.add_dependency(%q<blockenspiel>, [">= 0"])
|
|
27
|
+
s.add_dependency(%q<rest-client>, [">= 0"])
|
|
28
|
+
s.add_dependency(%q<fastercsv>, [">= 0"])
|
|
150
29
|
end
|
|
151
30
|
|
data/lib/activeforce.rb
CHANGED
|
@@ -4,6 +4,7 @@ require 'savon'
|
|
|
4
4
|
require 'rest-client'
|
|
5
5
|
require 'fastercsv'
|
|
6
6
|
require 'active_support/all'
|
|
7
|
+
require 'ruby_187_range_extension'
|
|
7
8
|
require 'salesforce/config'
|
|
8
9
|
require 'salesforce/engine'
|
|
9
10
|
require 'salesforce/authentication'
|
|
@@ -26,4 +27,4 @@ module Salesforce
|
|
|
26
27
|
def self.connection
|
|
27
28
|
Connection
|
|
28
29
|
end
|
|
29
|
-
end
|
|
30
|
+
end
|
|
@@ -2,11 +2,9 @@ module Salesforce
|
|
|
2
2
|
module Attributes
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
send("#{key}=", value) if respond_to?("#{key}=")
|
|
9
|
-
end
|
|
5
|
+
def assign_attributes!(hash)
|
|
6
|
+
hash.each do |key, value|
|
|
7
|
+
send("#{key}=", value) if respond_to?("#{key}=")
|
|
10
8
|
end
|
|
11
9
|
end
|
|
12
10
|
end
|
|
@@ -12,7 +12,7 @@ module Salesforce
|
|
|
12
12
|
result = Connection.login
|
|
13
13
|
Config.instance.soap_endpoint_url result[:server_url]
|
|
14
14
|
Config.instance.session_id result[:session_id]
|
|
15
|
-
Config.instance.server_instance URI.parse(result[:server_url]).host
|
|
15
|
+
Config.instance.server_instance URI.parse(result[:server_url]).host[/(na|cs)\d+/]
|
|
16
16
|
Config.instance.user_id result[:user_id]
|
|
17
17
|
Config.session_id
|
|
18
18
|
end
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
require 'csv'
|
|
2
|
+
|
|
3
|
+
CSVLib = RUBY_VERSION.start_with?("1.8") ? FasterCSV : CSV
|
|
4
|
+
|
|
1
5
|
module Salesforce
|
|
2
6
|
module Bulk
|
|
3
7
|
class Batch
|
|
@@ -11,7 +15,7 @@ module Salesforce
|
|
|
11
15
|
def initialize(job)
|
|
12
16
|
self.job = job
|
|
13
17
|
self.filename = temporary_csv_file
|
|
14
|
-
self.csv =
|
|
18
|
+
self.csv = CSVLib.open(self.filename, 'w+')
|
|
15
19
|
self.csv << csv_header
|
|
16
20
|
end
|
|
17
21
|
|
|
@@ -63,7 +67,7 @@ module Salesforce
|
|
|
63
67
|
private
|
|
64
68
|
|
|
65
69
|
def parse_csv_results(results)
|
|
66
|
-
parsed_results =
|
|
70
|
+
parsed_results = CSVLib.parse(results)
|
|
67
71
|
parsed_results[1..-1].map { |row| Result.new(*row) }
|
|
68
72
|
end
|
|
69
73
|
|
|
@@ -74,4 +78,4 @@ module Salesforce
|
|
|
74
78
|
|
|
75
79
|
end
|
|
76
80
|
end
|
|
77
|
-
end
|
|
81
|
+
end
|
data/lib/salesforce/column.rb
CHANGED
|
@@ -2,8 +2,8 @@ module Salesforce
|
|
|
2
2
|
class Column
|
|
3
3
|
attr_accessor :name, :original_name, :createable, :updateable, :type
|
|
4
4
|
|
|
5
|
-
SUPPORTED_DATE_RANGE = Date.parse("01
|
|
6
|
-
SUPPORTED_TIME_RANGE = Time.parse("01
|
|
5
|
+
SUPPORTED_DATE_RANGE = Date.parse("1700-01-01")..Date.parse("4000-12-31")
|
|
6
|
+
SUPPORTED_TIME_RANGE = Time.parse("1902-01-01 00:00:00 UTC")..Time.parse("2037-12-31 00:00:00 UTC")
|
|
7
7
|
|
|
8
8
|
def initialize(field)
|
|
9
9
|
self.original_name = field["name"]
|
|
@@ -73,22 +73,26 @@ module Salesforce
|
|
|
73
73
|
when :date
|
|
74
74
|
begin
|
|
75
75
|
parsed_date = Date.parse(value)
|
|
76
|
-
if SUPPORTED_DATE_RANGE.
|
|
76
|
+
if SUPPORTED_DATE_RANGE.cover?(parsed_date)
|
|
77
77
|
parsed_date
|
|
78
78
|
else
|
|
79
79
|
nil
|
|
80
80
|
end
|
|
81
|
+
rescue ArgumentError
|
|
82
|
+
nil
|
|
81
83
|
rescue
|
|
82
84
|
value if value.is_a?(Date)
|
|
83
85
|
end
|
|
84
86
|
when :datetime
|
|
85
87
|
begin
|
|
86
88
|
parsed_time = Time.parse(value)
|
|
87
|
-
if SUPPORTED_TIME_RANGE.
|
|
89
|
+
if SUPPORTED_TIME_RANGE.cover?(parsed_time)
|
|
88
90
|
parsed_time
|
|
89
91
|
else
|
|
90
92
|
nil
|
|
91
93
|
end
|
|
94
|
+
rescue ArgumentError
|
|
95
|
+
Time.now
|
|
92
96
|
rescue
|
|
93
97
|
value if value.is_a?(Time)
|
|
94
98
|
end
|
|
@@ -36,14 +36,14 @@ class Salesforce::AuthenticationTest < ActiveSupport::TestCase
|
|
|
36
36
|
def test_generate_new_session_id__calls_connection_login
|
|
37
37
|
result = {
|
|
38
38
|
:session_id => "session_id",
|
|
39
|
-
:server_url => "https://cs99
|
|
39
|
+
:server_url => "https://cs99.salesforce.com/services/Soap/c/22.0/00DQ00000001LRX",
|
|
40
40
|
:user_id => "user_id"
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
Salesforce.connection.expects(:login).returns(result)
|
|
44
44
|
|
|
45
45
|
assert_equal "session_id", Salesforce::Authentication.generate_new_session_id
|
|
46
|
-
assert_equal "https://cs99
|
|
46
|
+
assert_equal "https://cs99.salesforce.com/services/Soap/c/22.0/00DQ00000001LRX", Salesforce::Config.soap_endpoint_url
|
|
47
47
|
assert_equal "session_id", Salesforce::Config.session_id
|
|
48
48
|
assert_equal "cs99", Salesforce::Config.server_instance
|
|
49
49
|
assert_equal "user_id", Salesforce::Config.user_id
|
|
@@ -258,7 +258,7 @@ class Salesforce::BaseTest < ActiveSupport::TestCase
|
|
|
258
258
|
def test_find_all__with_conditions
|
|
259
259
|
setup_columns_for_original_table
|
|
260
260
|
Salesforce.connection.expects(:soql).with("SELECT Col1,Col2__c FROM OriginalTable WHERE Col2__c >= 2011-11-11").returns([ { "Col2__c" => 'col21'}, { "Col2__c" => 'col22'}])
|
|
261
|
-
results = Salesforce::OriginalTable.find(:all, :conditions => ":col2 >= :date", :date => Date.parse("11
|
|
261
|
+
results = Salesforce::OriginalTable.find(:all, :conditions => ":col2 >= :date", :date => Date.parse("2011-11-11"))
|
|
262
262
|
assert_equal 2, results.size
|
|
263
263
|
assert_equal "col21", results.first.col2
|
|
264
264
|
assert_equal "col22", results.last.col2
|
|
@@ -282,10 +282,10 @@ class Salesforce::BaseTest < ActiveSupport::TestCase
|
|
|
282
282
|
assert_equal "SELECT ACol5__c FROM OriginalTable WHERE Col1 > Col2__c", Salesforce::OriginalTable.query_string(:select => :a_col5, :conditions => ":col1 > :col2")
|
|
283
283
|
assert_equal "SELECT ACol5__c FROM OriginalTable WHERE Col1 > Col2__c", Salesforce::OriginalTable.query_string(:select => :a_col5, :conditions => ":col1 > :col2")
|
|
284
284
|
assert_equal "SELECT ACol5__c FROM OriginalTable WHERE Col1 > 2011-08-01", Salesforce::OriginalTable.query_string(:select => :a_col5, :conditions => ":col1 > :date",
|
|
285
|
-
:date => Date.parse('08
|
|
285
|
+
:date => Date.parse('2011-08-01') )
|
|
286
286
|
assert_equal "SELECT ACol5__c FROM OriginalTable WHERE Col1 > 2011-08-01 AND ACol5__c = 2011-08-01T09:30:00-07:00",
|
|
287
287
|
Salesforce::OriginalTable.query_string(:select => :a_col5,
|
|
288
|
-
:conditions => ":col1 > :date AND :a_col5 = :time", :date => Date.parse('08
|
|
288
|
+
:conditions => ":col1 > :date AND :a_col5 = :time", :date => Date.parse('2011-08-01'), :time => Time.zone.parse("2011-08-01 09:30 AM"))
|
|
289
289
|
|
|
290
290
|
assert_equal "SELECT ACol5__c FROM OriginalTable WHERE Col1 = TRUE AND Col2__c = FALSE AND Col3__c = NULL",
|
|
291
291
|
Salesforce::OriginalTable.query_string(:select => :a_col5,
|
|
@@ -303,7 +303,7 @@ class Salesforce::BaseTest < ActiveSupport::TestCase
|
|
|
303
303
|
|
|
304
304
|
assert_equal "SELECT ACol5__c FROM OriginalTable WHERE Col1 = 'string' GROUP BY Col2__c HAVING Col3__c > 2009-08-01 ORDER BY Col1 ASC, Col3__c DESC",
|
|
305
305
|
Salesforce::OriginalTable.query_string(:select => :a_col5, :conditions => ":col1 = :string", :group_by => :col2, :having => ":col3 > :date",
|
|
306
|
-
:string => 'string', :date => Date.parse('08
|
|
306
|
+
:string => 'string', :date => Date.parse('2009-08-01'), :order => ":col1 ASC, :col3 DESC")
|
|
307
307
|
|
|
308
308
|
|
|
309
309
|
|
|
@@ -349,8 +349,9 @@ class Salesforce::BaseTest < ActiveSupport::TestCase
|
|
|
349
349
|
|
|
350
350
|
def test_find_by_column
|
|
351
351
|
setup_columns_for_original_table
|
|
352
|
-
Salesforce.
|
|
353
|
-
|
|
352
|
+
col = Salesforce::OriginalTable.columns.all.last
|
|
353
|
+
Salesforce.connection.expects(:soql).with("SELECT Col1,Col2__c FROM OriginalTable WHERE #{col.original_name}='value'").returns([ { "Col1" => 'col11', "Col2__c" => 'col21'}, { "Col1" => 'col21', "Col2__c" => 'col22'} ])
|
|
354
|
+
results = Salesforce::OriginalTable.find_by_column(col, "value")
|
|
354
355
|
assert_equal 2, results.size
|
|
355
356
|
assert_equal "col11", results.first.col1
|
|
356
357
|
assert_equal "col21", results.first.col2
|
|
@@ -384,7 +385,7 @@ class Salesforce::BaseTest < ActiveSupport::TestCase
|
|
|
384
385
|
end
|
|
385
386
|
end
|
|
386
387
|
|
|
387
|
-
def
|
|
388
|
+
def test_with_invalid_column_handling__throws_runtime_error__more_than_once
|
|
388
389
|
error = RuntimeError.new
|
|
389
390
|
Salesforce::OriginalTable.expects(:clear_cached_columns!).never
|
|
390
391
|
|
|
@@ -437,4 +438,4 @@ class Salesforce::BaseTest < ActiveSupport::TestCase
|
|
|
437
438
|
|
|
438
439
|
|
|
439
440
|
end
|
|
440
|
-
|
|
441
|
+
|
|
@@ -12,27 +12,32 @@ class Salesforce::Bulk::BatchTest < ActiveSupport::TestCase
|
|
|
12
12
|
assert !@batch.csv.nil?
|
|
13
13
|
@batch.csv.close
|
|
14
14
|
content = File.read(@batch.filename)
|
|
15
|
-
assert_equal "Id,Name__c,dob__c,Car__c
|
|
16
|
-
assert_equal [ 'Id', "Name__c", "dob__c", "Car__c"], @batch.send(:csv_header)
|
|
15
|
+
assert_equal "Id,Name__c,dob__c,Car__c".split(",").sort, content.strip.split(",").sort
|
|
16
|
+
assert_equal [ 'Id', "Name__c", "dob__c", "Car__c"].sort, @batch.send(:csv_header).sort
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def test_record__from_hash
|
|
20
|
+
@batch.expects(:ordered_values).with(anything).returns([ 'recordid', 'record name', "2008-10-14", 'record car'])
|
|
20
21
|
@batch.csv.expects(:<<).with([ 'recordid', 'record name', "2008-10-14", 'record car'])
|
|
21
|
-
@batch.record :id => "recordid", :name => "record name", :car => "record car", :dob => Date.parse("10
|
|
22
|
-
|
|
22
|
+
@batch.record :id => "recordid", :name => "record name", :car => "record car", :dob => Date.parse("2008-10-14")
|
|
23
|
+
|
|
24
|
+
@batch.expects(:ordered_values).with(anything).returns([ 'recordid', 'record name', "2008-10-14", 'record car'])
|
|
23
25
|
@batch.csv.expects(:<<).with([ 'recordid', 'record name', "2008-10-14", 'record car'])
|
|
24
26
|
@batch.record :id => "recordid", :name => "record name", :car => "record car", :dob => "10/14/2008"
|
|
25
|
-
|
|
27
|
+
|
|
28
|
+
@batch.expects(:ordered_values).with(anything).returns([ 'recordid', '', '', 'record car'])
|
|
26
29
|
@batch.csv.expects(:<<).with([ 'recordid', '', '', 'record car'])
|
|
27
30
|
@batch.record :id => "recordid", :car => "record car"
|
|
28
31
|
|
|
32
|
+
@batch.expects(:ordered_values).with(anything).returns([ 'recordid', '', '', ''])
|
|
29
33
|
@batch.csv.expects(:<<).with([ 'recordid', '', '', ''])
|
|
30
34
|
@batch.record :id => "recordid"
|
|
31
35
|
end
|
|
32
36
|
|
|
33
37
|
def test_record__from_object
|
|
34
38
|
bulk_table = Salesforce::BulkTable.new("Id" => "btid", :name => "name", "Car__c" => 'car', :dob => "10/14/2008")
|
|
35
|
-
@batch.
|
|
39
|
+
@batch.expects(:ordered_values).with(anything).returns(['btid', "name", "2008-10-14", "car"])
|
|
40
|
+
@batch.csv.expects(:<<).with(['btid', "name", "2008-10-14", "car"])
|
|
36
41
|
@batch.record bulk_table
|
|
37
42
|
end
|
|
38
43
|
|
|
@@ -12,7 +12,7 @@ class Salesforce::Bulk::UpdateJobTest < ActiveSupport::TestCase
|
|
|
12
12
|
assert_equal 'update', job.operation
|
|
13
13
|
assert_equal 'Parallel', job.concurrency_mode
|
|
14
14
|
assert_equal 'Account', job.object
|
|
15
|
-
assert_equal
|
|
15
|
+
assert_equal ["Id","City","Address","Name","Type","State"].sort, job.send(:csv_header).sort
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def test_initialize__with_columns
|
|
@@ -30,7 +30,7 @@ class Salesforce::Bulk::UpdateJobTest < ActiveSupport::TestCase
|
|
|
30
30
|
assert_equal 'update', job.operation
|
|
31
31
|
assert_equal 'Parallel', job.concurrency_mode
|
|
32
32
|
assert_equal 'Account', job.object
|
|
33
|
-
assert_equal
|
|
33
|
+
assert_equal ["Id","City","Address","Name","Type","State"].sort, job.send(:csv_header).sort
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def test_csv_columns__unrecognized_column
|
|
@@ -45,14 +45,14 @@ class Salesforce::ColumnTest < ActiveSupport::TestCase
|
|
|
45
45
|
assert_equal "TRUE", Salesforce::Column.to_soql_value(true)
|
|
46
46
|
assert_equal "FALSE", Salesforce::Column.to_soql_value(false)
|
|
47
47
|
assert_equal "NULL", Salesforce::Column.to_soql_value(nil)
|
|
48
|
-
assert_equal "2012-01-02", Salesforce::Column.to_soql_value(Date.parse('01
|
|
49
|
-
assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_soql_value(Time.zone.parse('01
|
|
48
|
+
assert_equal "2012-01-02", Salesforce::Column.to_soql_value(Date.parse('2012-01-02'))
|
|
49
|
+
assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_soql_value(Time.zone.parse('2012-01-02 06:40PM'))
|
|
50
50
|
assert_equal "1", Salesforce::Column.to_soql_value(1)
|
|
51
51
|
assert_equal "1.0", Salesforce::Column.to_soql_value(1.0)
|
|
52
52
|
assert_equal "1.04", Salesforce::Column.to_soql_value(BigDecimal.new("1.04"))
|
|
53
53
|
assert_equal "'col'", Salesforce::Column.to_soql_value(:col)
|
|
54
54
|
assert_equal "('string1','string2','string3')", Salesforce::Column.to_soql_value(['string1','string2','string3'])
|
|
55
|
-
assert_equal "('string1',1,2012-01-02)", Salesforce::Column.to_soql_value(['string1',1,Date.parse("01
|
|
55
|
+
assert_equal "('string1',1,2012-01-02)", Salesforce::Column.to_soql_value(['string1',1,Date.parse("2012-01-02")])
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def test_to_csv_value
|
|
@@ -60,8 +60,8 @@ class Salesforce::ColumnTest < ActiveSupport::TestCase
|
|
|
60
60
|
assert_equal "TRUE", Salesforce::Column.to_csv_value(true)
|
|
61
61
|
assert_equal "FALSE", Salesforce::Column.to_csv_value(false)
|
|
62
62
|
assert_equal "", Salesforce::Column.to_csv_value(nil)
|
|
63
|
-
assert_equal "2012-01-02", Salesforce::Column.to_csv_value(Date.parse('01
|
|
64
|
-
assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_csv_value(Time.zone.parse('01
|
|
63
|
+
assert_equal "2012-01-02", Salesforce::Column.to_csv_value(Date.parse('2012-01-02'))
|
|
64
|
+
assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_csv_value(Time.zone.parse('2012-01-02 06:40PM'))
|
|
65
65
|
assert_equal "1", Salesforce::Column.to_csv_value(1)
|
|
66
66
|
assert_equal "1.0", Salesforce::Column.to_csv_value(1.0)
|
|
67
67
|
assert_equal "1.04", Salesforce::Column.to_csv_value(BigDecimal.new("1.04"))
|
|
@@ -73,13 +73,13 @@ class Salesforce::ColumnTest < ActiveSupport::TestCase
|
|
|
73
73
|
assert_equal "123456789012345", Salesforce::Column.typecast(:id, "123456789012345123")
|
|
74
74
|
assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345")
|
|
75
75
|
assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345123")
|
|
76
|
-
assert_equal Date.parse("08
|
|
77
|
-
assert_equal Date.parse("08
|
|
76
|
+
assert_equal Date.parse("2011-08-31"), Salesforce::Column.typecast(:date, "2011-08-31")
|
|
77
|
+
assert_equal Date.parse("2011-08-31"), Salesforce::Column.typecast(:date, Date.parse("2011-08-31"))
|
|
78
78
|
assert_equal nil, Salesforce::Column.typecast(:date, nil)
|
|
79
79
|
assert_equal nil, Salesforce::Column.typecast(:date, 'nil')
|
|
80
80
|
|
|
81
|
-
assert_equal Time.zone.parse('01
|
|
82
|
-
assert_equal Time.zone.parse('01
|
|
81
|
+
assert_equal Time.zone.parse('2012-01-02 06:40PM'), Salesforce::Column.typecast(:datetime, "2012-01-02 18:40:00 -08:00")
|
|
82
|
+
assert_equal Time.zone.parse('2012-01-02 06:40PM'), Salesforce::Column.typecast(:datetime, Time.zone.parse('2012-01-02 06:40PM'))
|
|
83
83
|
assert_equal nil, Salesforce::Column.typecast(:datetime, nil)
|
|
84
84
|
assert_equal Time.now.to_s, Salesforce::Column.typecast(:datetime, 'nil').to_s
|
|
85
85
|
|
|
@@ -95,17 +95,17 @@ class Salesforce::ColumnTest < ActiveSupport::TestCase
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
def test_typecast__date_max
|
|
98
|
-
assert_equal nil, Salesforce::Column.typecast(:date, "12
|
|
99
|
-
assert_equal Date.parse("12
|
|
100
|
-
assert_equal nil, Salesforce::Column.typecast(:datetime, "12
|
|
101
|
-
assert_equal
|
|
98
|
+
assert_equal nil, Salesforce::Column.typecast(:date, "9999-12-31")
|
|
99
|
+
assert_equal Date.parse("4000-12-30"), Salesforce::Column.typecast(:date, "4000-12-30")
|
|
100
|
+
assert_equal nil, Salesforce::Column.typecast(:datetime, "9999-12-31")
|
|
101
|
+
assert_equal nil, Salesforce::Column.typecast(:datetime, "4000-12-30")
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
def test_typecast__date_min
|
|
105
|
-
assert_equal nil, Salesforce::Column.typecast(:date, "
|
|
106
|
-
assert_equal
|
|
107
|
-
assert_equal nil, Salesforce::Column.typecast(:datetime, "12
|
|
108
|
-
assert_equal Date.parse("01/01/
|
|
105
|
+
assert_equal nil, Salesforce::Column.typecast(:date, "1699-13-31")
|
|
106
|
+
assert_equal nil, Salesforce::Column.typecast(:datetime, "1700-01-01")
|
|
107
|
+
assert_equal nil, Salesforce::Column.typecast(:datetime, "1699-12-31")
|
|
108
|
+
assert_equal Date.parse("01/01/1920").to_time, Salesforce::Column.typecast(:datetime, "1920-01-01")
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
def test_typecast__using_full_length_ids
|
|
@@ -126,4 +126,4 @@ class Salesforce::ColumnTest < ActiveSupport::TestCase
|
|
|
126
126
|
assert col1 != col3
|
|
127
127
|
end
|
|
128
128
|
|
|
129
|
-
end
|
|
129
|
+
end
|
|
@@ -16,7 +16,7 @@ class Salesforce.connection::AsyncTest < ActiveSupport::TestCase
|
|
|
16
16
|
assert_equal({'result' => 'foo'}, Salesforce.connection.async_post('path', :body, :format => :json))
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
def
|
|
19
|
+
def test_async_post__404_error_json
|
|
20
20
|
Salesforce::Authentication.stubs(:session_id).returns('session_id')
|
|
21
21
|
error = RestClient::BadRequest.new
|
|
22
22
|
error.stubs(:http_body).returns("[{\"message\":\"someproblem\",\"errorCode\":\"MALFORMED_QUERY\"}]")
|
|
@@ -134,7 +134,7 @@ class Salesforce.connection::HttpMethodsTest < ActiveSupport::TestCase
|
|
|
134
134
|
assert_equal({'result' => 'foo'}, Salesforce.connection.post('path', :body, :format => :json))
|
|
135
135
|
end
|
|
136
136
|
|
|
137
|
-
def
|
|
137
|
+
def test_post__404_error_json
|
|
138
138
|
Salesforce::Authentication.stubs(:session_id).returns('session_id')
|
|
139
139
|
error = RestClient::BadRequest.new
|
|
140
140
|
error.stubs(:http_body).returns("[{\"message\":\"someproblem\",\"errorCode\":\"MALFORMED_QUERY\"}]")
|
data/test/test_helper.rb
CHANGED
|
@@ -14,6 +14,8 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
|
14
14
|
require 'activeforce'
|
|
15
15
|
Dir.glob(File.expand_path('../../app/models/salesforce/**.rb', __FILE__)).each { |file| require(file) }
|
|
16
16
|
|
|
17
|
+
require 'mocha/setup'
|
|
18
|
+
|
|
17
19
|
class Test::Unit::TestCase
|
|
18
20
|
end
|
|
19
21
|
|
metadata
CHANGED
|
@@ -1,170 +1,68 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activeforce
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
prerelease:
|
|
6
|
-
segments:
|
|
7
|
-
- 1
|
|
8
|
-
- 7
|
|
9
|
-
- 1
|
|
10
|
-
version: 1.7.1
|
|
4
|
+
version: 1.8.0
|
|
11
5
|
platform: ruby
|
|
12
6
|
authors:
|
|
7
|
+
- Tushar Ranka
|
|
13
8
|
- Andrew Mutz
|
|
14
9
|
autorequire:
|
|
15
10
|
bindir: bin
|
|
16
11
|
cert_chain: []
|
|
17
12
|
|
|
18
|
-
date:
|
|
13
|
+
date: 2013-08-27 00:00:00 Z
|
|
19
14
|
dependencies:
|
|
20
15
|
- !ruby/object:Gem::Dependency
|
|
16
|
+
type: :runtime
|
|
17
|
+
name: rails
|
|
21
18
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
|
22
|
-
none: false
|
|
23
19
|
requirements:
|
|
24
20
|
- - ">="
|
|
25
21
|
- !ruby/object:Gem::Version
|
|
26
|
-
|
|
27
|
-
segments:
|
|
28
|
-
- 0
|
|
29
|
-
version: "0"
|
|
22
|
+
version: "3.0"
|
|
30
23
|
requirement: *id001
|
|
31
24
|
prerelease: false
|
|
32
|
-
name: rails
|
|
33
|
-
type: :runtime
|
|
34
25
|
- !ruby/object:Gem::Dependency
|
|
26
|
+
type: :runtime
|
|
27
|
+
name: savon
|
|
35
28
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
|
36
|
-
none: false
|
|
37
29
|
requirements:
|
|
38
|
-
- -
|
|
30
|
+
- - ~>
|
|
39
31
|
- !ruby/object:Gem::Version
|
|
40
|
-
|
|
41
|
-
segments:
|
|
42
|
-
- 0
|
|
43
|
-
version: "0"
|
|
32
|
+
version: "1.0"
|
|
44
33
|
requirement: *id002
|
|
45
34
|
prerelease: false
|
|
46
|
-
name: savon
|
|
47
|
-
type: :runtime
|
|
48
35
|
- !ruby/object:Gem::Dependency
|
|
36
|
+
type: :runtime
|
|
37
|
+
name: blockenspiel
|
|
49
38
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
|
50
|
-
none: false
|
|
51
39
|
requirements:
|
|
52
|
-
-
|
|
40
|
+
- &id004
|
|
41
|
+
- ">="
|
|
53
42
|
- !ruby/object:Gem::Version
|
|
54
|
-
hash: 3
|
|
55
|
-
segments:
|
|
56
|
-
- 0
|
|
57
43
|
version: "0"
|
|
58
44
|
requirement: *id003
|
|
59
45
|
prerelease: false
|
|
60
|
-
name: blockenspiel
|
|
61
|
-
type: :runtime
|
|
62
46
|
- !ruby/object:Gem::Dependency
|
|
63
|
-
version_requirements: &id004 !ruby/object:Gem::Requirement
|
|
64
|
-
none: false
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
hash: 3
|
|
69
|
-
segments:
|
|
70
|
-
- 0
|
|
71
|
-
version: "0"
|
|
72
|
-
requirement: *id004
|
|
73
|
-
prerelease: false
|
|
74
|
-
name: rest-client
|
|
75
47
|
type: :runtime
|
|
76
|
-
|
|
48
|
+
name: rest-client
|
|
77
49
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
|
78
|
-
none: false
|
|
79
50
|
requirements:
|
|
80
|
-
-
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
hash: 3
|
|
83
|
-
segments:
|
|
84
|
-
- 0
|
|
85
|
-
version: "0"
|
|
51
|
+
- *id004
|
|
86
52
|
requirement: *id005
|
|
87
53
|
prerelease: false
|
|
88
|
-
name: fastercsv
|
|
89
|
-
type: :runtime
|
|
90
54
|
- !ruby/object:Gem::Dependency
|
|
55
|
+
type: :runtime
|
|
56
|
+
name: fastercsv
|
|
91
57
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
|
92
|
-
none: false
|
|
93
58
|
requirements:
|
|
94
|
-
-
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
hash: 3
|
|
97
|
-
segments:
|
|
98
|
-
- 0
|
|
99
|
-
version: "0"
|
|
59
|
+
- *id004
|
|
100
60
|
requirement: *id006
|
|
101
61
|
prerelease: false
|
|
102
|
-
name: mocha
|
|
103
|
-
type: :development
|
|
104
|
-
- !ruby/object:Gem::Dependency
|
|
105
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
|
106
|
-
none: false
|
|
107
|
-
requirements:
|
|
108
|
-
- - ~>
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
hash: 7
|
|
111
|
-
segments:
|
|
112
|
-
- 0
|
|
113
|
-
- 6
|
|
114
|
-
- 0
|
|
115
|
-
version: 0.6.0
|
|
116
|
-
requirement: *id007
|
|
117
|
-
prerelease: false
|
|
118
|
-
name: yard
|
|
119
|
-
type: :development
|
|
120
|
-
- !ruby/object:Gem::Dependency
|
|
121
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
|
122
|
-
none: false
|
|
123
|
-
requirements:
|
|
124
|
-
- - ~>
|
|
125
|
-
- !ruby/object:Gem::Version
|
|
126
|
-
hash: 23
|
|
127
|
-
segments:
|
|
128
|
-
- 1
|
|
129
|
-
- 0
|
|
130
|
-
- 0
|
|
131
|
-
version: 1.0.0
|
|
132
|
-
requirement: *id008
|
|
133
|
-
prerelease: false
|
|
134
|
-
name: bundler
|
|
135
|
-
type: :development
|
|
136
|
-
- !ruby/object:Gem::Dependency
|
|
137
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
|
138
|
-
none: false
|
|
139
|
-
requirements:
|
|
140
|
-
- - ~>
|
|
141
|
-
- !ruby/object:Gem::Version
|
|
142
|
-
hash: 7
|
|
143
|
-
segments:
|
|
144
|
-
- 1
|
|
145
|
-
- 6
|
|
146
|
-
- 4
|
|
147
|
-
version: 1.6.4
|
|
148
|
-
requirement: *id009
|
|
149
|
-
prerelease: false
|
|
150
|
-
name: jeweler
|
|
151
|
-
type: :development
|
|
152
|
-
- !ruby/object:Gem::Dependency
|
|
153
|
-
version_requirements: &id010 !ruby/object:Gem::Requirement
|
|
154
|
-
none: false
|
|
155
|
-
requirements:
|
|
156
|
-
- - ">="
|
|
157
|
-
- !ruby/object:Gem::Version
|
|
158
|
-
hash: 3
|
|
159
|
-
segments:
|
|
160
|
-
- 0
|
|
161
|
-
version: "0"
|
|
162
|
-
requirement: *id010
|
|
163
|
-
prerelease: false
|
|
164
|
-
name: rcov
|
|
165
|
-
type: :development
|
|
166
62
|
description: " Activeforce provides a simple to use and extend interface to Salesforce using the REST API"
|
|
167
|
-
email:
|
|
63
|
+
email:
|
|
64
|
+
- tusharranka@gmail.com
|
|
65
|
+
- andrew.mutz@appfolio.com
|
|
168
66
|
executables: []
|
|
169
67
|
|
|
170
68
|
extensions: []
|
|
@@ -173,12 +71,12 @@ extra_rdoc_files:
|
|
|
173
71
|
- LICENSE.txt
|
|
174
72
|
- README.md
|
|
175
73
|
files:
|
|
74
|
+
- .gitignore
|
|
176
75
|
- Gemfile
|
|
177
76
|
- Gemfile.lock
|
|
178
77
|
- LICENSE.txt
|
|
179
78
|
- README.md
|
|
180
79
|
- Rakefile
|
|
181
|
-
- VERSION
|
|
182
80
|
- activeforce.gemspec
|
|
183
81
|
- app/models/salesforce/account.rb
|
|
184
82
|
- app/models/salesforce/activity_history.rb
|
|
@@ -228,6 +126,8 @@ files:
|
|
|
228
126
|
- app/models/salesforce/user_role.rb
|
|
229
127
|
- app/models/salesforce/vote.rb
|
|
230
128
|
- lib/activeforce.rb
|
|
129
|
+
- lib/activeforce/version.rb
|
|
130
|
+
- lib/ruby_187_range_extension.rb
|
|
231
131
|
- lib/salesforce/attributes.rb
|
|
232
132
|
- lib/salesforce/authentication.rb
|
|
233
133
|
- lib/salesforce/base.rb
|
|
@@ -261,35 +161,25 @@ files:
|
|
|
261
161
|
homepage: http://github.com/appfolio/activeforce
|
|
262
162
|
licenses:
|
|
263
163
|
- MIT
|
|
164
|
+
metadata: {}
|
|
165
|
+
|
|
264
166
|
post_install_message:
|
|
265
167
|
rdoc_options: []
|
|
266
168
|
|
|
267
169
|
require_paths:
|
|
268
170
|
- lib
|
|
269
171
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
270
|
-
none: false
|
|
271
172
|
requirements:
|
|
272
|
-
-
|
|
273
|
-
- !ruby/object:Gem::Version
|
|
274
|
-
hash: 3
|
|
275
|
-
segments:
|
|
276
|
-
- 0
|
|
277
|
-
version: "0"
|
|
173
|
+
- *id004
|
|
278
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
|
-
none: false
|
|
280
175
|
requirements:
|
|
281
|
-
-
|
|
282
|
-
- !ruby/object:Gem::Version
|
|
283
|
-
hash: 3
|
|
284
|
-
segments:
|
|
285
|
-
- 0
|
|
286
|
-
version: "0"
|
|
176
|
+
- *id004
|
|
287
177
|
requirements: []
|
|
288
178
|
|
|
289
179
|
rubyforge_project:
|
|
290
|
-
rubygems_version:
|
|
180
|
+
rubygems_version: 2.0.6
|
|
291
181
|
signing_key:
|
|
292
|
-
specification_version:
|
|
182
|
+
specification_version: 4
|
|
293
183
|
summary: A Simple gem to interact with the Salesforce REST API
|
|
294
184
|
test_files: []
|
|
295
185
|
|
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.7.1
|