restforce_mock 0.4.1 → 0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -1
- data/README.md +10 -2
- data/lib/restforce_mock.rb +1 -0
- data/lib/restforce_mock/client.rb +19 -1
- data/lib/restforce_mock/configuration.rb +8 -0
- data/lib/restforce_mock/error.rb +4 -0
- data/lib/restforce_mock/tasks.rb +14 -0
- data/lib/restforce_mock/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75614ebb2f242748ce0a507b8a67eea2bb83d8ef
|
4
|
+
data.tar.gz: 1a6fdf4d651054b110df083774af41d32019d51f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2286120b33fdb1fa4b3cea120e62ae1314c60d76fff290f279090a57bd1a9affb9fcd2165185e57f9f0dee7292ae48e351f1d16484853fbb16c14b2a33e9c43b
|
7
|
+
data.tar.gz: a91b1c1347a64ebcb4d248c3bc0cbafeca4d59a22addfd220503eef8058f0071305f3e90d184bfbf0c85c1fd0983c92122554ee690494033c401595bc1d4a354
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# RestforceMock
|
2
2
|
|
3
|
-
- [](https://travis-ci.org/
|
3
|
+
- [](https://travis-ci.org/execonline-inc/restforce_mock)
|
4
4
|
- [](https://rubygems.org/gems/restforce_mock)
|
5
5
|
- [](http://opensource.org/licenses/MIT)
|
6
6
|
|
@@ -43,8 +43,16 @@ This will direct all calls to `Restforce` to `RestforceMock`. Test as usual.
|
|
43
43
|
```ruby
|
44
44
|
RestforceMock.configure do |config|
|
45
45
|
config.schema_file = "spec/fixtures/schema.yml"
|
46
|
-
|
46
|
+
|
47
|
+
# raise error if required field is not set (default: true)
|
48
|
+
config.error_on_required = true
|
47
49
|
config.required_exclusions = [:LastModifiedById ...] # fields that should not be considered required
|
50
|
+
|
51
|
+
# raise error if schema is not available (default: false)
|
52
|
+
config.raise_on_schema_missing = true
|
53
|
+
|
54
|
+
# objects in SF that should be loaded into the schema used for RestforceMock
|
55
|
+
config.objects_for_schema = ["Contact", "Opportunity" ...]
|
48
56
|
end
|
49
57
|
```
|
50
58
|
|
data/lib/restforce_mock.rb
CHANGED
@@ -11,6 +11,7 @@ module RestforceMock
|
|
11
11
|
url=~/sobjects\/(.+)\/(.+)/
|
12
12
|
object=$1
|
13
13
|
id=$2
|
14
|
+
validate_schema!(object)
|
14
15
|
validate_presence!(object, id)
|
15
16
|
update_object(object, id, attrs)
|
16
17
|
end
|
@@ -19,6 +20,7 @@ module RestforceMock
|
|
19
20
|
url=~/sobjects\/(.+)/
|
20
21
|
sobject = $1
|
21
22
|
id = SecureRandom.urlsafe_base64(13) #duplicates possible
|
23
|
+
validate_schema!(sobject)
|
22
24
|
validate_requires!(sobject, attrs)
|
23
25
|
add_object(sobject, id, attrs)
|
24
26
|
return Body.new(id)
|
@@ -48,10 +50,26 @@ module RestforceMock
|
|
48
50
|
end
|
49
51
|
end
|
50
52
|
|
53
|
+
def validate_schema!(object)
|
54
|
+
if RestforceMock.configuration.raise_on_schema_missing
|
55
|
+
unless schema[object]
|
56
|
+
raise RestforceMock::Error.new("No schema for Salesforce object #{object}")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
51
61
|
private
|
52
62
|
|
53
63
|
def schema
|
54
|
-
|
64
|
+
@schema ||=
|
65
|
+
begin
|
66
|
+
manager = RestforceMock::SchemaManager.new
|
67
|
+
begin
|
68
|
+
manager.load_schema(RestforceMock.configuration.schema_file)
|
69
|
+
rescue Errno::ENOENT
|
70
|
+
raise RestforceMock::Error.new("No schema for Salesforce object is available")
|
71
|
+
end
|
72
|
+
end
|
55
73
|
end
|
56
74
|
|
57
75
|
class Body
|
@@ -3,11 +3,19 @@ module RestforceMock
|
|
3
3
|
attr_accessor :schema_file
|
4
4
|
attr_writer :error_on_required
|
5
5
|
attr_writer :required_exclusions
|
6
|
+
attr_writer :raise_on_schema_missing
|
7
|
+
attr_accessor :objects_for_schema
|
8
|
+
|
9
|
+
attr_writer :objects_for_schema
|
6
10
|
|
7
11
|
def error_on_required
|
8
12
|
@error_on_required.nil? ? true : @error_on_required
|
9
13
|
end
|
10
14
|
|
15
|
+
def raise_on_schema_missing
|
16
|
+
@raise_on_schema_missing.nil? ? false : @raise_on_schema_missing
|
17
|
+
end
|
18
|
+
|
11
19
|
def required_exclusions
|
12
20
|
@required_exclusions || default_exclusions
|
13
21
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "rake"
|
2
|
+
|
3
|
+
namespace :restforce_mock do
|
4
|
+
namespace :schema do
|
5
|
+
desc "Dump schema from Salesforce into file"
|
6
|
+
task load: :environment do
|
7
|
+
m = RestforceMock::SchemaManager.new
|
8
|
+
m.dump_schema(
|
9
|
+
RestforceMock.configuration.objects_for_schema,
|
10
|
+
RestforceMock.configuration.schema_file
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restforce_mock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Katz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: restforce
|
@@ -117,8 +117,10 @@ files:
|
|
117
117
|
- lib/restforce_mock.rb
|
118
118
|
- lib/restforce_mock/client.rb
|
119
119
|
- lib/restforce_mock/configuration.rb
|
120
|
+
- lib/restforce_mock/error.rb
|
120
121
|
- lib/restforce_mock/sandbox.rb
|
121
122
|
- lib/restforce_mock/schema_manager.rb
|
123
|
+
- lib/restforce_mock/tasks.rb
|
122
124
|
- lib/restforce_mock/version.rb
|
123
125
|
- restforce_mock.gemspec
|
124
126
|
homepage: https://github.com/ilyakatz/restforce_mock
|