silent-e-activerecord-activesalesforce-adapter 2.3.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.project +17 -0
- data/README +80 -0
- data/Rakefile +21 -0
- data/VERSION +1 -0
- data/lib/active_record/connection_adapters/activesalesforce.rb +36 -0
- data/lib/active_record/connection_adapters/activesalesforce_adapter.rb +863 -0
- data/lib/active_record/connection_adapters/asf_active_record.rb +40 -0
- data/lib/active_record/connection_adapters/boxcar_command.rb +66 -0
- data/lib/active_record/connection_adapters/column_definition.rb +95 -0
- data/lib/active_record/connection_adapters/entity_definition.rb +59 -0
- data/lib/active_record/connection_adapters/id_resolver.rb +84 -0
- data/lib/active_record/connection_adapters/recording_binding.rb +90 -0
- data/lib/active_record/connection_adapters/relationship_definition.rb +81 -0
- data/lib/active_record/connection_adapters/result_array.rb +31 -0
- data/lib/active_record/connection_adapters/sid_authentication_filter.rb +57 -0
- data/lib/activerecord-activesalesforce-adapter.rb +1 -0
- data/lib/arel/engines/sql/compilers/activesalesforce_compiler.rb +6 -0
- data/lib/rforce.rb +87 -0
- data/lib/rforce/binding.rb +212 -0
- data/lib/rforce/method_keys.rb +14 -0
- data/lib/rforce/soap_pullable.rb +93 -0
- data/lib/rforce/soap_response.rb +9 -0
- data/lib/rforce/soap_response_expat.rb +36 -0
- data/lib/rforce/soap_response_hpricot.rb +75 -0
- data/lib/rforce/soap_response_rexml.rb +35 -0
- data/lib/rforce/version.rb +3 -0
- data/silent-e-activerecord-activesalesforce-adapter.gemspec +115 -0
- data/test/unit/basic_test.rb +204 -0
- data/test/unit/config.yml +5 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_add_notes_to_contact.recording +1966 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_assignment_rule_id.recording +1621 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_batch_insert.recording +1611 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_client_id.recording +1618 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_count_contacts.recording +1620 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_create_a_contact.recording +1611 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact.recording +1611 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact_by_first_name.recording +3468 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact_by_id.recording +1664 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_addresses.recording +1635 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_get_created_by_from_contact.recording +4307 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_master_detail.recording +1951 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_read_all_content_columns.recording +1611 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_save_a_contact.recording +1611 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_use_default_rule.recording +1618 -0
- data/test/unit/recorded_results/AsfUnitTestsBasicTest.test_use_update_mru.recording +1618 -0
- data/test/unit/recorded_test_case.rb +83 -0
- metadata +186 -0
@@ -0,0 +1,9 @@
|
|
1
|
+
begin; require 'rforce/soap_response_hpricot'; rescue LoadError; end
|
2
|
+
begin; require 'rforce/soap_response_expat'; rescue LoadError; end
|
3
|
+
require 'rforce/soap_response_rexml'
|
4
|
+
|
5
|
+
|
6
|
+
module RForce
|
7
|
+
# Use the fastest XML parser available.
|
8
|
+
SoapResponse = RForce::const_get(:SoapResponseHpricot)
|
9
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'xml/parser'
|
2
|
+
require 'rforce/soap_pullable'
|
3
|
+
|
4
|
+
module RForce
|
5
|
+
class SoapResponseExpat
|
6
|
+
include SoapPullable
|
7
|
+
include MethodKeys
|
8
|
+
|
9
|
+
def initialize(content)
|
10
|
+
@content = content
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse
|
14
|
+
@current_value = nil
|
15
|
+
@stack = []
|
16
|
+
@parsed = {}
|
17
|
+
@done = false
|
18
|
+
@namespaces = []
|
19
|
+
|
20
|
+
XML::Parser.new.parse(@content) do |type, name, data|
|
21
|
+
case type
|
22
|
+
when XML::Parser::START_ELEM then
|
23
|
+
tag_start name, data
|
24
|
+
when XML::Parser::CDATA then
|
25
|
+
text data
|
26
|
+
when XML::Parser::END_ELEM then
|
27
|
+
tag_end name
|
28
|
+
end
|
29
|
+
|
30
|
+
break if @done
|
31
|
+
end
|
32
|
+
|
33
|
+
@parsed
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'hpricot'
|
2
|
+
require 'cgi'
|
3
|
+
|
4
|
+
|
5
|
+
module RForce
|
6
|
+
class SoapResponseHpricot
|
7
|
+
# Parses an XML string into structured data.
|
8
|
+
def initialize(content)
|
9
|
+
@content = content
|
10
|
+
end
|
11
|
+
|
12
|
+
# Digests an XML DOM node into nested Ruby types.
|
13
|
+
def parse
|
14
|
+
document = Hpricot.XML(@content)
|
15
|
+
node = document % 'soapenv:Body'
|
16
|
+
self.class.node_to_ruby node
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def self.unescapeXML(string)
|
22
|
+
CGI.unescapeHTML(string).gsub("'", "'")
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.node_to_ruby(node)
|
26
|
+
# Convert text nodes into simple strings.
|
27
|
+
children = (node.children || []).reject do |c|
|
28
|
+
c.is_a?(Hpricot::Text) && c.to_s.strip.empty?
|
29
|
+
end
|
30
|
+
|
31
|
+
if node.is_a?(Hpricot::Text)
|
32
|
+
return SoapResponseHpricot.unescapeXML(node.inspect[1..-2])
|
33
|
+
end
|
34
|
+
|
35
|
+
if children.first.is_a?(Hpricot::Text)
|
36
|
+
return SoapResponseHpricot.unescapeXML(children.first.inspect[1..-2])
|
37
|
+
end
|
38
|
+
|
39
|
+
# Convert nodes with children into MethodHashes.
|
40
|
+
elements = MethodHash.new
|
41
|
+
|
42
|
+
# Add all the element's children to the hash.
|
43
|
+
children.each do |e|
|
44
|
+
next if e.is_a?(Hpricot::Text) && e.to_s.strip.empty?
|
45
|
+
name = e.name
|
46
|
+
|
47
|
+
if name.include? ':'
|
48
|
+
name = name.split(':').last
|
49
|
+
end
|
50
|
+
|
51
|
+
name = name.to_sym
|
52
|
+
|
53
|
+
case elements[name]
|
54
|
+
# The most common case: unique child element tags.
|
55
|
+
when NilClass then elements[name] = node_to_ruby(e)
|
56
|
+
|
57
|
+
# Non-unique child elements become arrays:
|
58
|
+
|
59
|
+
# We've already created the array: just
|
60
|
+
# add the element.
|
61
|
+
when Array then elements[name] << node_to_ruby(e)
|
62
|
+
|
63
|
+
# We haven't created the array yet: do so,
|
64
|
+
# then put the existing element in, followed
|
65
|
+
# by the new one.
|
66
|
+
else
|
67
|
+
elements[name] = [elements[name]]
|
68
|
+
elements[name] << node_to_ruby(e)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
return elements.empty? ? nil : elements
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
require 'rexml/xpath'
|
3
|
+
require 'rforce/soap_pullable'
|
4
|
+
|
5
|
+
|
6
|
+
module RForce
|
7
|
+
# Turns an XML response from the server into a Ruby
|
8
|
+
# object whose methods correspond to nested XML elements.
|
9
|
+
class SoapResponseRexml
|
10
|
+
include SoapPullable
|
11
|
+
include MethodKeys
|
12
|
+
|
13
|
+
%w(attlistdecl cdata comment doctype doctype_end elementdecl
|
14
|
+
entity entitydecl instruction notationdecl xmldecl).each do |unused|
|
15
|
+
define_method(unused) {|*args|}
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(content)
|
19
|
+
@content = content
|
20
|
+
end
|
21
|
+
|
22
|
+
# Parses an XML string into structured data.
|
23
|
+
def parse
|
24
|
+
@current_value = nil
|
25
|
+
@stack = []
|
26
|
+
@parsed = {}
|
27
|
+
@done = false
|
28
|
+
@namespaces = []
|
29
|
+
|
30
|
+
REXML::Document.parse_stream @content, self
|
31
|
+
|
32
|
+
@parsed
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{silent-e-activerecord-activesalesforce-adapter}
|
8
|
+
s.version = "2.3.8.1"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Doug Chasman", "Luigi Montanez", "Senthil Nayagam", "Justin Ball", "Jesse Hallett", "Andrew Freeberg", "Blaine Schanfeldt", "Matte Edens"]
|
12
|
+
s.date = %q{2010-10-13}
|
13
|
+
s.description = %q{}
|
14
|
+
s.email = %q{matte@silent-e.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitignore",
|
20
|
+
".project",
|
21
|
+
"README",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"lib/active_record/connection_adapters/activesalesforce.rb",
|
25
|
+
"lib/active_record/connection_adapters/activesalesforce_adapter.rb",
|
26
|
+
"lib/active_record/connection_adapters/asf_active_record.rb",
|
27
|
+
"lib/active_record/connection_adapters/boxcar_command.rb",
|
28
|
+
"lib/active_record/connection_adapters/column_definition.rb",
|
29
|
+
"lib/active_record/connection_adapters/entity_definition.rb",
|
30
|
+
"lib/active_record/connection_adapters/id_resolver.rb",
|
31
|
+
"lib/active_record/connection_adapters/recording_binding.rb",
|
32
|
+
"lib/active_record/connection_adapters/relationship_definition.rb",
|
33
|
+
"lib/active_record/connection_adapters/result_array.rb",
|
34
|
+
"lib/active_record/connection_adapters/sid_authentication_filter.rb",
|
35
|
+
"lib/activerecord-activesalesforce-adapter.rb",
|
36
|
+
"lib/arel/engines/sql/compilers/activesalesforce_compiler.rb",
|
37
|
+
"lib/rforce.rb",
|
38
|
+
"lib/rforce/binding.rb",
|
39
|
+
"lib/rforce/method_keys.rb",
|
40
|
+
"lib/rforce/soap_pullable.rb",
|
41
|
+
"lib/rforce/soap_response.rb",
|
42
|
+
"lib/rforce/soap_response_expat.rb",
|
43
|
+
"lib/rforce/soap_response_hpricot.rb",
|
44
|
+
"lib/rforce/soap_response_rexml.rb",
|
45
|
+
"lib/rforce/version.rb",
|
46
|
+
"silent-e-activerecord-activesalesforce-adapter.gemspec",
|
47
|
+
"test/unit/basic_test.rb",
|
48
|
+
"test/unit/config.yml",
|
49
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_add_notes_to_contact.recording",
|
50
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_assignment_rule_id.recording",
|
51
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_batch_insert.recording",
|
52
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_client_id.recording",
|
53
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_count_contacts.recording",
|
54
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_create_a_contact.recording",
|
55
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact.recording",
|
56
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact_by_first_name.recording",
|
57
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact_by_id.recording",
|
58
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_addresses.recording",
|
59
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_get_created_by_from_contact.recording",
|
60
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_master_detail.recording",
|
61
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_read_all_content_columns.recording",
|
62
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_save_a_contact.recording",
|
63
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_use_default_rule.recording",
|
64
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_use_update_mru.recording",
|
65
|
+
"test/unit/recorded_test_case.rb"
|
66
|
+
]
|
67
|
+
s.homepage = %q{http://github.com/silent-e/activerecord-activesalesforce-adapter}
|
68
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
69
|
+
s.require_paths = ["lib"]
|
70
|
+
s.rubygems_version = %q{1.3.7}
|
71
|
+
s.summary = %q{ActiveSalesforce (ASF) is a Rails connection adapter that provides direct access to Salesforce.com hosted data and metadata via the ActiveRecord model layer. Objects, fields, and relationships are all auto surfaced as active record attributes and rels.}
|
72
|
+
s.test_files = [
|
73
|
+
"test/unit",
|
74
|
+
"test/unit/basic_test.rb",
|
75
|
+
"test/unit/config.yml",
|
76
|
+
"test/unit/recorded_results",
|
77
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_add_notes_to_contact.recording",
|
78
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_assignment_rule_id.recording",
|
79
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_batch_insert.recording",
|
80
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_client_id.recording",
|
81
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_count_contacts.recording",
|
82
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_create_a_contact.recording",
|
83
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact.recording",
|
84
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact_by_first_name.recording",
|
85
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_a_contact_by_id.recording",
|
86
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_find_addresses.recording",
|
87
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_get_created_by_from_contact.recording",
|
88
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_master_detail.recording",
|
89
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_read_all_content_columns.recording",
|
90
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_save_a_contact.recording",
|
91
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_use_default_rule.recording",
|
92
|
+
"test/unit/recorded_results/AsfUnitTestsBasicTest.test_use_update_mru.recording",
|
93
|
+
"test/unit/recorded_test_case.rb"
|
94
|
+
]
|
95
|
+
|
96
|
+
if s.respond_to? :specification_version then
|
97
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
98
|
+
s.specification_version = 3
|
99
|
+
|
100
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
101
|
+
s.add_runtime_dependency(%q<rails>, [">= 2.3.3"])
|
102
|
+
s.add_runtime_dependency(%q<builder>, [">= 1.2.4"])
|
103
|
+
s.add_runtime_dependency(%q<hpricot>, [">= 0.8.2"])
|
104
|
+
else
|
105
|
+
s.add_dependency(%q<rails>, [">= 2.3.3"])
|
106
|
+
s.add_dependency(%q<builder>, [">= 1.2.4"])
|
107
|
+
s.add_dependency(%q<hpricot>, [">= 0.8.2"])
|
108
|
+
end
|
109
|
+
else
|
110
|
+
s.add_dependency(%q<rails>, [">= 2.3.3"])
|
111
|
+
s.add_dependency(%q<builder>, [">= 1.2.4"])
|
112
|
+
s.add_dependency(%q<hpricot>, [">= 0.8.2"])
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
@@ -0,0 +1,204 @@
|
|
1
|
+
=begin
|
2
|
+
ActiveSalesforce
|
3
|
+
Copyright 2006 Doug Chasman
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
=end
|
17
|
+
|
18
|
+
require 'rubygems'
|
19
|
+
|
20
|
+
#require_gem 'activesalesforce'
|
21
|
+
require File.dirname(__FILE__) + '/../../lib/active_record/connection_adapters/activesalesforce_adapter'
|
22
|
+
|
23
|
+
require File.dirname(__FILE__) + '/recorded_test_case'
|
24
|
+
require 'pp'
|
25
|
+
|
26
|
+
module Salesforce
|
27
|
+
class Contact < ActiveRecord::Base
|
28
|
+
end
|
29
|
+
|
30
|
+
class Department < ActiveRecord::Base
|
31
|
+
end
|
32
|
+
|
33
|
+
class Address < ActiveRecord::Base
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
module Asf
|
39
|
+
module UnitTests
|
40
|
+
|
41
|
+
class BasicTest < Test::Unit::TestCase
|
42
|
+
include RecordedTestCase
|
43
|
+
|
44
|
+
attr_reader :contact
|
45
|
+
|
46
|
+
def initialize(test_method_name)
|
47
|
+
super(test_method_name)
|
48
|
+
|
49
|
+
#force_recording :test_create_a_contact
|
50
|
+
end
|
51
|
+
|
52
|
+
def setup
|
53
|
+
puts "\nStarting test '#{self.class.name.gsub('::', '')}.#{method_name}'"
|
54
|
+
|
55
|
+
super
|
56
|
+
|
57
|
+
@contact = Salesforce::Contact.new
|
58
|
+
|
59
|
+
reset_header_options
|
60
|
+
|
61
|
+
contact.first_name = 'DutchTestFirstName'
|
62
|
+
contact.last_name = 'DutchTestLastName'
|
63
|
+
contact.home_phone = '555-555-1212'
|
64
|
+
contact.save
|
65
|
+
|
66
|
+
contact.reload
|
67
|
+
end
|
68
|
+
|
69
|
+
def teardown
|
70
|
+
reset_header_options
|
71
|
+
|
72
|
+
contact.destroy if contact
|
73
|
+
|
74
|
+
super
|
75
|
+
end
|
76
|
+
|
77
|
+
def reset_header_options
|
78
|
+
binding = Salesforce::Contact.connection.binding
|
79
|
+
binding.assignment_rule_id = nil
|
80
|
+
binding.use_default_rule = false
|
81
|
+
binding.update_mru = false
|
82
|
+
binding.trigger_user_email = false
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
def test_create_a_contact
|
87
|
+
contact.id
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_count_contacts
|
91
|
+
assert Salesforce::Contact.count > 0
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_save_a_contact
|
95
|
+
contact.id
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_find_a_contact
|
99
|
+
c = Salesforce::Contact.find(contact.id)
|
100
|
+
assert_equal contact.id, c.id
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_find_a_contact_by_id
|
104
|
+
c = Salesforce::Contact.find_by_id(contact.id)
|
105
|
+
assert_equal contact.id, c.id
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_find_a_contact_by_first_name
|
109
|
+
c = Salesforce::Contact.find_by_first_name('DutchTestFirstName')
|
110
|
+
assert_equal contact.id, c.id
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_read_all_content_columns
|
114
|
+
Salesforce::Contact.content_columns.each { |column| contact.send(column.name) }
|
115
|
+
end
|
116
|
+
|
117
|
+
def test_get_created_by_from_contact
|
118
|
+
user = contact.created_by
|
119
|
+
assert_equal contact.created_by_id, user.id
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_use_update_mru
|
123
|
+
Salesforce::Contact.connection.binding.update_mru = true
|
124
|
+
contact.save
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_use_default_rule
|
128
|
+
Salesforce::Contact.connection.binding.use_default_rule = true
|
129
|
+
contact.save
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_assignment_rule_id
|
133
|
+
Salesforce::Contact.connection.binding.assignment_rule_id = "1234567890"
|
134
|
+
contact.save
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_client_id
|
138
|
+
Salesforce::Contact.connection.binding.client_id = "testClient"
|
139
|
+
contact.save
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
def test_add_notes_to_contact
|
144
|
+
n1 = Salesforce::Note.new(:title => "My Title", :body => "My Body")
|
145
|
+
n2 = Salesforce::Note.new(:title => "My Title 2", :body => "My Body 2")
|
146
|
+
|
147
|
+
contact.notes << n1
|
148
|
+
contact.notes << n2
|
149
|
+
|
150
|
+
n1.save
|
151
|
+
n2.save
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_master_detail
|
155
|
+
department = Salesforce::Department.new(:department_description__c => 'DutchTestDepartment description')
|
156
|
+
department.save
|
157
|
+
department.reload
|
158
|
+
|
159
|
+
job = Job.new(:name => "DutchJob")
|
160
|
+
|
161
|
+
department.jobs__c << job
|
162
|
+
|
163
|
+
department.destroy
|
164
|
+
end
|
165
|
+
|
166
|
+
|
167
|
+
def test_batch_insert
|
168
|
+
c1 = Salesforce::Contact.new(:first_name => 'FN1', :last_name => 'LN1')
|
169
|
+
c2 = Salesforce::Contact.new(:first_name => 'FN2', :last_name => 'LN2')
|
170
|
+
c3 = Salesforce::Contact.new(:first_name => 'FN3', :last_name => 'LN3')
|
171
|
+
|
172
|
+
Salesforce::Contact.transaction(c1, c2) do
|
173
|
+
c1.save
|
174
|
+
c2.save
|
175
|
+
end
|
176
|
+
|
177
|
+
c3.save
|
178
|
+
|
179
|
+
c1.first_name << '_2'
|
180
|
+
c2.first_name << '_2'
|
181
|
+
c3.first_name << '_2'
|
182
|
+
|
183
|
+
Salesforce::Contact.transaction(c1, c2) do
|
184
|
+
c1.save
|
185
|
+
c2.save
|
186
|
+
end
|
187
|
+
|
188
|
+
Salesforce::Contact.transaction(c1, c2) do
|
189
|
+
c3.save
|
190
|
+
|
191
|
+
c3.destroy
|
192
|
+
c2.destroy
|
193
|
+
c1.destroy
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def test_find_addresses
|
198
|
+
adresses = Salesforce::Address.find(:all)
|
199
|
+
end
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
end
|
204
|
+
end
|