activeforce 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. data/Gemfile +15 -0
  2. data/Gemfile.lock +128 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.md +112 -0
  5. data/Rakefile +47 -0
  6. data/VERSION +1 -0
  7. data/activeforce.gemspec +151 -0
  8. data/app/models/salesforce/account.rb +4 -0
  9. data/app/models/salesforce/activity_history.rb +4 -0
  10. data/app/models/salesforce/approval.rb +4 -0
  11. data/app/models/salesforce/campaign.rb +4 -0
  12. data/app/models/salesforce/campaign_feed.rb +4 -0
  13. data/app/models/salesforce/campaign_member.rb +4 -0
  14. data/app/models/salesforce/case.rb +4 -0
  15. data/app/models/salesforce/case_comment.rb +4 -0
  16. data/app/models/salesforce/case_contact_role.rb +4 -0
  17. data/app/models/salesforce/case_feed.rb +4 -0
  18. data/app/models/salesforce/case_history.rb +4 -0
  19. data/app/models/salesforce/case_share.rb +4 -0
  20. data/app/models/salesforce/case_solution.rb +4 -0
  21. data/app/models/salesforce/case_status.rb +4 -0
  22. data/app/models/salesforce/case_team_member.rb +4 -0
  23. data/app/models/salesforce/community.rb +4 -0
  24. data/app/models/salesforce/contact.rb +4 -0
  25. data/app/models/salesforce/contact_feed.rb +4 -0
  26. data/app/models/salesforce/contact_history.rb +4 -0
  27. data/app/models/salesforce/contract.rb +4 -0
  28. data/app/models/salesforce/document.rb +4 -0
  29. data/app/models/salesforce/event.rb +4 -0
  30. data/app/models/salesforce/feed_item.rb +4 -0
  31. data/app/models/salesforce/group.rb +4 -0
  32. data/app/models/salesforce/group_member.rb +4 -0
  33. data/app/models/salesforce/idea.rb +4 -0
  34. data/app/models/salesforce/lead.rb +4 -0
  35. data/app/models/salesforce/lead_status.rb +4 -0
  36. data/app/models/salesforce/name.rb +4 -0
  37. data/app/models/salesforce/note.rb +4 -0
  38. data/app/models/salesforce/open_activity.rb +4 -0
  39. data/app/models/salesforce/opportunity.rb +4 -0
  40. data/app/models/salesforce/organization.rb +4 -0
  41. data/app/models/salesforce/partner.rb +4 -0
  42. data/app/models/salesforce/period.rb +4 -0
  43. data/app/models/salesforce/product2.rb +4 -0
  44. data/app/models/salesforce/product2_feed.rb +4 -0
  45. data/app/models/salesforce/profile.rb +4 -0
  46. data/app/models/salesforce/quote.rb +4 -0
  47. data/app/models/salesforce/solution.rb +4 -0
  48. data/app/models/salesforce/task.rb +4 -0
  49. data/app/models/salesforce/task_feed.rb +4 -0
  50. data/app/models/salesforce/task_priority.rb +4 -0
  51. data/app/models/salesforce/task_status.rb +4 -0
  52. data/app/models/salesforce/user.rb +4 -0
  53. data/app/models/salesforce/user_role.rb +4 -0
  54. data/app/models/salesforce/vote.rb +4 -0
  55. data/lib/activeforce.rb +29 -0
  56. data/lib/salesforce/attributes.rb +13 -0
  57. data/lib/salesforce/authentication.rb +25 -0
  58. data/lib/salesforce/base.rb +240 -0
  59. data/lib/salesforce/bulk/batch.rb +77 -0
  60. data/lib/salesforce/bulk/job.rb +103 -0
  61. data/lib/salesforce/bulk/operations.rb +25 -0
  62. data/lib/salesforce/bulk/update_job.rb +24 -0
  63. data/lib/salesforce/column.rb +98 -0
  64. data/lib/salesforce/columns.rb +60 -0
  65. data/lib/salesforce/config.rb +110 -0
  66. data/lib/salesforce/connection.rb +33 -0
  67. data/lib/salesforce/connection/async.rb +36 -0
  68. data/lib/salesforce/connection/conversion.rb +37 -0
  69. data/lib/salesforce/connection/http_methods.rb +72 -0
  70. data/lib/salesforce/connection/rest_api.rb +52 -0
  71. data/lib/salesforce/connection/soap_api.rb +74 -0
  72. data/lib/salesforce/engine.rb +6 -0
  73. data/lib/salesforce/errors.rb +33 -0
  74. data/test/salesforce/authentication_test.rb +52 -0
  75. data/test/salesforce/base_test.rb +440 -0
  76. data/test/salesforce/bulk/batch_test.rb +79 -0
  77. data/test/salesforce/bulk/update_job_test.rb +125 -0
  78. data/test/salesforce/column_test.rb +115 -0
  79. data/test/salesforce/config_test.rb +163 -0
  80. data/test/salesforce/connection/async_test.rb +138 -0
  81. data/test/salesforce/connection/http_methods_test.rb +242 -0
  82. data/test/salesforce/connection/rest_api_test.rb +61 -0
  83. data/test/salesforce/connection/soap_api_test.rb +148 -0
  84. data/test/salesforce/connection_test.rb +148 -0
  85. data/test/test_helper.rb +79 -0
  86. metadata +295 -0
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+
3
+ class Salesforce::Bulk::BatchTest < ActiveSupport::TestCase
4
+ setup :clear_columns_for_bulk_table
5
+ setup :setup_columns_for_bulk_table
6
+ setup :setup_job
7
+ teardown :clear_file
8
+
9
+ def test_initialize
10
+ assert_equal @job, @batch.job
11
+ assert !@batch.filename.nil?
12
+ assert !@batch.csv.nil?
13
+ @batch.csv.close
14
+ content = File.read(@batch.filename)
15
+ assert_equal "Id,Name__c,dob__c,Car__c\n", content
16
+ assert_equal [ 'Id', "Name__c", "dob__c", "Car__c"], @batch.send(:csv_header)
17
+ end
18
+
19
+ def test_record__from_hash
20
+ @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/14/2008")
22
+
23
+ @batch.csv.expects(:<<).with([ 'recordid', 'record name', "2008-10-14", 'record car'])
24
+ @batch.record :id => "recordid", :name => "record name", :car => "record car", :dob => "10/14/2008"
25
+
26
+ @batch.csv.expects(:<<).with([ 'recordid', '', '', 'record car'])
27
+ @batch.record :id => "recordid", :car => "record car"
28
+
29
+ @batch.csv.expects(:<<).with([ 'recordid', '', '', ''])
30
+ @batch.record :id => "recordid"
31
+ end
32
+
33
+ def test_record__from_object
34
+ bulk_table = Salesforce::BulkTable.new("Id" => "btid", :name => "name", "Car__c" => 'car', :dob => "10/14/2008")
35
+ @batch.csv.expects(:<<).with([ 'btid', "name", "2008-10-14", "car"])
36
+ @batch.record bulk_table
37
+ end
38
+
39
+ def test_create
40
+ @batch.csv.expects(:close)
41
+ File.expects(:read).returns("csv_contents")
42
+ Salesforce.connection.expects(:async_post).with("job/#{@job.id}/batch", "csv_contents", :format => :xml, :content_type => "text/csv").returns("id" => "batchid", "state" => "In Progress")
43
+ @batch.create!
44
+ assert_equal "batchid", @batch.id
45
+ assert @batch.in_progress?
46
+ end
47
+
48
+ def test_update_status
49
+ Salesforce.connection.expects(:async_get).with("job/#{@job.id}/batch/#{@batch.id}", :format => :xml).returns(:state => "Not Processed")
50
+ @batch.update_status
51
+ assert @batch.not_processed?
52
+
53
+ Salesforce.connection.expects(:async_get).with("job/#{@job.id}/batch/#{@batch.id}", :format => :xml).returns(:state => "Completed")
54
+ @batch.update_status
55
+ assert @batch.completed?
56
+
57
+ Salesforce.connection.expects(:async_get).never
58
+ @batch.update_status
59
+ end
60
+
61
+ def test_results
62
+ csv = "Id,Success,Created,Errors\n1,true,no,\n2,true,yes,"
63
+ Salesforce.connection.expects(:async_get).with("job/#{@job.id}/batch/#{@batch.id}/result").returns(csv)
64
+ assert_equal 2, @batch.results.size
65
+ end
66
+
67
+ private
68
+
69
+ def setup_job
70
+ @job = Salesforce::Bulk::UpdateJob.new(Salesforce::BulkTable)
71
+ @batch = @job.batch do
72
+ end
73
+ end
74
+
75
+ def clear_file
76
+ FileUtils.rm_rf(@batch.filename) if @batch.filename.present?
77
+ end
78
+ end
79
+
@@ -0,0 +1,125 @@
1
+ require 'test_helper'
2
+
3
+ class Salesforce::Bulk::UpdateJobTest < ActiveSupport::TestCase
4
+
5
+ setup :setup_columns_for_bulk_table
6
+ setup :setup_columns_for_account
7
+
8
+
9
+ def test_initialize
10
+ job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
11
+ assert_equal Salesforce::Account, job.object_type
12
+ assert_equal 'update', job.operation
13
+ assert_equal 'Parallel', job.concurrency_mode
14
+ assert_equal 'Account', job.object
15
+ assert_equal 'Id,City,Address,Name,Type,State', job.send(:csv_header).join(',')
16
+ end
17
+
18
+ def test_initialize__with_columns
19
+ job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account, [:name, :state])
20
+ assert_equal Salesforce::Account, job.object_type
21
+ assert_equal 'update', job.operation
22
+ assert_equal 'Parallel', job.concurrency_mode
23
+ assert_equal 'Account', job.object
24
+ assert_equal 'Id,Name,State', job.send(:csv_header).join(',')
25
+ end
26
+
27
+ def test_initialize__with_all
28
+ job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account, :all)
29
+ assert_equal Salesforce::Account, job.object_type
30
+ assert_equal 'update', job.operation
31
+ assert_equal 'Parallel', job.concurrency_mode
32
+ assert_equal 'Account', job.object
33
+ assert_equal 'Id,City,Address,Name,Type,State', job.send(:csv_header).join(',')
34
+ end
35
+
36
+ def test_csv_columns__unrecognized_column
37
+ assert_raises Salesforce::UnrecognizedColumn do
38
+ Salesforce::Bulk::UpdateJob.new(Salesforce::Account, [ :ssn ]).csv_columns
39
+ end
40
+ end
41
+
42
+ def test_bulk_update
43
+ Salesforce::Bulk::UpdateJob.any_instance.expects(:process!)
44
+
45
+ job = Salesforce::BulkTable.bulk_update do
46
+ serial!
47
+ batch do
48
+ record({})
49
+ record({})
50
+ end
51
+ end
52
+
53
+ assert_equal Salesforce::BulkTable, job.object_type
54
+ assert_equal 'update', job.operation
55
+ assert_equal 'Serial', job.concurrency_mode
56
+ assert_equal 'BulkTable__c', job.object
57
+ assert_equal 1, job.batches.size
58
+ end
59
+
60
+ def test_process
61
+ job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
62
+ job.expects(:create_job!)
63
+ job.expects(:create_batches!)
64
+ job.expects(:close_job!)
65
+ job.process!
66
+ end
67
+
68
+ def test_create_job
69
+ job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
70
+ xml = anything
71
+ Salesforce.connection.expects(:async_post).with("job", xml, :format => :xml).returns({ "id" => 3})
72
+ job.send :create_job!
73
+ assert_equal 3, job.id
74
+ end
75
+
76
+ def test_completed
77
+ job_with_batches
78
+ @batch_1.stubs(:update_status)
79
+ @batch_2.stubs(:update_status)
80
+ @batch_1.expects(:completed?).returns(false)
81
+ @batch_1.expects(:failed?).returns(false)
82
+ assert_equal false, @job.completed?
83
+
84
+ @batch_1.expects(:completed?).returns(true)
85
+ @batch_2.expects(:completed?).returns(false)
86
+ @batch_2.expects(:failed?).returns(false)
87
+ assert_equal false, @job.completed?
88
+
89
+ @batch_1.expects(:completed?).returns(true)
90
+ @batch_2.expects(:completed?).returns(false)
91
+ @batch_2.expects(:failed?).returns(true)
92
+ assert @job.completed?
93
+ end
94
+
95
+ def test_results
96
+ job_with_batches
97
+ @batch_1.expects(:results).returns([ :result_1, :result_2])
98
+ @batch_2.expects(:results).returns([ :result_3, :result_4])
99
+ assert_equal [ :result_1, :result_2, :result_3, :result_4 ], @job.results
100
+ end
101
+
102
+ def test_close_job
103
+ Salesforce::Authentication.stubs(:session_id).returns('session_id')
104
+ job_with_batches
105
+ Salesforce.connection.expects(:async_post).with("job/jobId", includes("<state>Closed</state>"), :format => :xml).returns("state" => "Closed", "number_batches_total" => 2)
106
+ @job.send(:close_job!)
107
+ assert_equal 2, @job.number_batches_total
108
+ assert @job.closed?
109
+ end
110
+
111
+ private
112
+
113
+ def job_with_batches
114
+ Salesforce::Authentication.stubs(:session_id).returns('session_id')
115
+
116
+ @job = Salesforce::Bulk::UpdateJob.new(Salesforce::Account)
117
+ @job.id = "jobId"
118
+ @batch_1 = Salesforce::Bulk::Batch.new(@job)
119
+ @batch_2 = Salesforce::Bulk::Batch.new(@job)
120
+ @job.batches << @batch_1
121
+ @job.batches << @batch_2
122
+ end
123
+
124
+
125
+ end
@@ -0,0 +1,115 @@
1
+ require 'test_helper'
2
+
3
+ class Salesforce::ColumnTest < ActiveSupport::TestCase
4
+ def test_initializer
5
+ col = Salesforce::Column.new("name" => "Name", "type" => "string", "updateable" => true)
6
+ assert_equal "name", col.name
7
+ assert_equal "Name", col.original_name
8
+ assert_equal :string, col.type
9
+ assert col.editable?
10
+ end
11
+
12
+ def test_initializer__custom
13
+ col = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => true)
14
+ assert_equal "name", col.name
15
+ assert_equal "Name__c", col.original_name
16
+ assert_equal :string, col.type
17
+ assert col.editable?
18
+ end
19
+
20
+ def test_initializer__not_editable
21
+ col = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => false, "createable" => false)
22
+ assert_equal "name", col.name
23
+ assert_equal "Name__c", col.original_name
24
+ assert_equal :string, col.type
25
+ assert_equal false, col.editable?
26
+ end
27
+
28
+ def test_initializer__editable
29
+ col = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => true, "createable" => false)
30
+ assert_equal "name", col.name
31
+ assert_equal "Name__c", col.original_name
32
+ assert_equal :string, col.type
33
+ assert col.editable?
34
+ assert col.updateable?
35
+ assert_equal false, col.createable?
36
+ col.updateable = false
37
+ col.createable = true
38
+ assert col.editable?
39
+ assert col.createable?
40
+ assert_equal false, col.updateable?
41
+ end
42
+
43
+ def test_to_soql_value
44
+ assert_equal "'string'", Salesforce::Column.to_soql_value('string')
45
+ assert_equal "TRUE", Salesforce::Column.to_soql_value(true)
46
+ assert_equal "FALSE", Salesforce::Column.to_soql_value(false)
47
+ assert_equal "NULL", Salesforce::Column.to_soql_value(nil)
48
+ assert_equal "2012-01-02", Salesforce::Column.to_soql_value(Date.parse('01/02/2012'))
49
+ assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_soql_value(Time.zone.parse('01/02/2012 06:40PM'))
50
+ assert_equal "1", Salesforce::Column.to_soql_value(1)
51
+ assert_equal "1.0", Salesforce::Column.to_soql_value(1.0)
52
+ assert_equal "1.04", Salesforce::Column.to_soql_value(BigDecimal.new("1.04"))
53
+ assert_equal "'col'", Salesforce::Column.to_soql_value(:col)
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/02/2012")])
56
+ end
57
+
58
+ def test_to_csv_value
59
+ assert_equal "string", Salesforce::Column.to_csv_value('string')
60
+ assert_equal "TRUE", Salesforce::Column.to_csv_value(true)
61
+ assert_equal "FALSE", Salesforce::Column.to_csv_value(false)
62
+ assert_equal "", Salesforce::Column.to_csv_value(nil)
63
+ assert_equal "2012-01-02", Salesforce::Column.to_csv_value(Date.parse('01/02/2012'))
64
+ assert_equal "2012-01-02T18:40:00-08:00", Salesforce::Column.to_csv_value(Time.zone.parse('01/02/2012 06:40PM'))
65
+ assert_equal "1", Salesforce::Column.to_csv_value(1)
66
+ assert_equal "1.0", Salesforce::Column.to_csv_value(1.0)
67
+ assert_equal "1.04", Salesforce::Column.to_csv_value(BigDecimal.new("1.04"))
68
+ assert_equal "col", Salesforce::Column.to_csv_value(:col)
69
+ end
70
+
71
+ def test_typecast
72
+ assert_equal "123456789012345", Salesforce::Column.typecast(:id, "123456789012345")
73
+ assert_equal "123456789012345", Salesforce::Column.typecast(:id, "123456789012345123")
74
+ assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345")
75
+ assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345123")
76
+ assert_equal Date.parse("08/31/2011"), Salesforce::Column.typecast(:date, "2011-08-31")
77
+ assert_equal Date.parse("08/31/2011"), Salesforce::Column.typecast(:date, Date.parse("08/31/2011"))
78
+ assert_equal nil, Salesforce::Column.typecast(:date, nil)
79
+ assert_equal nil, Salesforce::Column.typecast(:date, 'nil')
80
+
81
+ assert_equal Time.zone.parse('01/02/2012 06:40PM'), Salesforce::Column.typecast(:datetime, "2012-01-02T18:40:00-08:00")
82
+ assert_equal Time.zone.parse('01/02/2012 06:40PM'), Salesforce::Column.typecast(:datetime, Time.zone.parse('01/02/2012 06:40PM'))
83
+ assert_equal nil, Salesforce::Column.typecast(:datetime, nil)
84
+ assert_equal Time.now.to_s, Salesforce::Column.typecast(:datetime, 'nil').to_s
85
+
86
+ assert_equal BigDecimal("2012"), Salesforce::Column.typecast(:double, "2012")
87
+ assert_equal BigDecimal("2012.33"), Salesforce::Column.typecast(:double, "2012.33")
88
+ assert_equal BigDecimal("1"), Salesforce::Column.typecast(:double, 1)
89
+ assert_equal BigDecimal("1.2"), Salesforce::Column.typecast(:double, 1.2)
90
+ assert_equal 0, Salesforce::Column.typecast(:double, nil)
91
+ assert_equal 0, Salesforce::Column.typecast(:double, 'nil')
92
+
93
+ assert_equal true, Salesforce::Column.typecast(:boolean, true)
94
+ assert_equal false, Salesforce::Column.typecast(:boolean, false)
95
+ end
96
+
97
+ def test_typecast__using_full_length_ids
98
+ Salesforce::Config.instance.use_full_length_ids
99
+ assert_equal "123456789012345", Salesforce::Column.typecast(:id, "123456789012345")
100
+ assert_equal "123456789012345123", Salesforce::Column.typecast(:id, "123456789012345123")
101
+ assert_equal "123456789012345", Salesforce::Column.typecast(:reference, "123456789012345")
102
+ assert_equal "123456789012345123", Salesforce::Column.typecast(:reference, "123456789012345123")
103
+ end
104
+
105
+ def test_equals
106
+ col1 = Salesforce::Column.new("name" => "Name", "type" => "string", "updateable" => true)
107
+ col2 = Salesforce::Column.new("name" => "Name", "type" => "string", "updateable" => false)
108
+ col3 = Salesforce::Column.new("name" => "Name__c", "type" => "string", "updateable" => true)
109
+
110
+ assert col1 == col2
111
+ assert col2 != col3
112
+ assert col1 != col3
113
+ end
114
+
115
+ end
@@ -0,0 +1,163 @@
1
+ require 'test_helper'
2
+
3
+ class Salesforce::ConfigTest < ActiveSupport::TestCase
4
+
5
+ setup :clean_config
6
+
7
+ def test_configure
8
+ Salesforce.configure do
9
+ username "foo"
10
+ password "bar"
11
+ end
12
+ assert_equal "foo", Salesforce::Config.username
13
+ assert_equal "bar", Salesforce::Config.password
14
+ assert_equal '22.0', Salesforce::Config.api_version
15
+ assert_equal false, Salesforce::Config.use_sandbox?
16
+ assert_equal false, Salesforce::Config.use_full_length_ids?
17
+ end
18
+
19
+ def test_configure__username__password_can_be_blocks
20
+ user_count = 0
21
+ password_count = 4
22
+
23
+ Salesforce.configure do
24
+ username { user_count = user_count + 1 }
25
+ password { password_count = password_count + 1 }
26
+ end
27
+
28
+ assert_equal 1, Salesforce::Config.username
29
+ assert_equal 2, Salesforce::Config.username
30
+ assert_equal 3, Salesforce::Config.username
31
+ assert_equal 4, Salesforce::Config.username
32
+
33
+ assert_equal 5, Salesforce::Config.password
34
+ assert_equal 6, Salesforce::Config.password
35
+ assert_equal 7, Salesforce::Config.password
36
+ assert_equal 8, Salesforce::Config.password
37
+ end
38
+
39
+ def test_config__on_login_failure
40
+ assert_nil Salesforce::Config.on_login_failure
41
+
42
+ @my_stuff = 0
43
+
44
+ Salesforce.configure do
45
+ on_login_failure { @my_stuff = @my_stuff + 1 }
46
+ end
47
+
48
+ Salesforce::Config.on_login_failure
49
+ assert_equal 1, @my_stuff
50
+ Salesforce::Config.on_login_failure
51
+
52
+ assert_equal 2, @my_stuff
53
+ end
54
+
55
+ def test_config__specific_api_version
56
+ Salesforce.configure do
57
+ username "foo"
58
+ password "bar"
59
+ api_version 21
60
+ end
61
+ assert_equal "foo", Salesforce::Config.username
62
+ assert_equal "bar", Salesforce::Config.password
63
+ assert_equal '21.0', Salesforce::Config.api_version
64
+ assert_equal false, Salesforce::Config.use_sandbox?
65
+ end
66
+
67
+ def test_config__sandbox
68
+ Salesforce.configure do
69
+ username "foo"
70
+ password "bar"
71
+ use_sandbox
72
+ end
73
+
74
+ assert_equal "foo", Salesforce::Config.username
75
+ assert_equal "bar", Salesforce::Config.password
76
+ assert Salesforce::Config.use_sandbox?
77
+ end
78
+
79
+ def test_login_url__regular
80
+ Salesforce.configure do
81
+ username "foo"
82
+ password "bar"
83
+ api_version 21
84
+ end
85
+
86
+ assert_equal "https://login.salesforce.com/services/Soap/c/21.0", Salesforce::Config.login_url
87
+ end
88
+
89
+ def test_login_url__sandbox
90
+ Salesforce.configure do
91
+ username "foo"
92
+ password "bar"
93
+ use_sandbox
94
+ end
95
+
96
+ assert_equal "https://test.salesforce.com/services/Soap/c/22.0", Salesforce::Config.login_url
97
+ end
98
+
99
+ def test_passthrough_methods
100
+ config = Salesforce::Config.instance
101
+ config.username "username"
102
+ assert_equal "username", Salesforce::Config.username
103
+ config.password "password"
104
+ assert_equal "password", Salesforce::Config.password
105
+ config.api_version "23"
106
+ assert_equal "23.0", Salesforce::Config.api_version
107
+ config.use_sandbox
108
+ assert Salesforce::Config.use_sandbox?
109
+ assert_equal config.login_url, Salesforce::Config.login_url
110
+ config.session_id "session_id"
111
+ assert_equal "session_id", Salesforce::Config.session_id
112
+
113
+ config.server_instance "na99"
114
+ assert_equal "na99", Salesforce::Config.server_instance
115
+
116
+ config.user_id "user_id"
117
+ assert_equal "user_id", Salesforce::Config.user_id
118
+ assert_equal config.server_url, Salesforce::Config.server_url
119
+ end
120
+
121
+ def test_server_url__and_server_host
122
+ config = Salesforce::Config.instance
123
+ config.server_instance "sa2"
124
+ config.api_version 99
125
+ assert_equal "https://sa2.salesforce.com/services/data/v99.0", Salesforce::Config.server_url
126
+ assert_equal "https://sa2.salesforce.com", Salesforce::Config.server_host
127
+ end
128
+
129
+ def test_configured
130
+ config = Salesforce::Config.instance
131
+ assert_equal false, config.configured?
132
+
133
+ config.username "username"
134
+ assert_equal false, config.configured?
135
+
136
+ config.password "password"
137
+ assert config.configured?
138
+
139
+ config.username nil
140
+ assert_equal false, config.configured?
141
+ end
142
+
143
+ def test_soap_enterprise_namespace
144
+ assert_equal "urn:enterprise.soap.sforce.com", Salesforce::Config.soap_enterprise_namespace
145
+ assert_equal "urn:enterprise.soap.sforce.com", Salesforce::Config.instance.soap_enterprise_namespace
146
+ end
147
+
148
+ def test_use_full_length_ids?
149
+
150
+ Salesforce.configure do
151
+ use_full_length_ids
152
+ end
153
+
154
+ assert Salesforce::Config.use_full_length_ids?
155
+ end
156
+
157
+ private
158
+
159
+ def clean_config
160
+ Salesforce::Config.instance_variable_set(:@instance, nil)
161
+ end
162
+
163
+ end