leap_salesforce 0.2.17 → 0.2.18
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 +5 -1
- data/README.md +73 -18
- data/lib/leap_salesforce/soql_data/soql_data.rb +1 -0
- data/lib/leap_salesforce/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f2c0ca47804ac6b8569d9a025d57650cfd749000abcf51a32833734fe82aabc3
|
4
|
+
data.tar.gz: bfdbffd73951d36c605e51250d7db353d50408b1435f95a8a7bb2e296f923e29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe62e4cc025ebb9b51432d295ff377f672127c07cc95d9f0691a3898339baee22beac1f01e8c0da5074bc6194fefde2465513e875e27b4d620dc285c45ef1b49
|
7
|
+
data.tar.gz: aa0431124e5a9e1b0e6664c175a8818af2283b73215c4a5f4cc34f2b3f45e09904560e1bff5c1c69b44e6964c774ce204028e35b619bea5e4c2ca98e1129a9d2
|
data/ChangeLog
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
+
Version 0.2.18
|
2
|
+
* Bug fix
|
3
|
+
* Fixes #29 to raise error if value retrieved on object after an update failure
|
4
|
+
|
1
5
|
Version 0.2.17
|
2
6
|
* Bug fix
|
3
|
-
* Do not fail SFDX if SFDX_ACCESS_TOKEN and SFDX_INSTANCE_URL are manually set
|
7
|
+
* Do not fail SFDX if SFDX_ACCESS_TOKEN and SFDX_INSTANCE_URL are manually set and no jwt file is present
|
4
8
|
|
5
9
|
Version 0.2.16
|
6
10
|
* Bug fix
|
data/README.md
CHANGED
@@ -46,6 +46,8 @@ The benefits of an open source tool like this are:
|
|
46
46
|
* [.leap_salesforce.yml](#leap_salesforceyml)
|
47
47
|
* [salesforce_oauth2.yml](#salesforce_oauth2yml)
|
48
48
|
* [config/general.rb](#configgeneralrb)
|
49
|
+
* [Setup scripts](#setup-scripts)
|
50
|
+
* [Changing environment](#changing-environment)
|
49
51
|
* [Test Users](#test-users)
|
50
52
|
* [CRUD of data](#crud-of-data)
|
51
53
|
* [Creating entities](#creating-entities)
|
@@ -82,6 +84,9 @@ Or install it yourself as:
|
|
82
84
|
$ gem install leap_salesforce
|
83
85
|
|
84
86
|
## Usage
|
87
|
+
Note there is a `Leaps` alias that can be declared if you require `leap_salesforce/leaps` which makes commands
|
88
|
+
shorter, meaning that `Leaps` can be used instead of `LeapSalesforce`
|
89
|
+
|
85
90
|
### Getting started
|
86
91
|
After installing the gem, to get started in creating a fresh repository, the `leap_salesforce` executable can be used.
|
87
92
|
It will ask for credentials and setup files that will locally store them.
|
@@ -150,7 +155,55 @@ This is where common code is stored for all the environments. This is where you
|
|
150
155
|
as described in the next section.
|
151
156
|
|
152
157
|
For sfdx, set the `ENV['SF_USERNAME']` to the user to login to sfdx with and create a `server.key` for
|
153
|
-
authentication. How sfdx will fully work with different user roles is still a work in progress.
|
158
|
+
authentication. How sfdx will fully work with different user roles is still a work in progress.
|
159
|
+
|
160
|
+
#### Setup scripts
|
161
|
+
The `leap_salesforce init` runs 2 rake tasks on the initial suite after having created the basic files. These are:
|
162
|
+
|
163
|
+
* `leaps:create_soql_objects`
|
164
|
+
This reads from the list of soql objects defined in `.leap_salesforce.yml` and creates a class inheriting from
|
165
|
+
`SoqlData` that maps to a backend object. A difference in name created from this script can be defined in that file
|
166
|
+
with format `DesiredClassName:ActualClassName`.
|
167
|
+
|
168
|
+
E.g., `Broker: Broker__c` will mean that a Ruby class called `Broker` will be created that will map to the `Broker__c`
|
169
|
+
custom object.
|
170
|
+
|
171
|
+
A separate file with the ending `_field_names` is also created from the metadata for each object. This creates
|
172
|
+
accessors for each field in the table with names that map from a Ruby friendly name to the Salesforce backend name.
|
173
|
+
|
174
|
+
* `leaps:create_enums`
|
175
|
+
|
176
|
+
This task reads the soql objects defined in `.leap_salesforce.yml` and creates a `metadata/enum` folder that has
|
177
|
+
picklist information for all the picklist fields of each object. These are designed to be readonly as they will
|
178
|
+
be overridden when this command is run again.
|
179
|
+
|
180
|
+
These are designed to be used as:
|
181
|
+
|
182
|
+
1. A reference when setting the value of a picklist. Rather than
|
183
|
+
|
184
|
+
`contact.lead_source = 'Web'`
|
185
|
+
one can use
|
186
|
+
`contact.lead_source = Contact::LeadSource.web`
|
187
|
+
which makes it clearer that a picklist value is used (not just free text) and also have a value that can be
|
188
|
+
refactored if there is a change in the picklist.
|
189
|
+
|
190
|
+
2. A method of detecting changes in picklist values
|
191
|
+
Sometimes due to older methods of deployment (or a disconnect between dev and testing team), a picklist value
|
192
|
+
may change without the test team knowing about it (or a known change needs to be verified).
|
193
|
+
Since the history of these values can be tracked when these files are committed to source control, a change
|
194
|
+
can be detected when a test like the following is run
|
195
|
+
|
196
|
+
```ruby
|
197
|
+
RSpec.describe 'Picklists' do
|
198
|
+
LeapSalesforce.objects_to_verify.each do |data_class|
|
199
|
+
SoqlEnum.values_for(data_class).each do |picklist|
|
200
|
+
it "#{picklist} has not changed values" do
|
201
|
+
expect(data_class.picklist_for(picklist.name)).to match_array picklist.values
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
```
|
154
207
|
|
155
208
|
#### Changing environment
|
156
209
|
|
@@ -430,23 +483,25 @@ Following is the general structure of test automation suite that uses this appro
|
|
430
483
|
test framework used and other preferences.
|
431
484
|
|
432
485
|
.
|
433
|
-
├── config
|
434
|
-
│ ├── general.rb
|
435
|
-
│ ├── credentials
|
436
|
-
│ │ └── salesforce_oauth.yml
|
437
|
-
│ └── environments
|
438
|
-
├── lib
|
439
|
-
│ └── leap_salesforce
|
440
|
-
│ ├── factories
|
441
|
-
│ ├── metadata
|
442
|
-
│ │ └── enum
|
443
|
-
│ └── soql_data
|
444
|
-
├──
|
445
|
-
|
446
|
-
├──
|
447
|
-
├──
|
448
|
-
├──
|
449
|
-
|
486
|
+
├── config # Code for the configuration of the automation suite
|
487
|
+
│ ├── general.rb # Code loaded for common (non confidential code) setup across environments
|
488
|
+
│ ├── credentials # Setting of secret properties like passwords
|
489
|
+
│ │ └── salesforce_oauth.yml # Credentials for connecting to Salesforce via OAuth2.
|
490
|
+
│ └── environments # Contains ruby files loaded specific to environment following `ENVIRONMENT_NAME.rb`
|
491
|
+
├── lib # Common library code
|
492
|
+
│ └── leap_salesforce # Code generated by or specific to leap_salesforce (this folder can be configured in .leap_salesforce.yml)
|
493
|
+
│ ├── factories # FactoryBot definitions, describing how to mass produce objects
|
494
|
+
│ ├── metadata # Code generated and updated automatically from metadata
|
495
|
+
│ │ └── enum # Picklist enumeration objects are stored here
|
496
|
+
│ └── soql_data # Objects for handling each object in the backend specified in '.leap_salesforce.yml'
|
497
|
+
│ ├── {object_name} # Class mapping to a Soql object
|
498
|
+
│ └── {object_name}_field_names # Field name accessors auto created/updated based no metadata in Salesforce
|
499
|
+
├── logs # Contains API traffic logs for transactions against Salesforce
|
500
|
+
├── spec # Where RSpec automated tests are stored
|
501
|
+
├── .leap_salesforce.yml # Where common configuration is stored regarding your project. This complements and is read before what's in 'config'
|
502
|
+
├── Gemfile # Where required ruby gems/libraries are specified
|
503
|
+
├── Gemfile.lock # Generated file specified details of versions installed by `Gemfile`
|
504
|
+
└── Rakefile # Where common `Rake` tasks are specified. LeapSalesforce specific tasks are required from here
|
450
505
|
|
451
506
|
## Docs
|
452
507
|
|
@@ -192,6 +192,7 @@ class SoqlData < Exchange
|
|
192
192
|
# @return [String] Value at backend name
|
193
193
|
def [](backend_name)
|
194
194
|
if @updated
|
195
|
+
successful? unless backend_name.to_s == 'message' || backend_name.to_s == '$..message'
|
195
196
|
@updated = false
|
196
197
|
find # Retrieve data freshly after an update
|
197
198
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leap_salesforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- IQA
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-12-
|
12
|
+
date: 2019-12-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|