leap_salesforce 0.2.24 → 0.2.26

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b9311c1afc5593fb4b3428de805b3a2a9c5a6e8331d827dd40b9d5b60e09d8d
4
- data.tar.gz: 9532ceffad0924438eb87b97378faeadd6729e27bc396439a4934f2ee71f71e7
3
+ metadata.gz: 46ddc1666b0bfa490615de0e71ebfc2c38a038d1979ba11ca316473b9149ee5d
4
+ data.tar.gz: fd02406910add5f0476180668503aa8cd84a2b17a8d2d177c7bea04cc92a24ec
5
5
  SHA512:
6
- metadata.gz: 1c81db35151f84596e6d0b80815bebfdcf3f582be9ee2457eb46fe90b06bf989af780be6e9333dbf1de5bae3797193605849f54d87c7652f352ed741ceeb0cfc
7
- data.tar.gz: a8998c522c93ed383524758d91dceac18fd6fdf8af41f5db8db3f9898a3be93e6e6f03cb63dd0277bd9a4e404403ebe5929636278c3b92878df89c081be4ac5a
6
+ metadata.gz: fce2360e07c182e3c2e9c74cd1ba2ab97f383a18d6797ecc84989c67a96f011df0debd4b4ca1f687ee1f757547fb2afc17b54df43dd07bfa92908ee8fa4efe37
7
+ data.tar.gz: e19d83a1ec699f4e71239e73b27f293d10d0e62c4d3cf1051aec99590bfb795ade0c94bb318ff7f9598c2ec2e42f421f2d2f5ca8c7c071d0023b5d90c5b79636
data/.leap_salesforce.yml CHANGED
@@ -6,9 +6,15 @@ soql_objects:
6
6
  - Contact
7
7
  - Document: ContentDocument
8
8
  - User:
9
- create_enum: true # Set this to false to not track enums for object
10
- - Group
9
+ create_enum:
10
+ exclude:
11
+ - Time
12
+ - Group:
13
+ create_enum: false # Set this to false to not track enums for object
11
14
  - Broker: Broker__c
12
- - Account
15
+ - Account:
16
+ create_enum:
17
+ exclude:
18
+ - Rating
13
19
  - Attachment
14
20
  - EventLogFile
data/.rubocop.yml CHANGED
@@ -1,3 +1,13 @@
1
1
  # Modifies RuboCop (Static analysis tool)
2
- Metrics/LineLength:
3
- Max: 160
2
+ Layout/LineLength:
3
+ Max: 160
4
+ Lint/RaiseException:
5
+ Enabled: true
6
+ Lint/StructNewOverride:
7
+ Enabled: true
8
+ Style/HashEachMethods:
9
+ Enabled: true
10
+ Style/HashTransformKeys:
11
+ Enabled: true
12
+ Style/HashTransformValues:
13
+ Enabled: true
data/ChangeLog CHANGED
@@ -1,3 +1,11 @@
1
+ Version 0.2.26
2
+ * Enhancement
3
+ * Create method to exclude picklists being created based on regexp in .leap_salesforce.yml
4
+
5
+ Version 0.2.25
6
+ * Enhancement
7
+ * `execute_as` user method that raises error if user not present
8
+
1
9
  Version 0.2.24
2
10
  * Bug fix
3
11
  * Handle metadata label name that is the same name as a method on SoqlData (which one would not want overwriting)
@@ -28,7 +28,10 @@ module LeapSalesforce
28
28
  # @param [LeapSalesforce::SoqlData] entity An object representing an object in Salesforce
29
29
  # Object inheriting from SoqlData that has picklists underneath it
30
30
  def create_picklists_for(entity)
31
- unless entity.create_enum?
31
+ soql_object = LeapSalesforce.soql_objects.find { |so| so.class_name == entity.to_s }
32
+ raise "Could not find soql object for '#{entity.to_s}'" unless soql_object
33
+
34
+ unless soql_object.create_enum != false
32
35
  puts "Skipping picklists for #{entity}"
33
36
  return
34
37
  end
@@ -36,7 +39,13 @@ module LeapSalesforce
36
39
  @entity_name = entity
37
40
  picklists = entity.picklists
38
41
  puts "#{picklists.count} picklists found"
39
- picklists.each { |picklist| generate_picklist_file picklist }
42
+ picklists.each do |picklist|
43
+ if soql_object.excludes?(picklist)
44
+ puts "Exluding picklist '#{picklist}'"
45
+ else
46
+ generate_picklist_file picklist
47
+ end
48
+ end
40
49
  end
41
50
 
42
51
  # Generate file for a picklist from it's metadata
@@ -3,5 +3,4 @@ require_relative '<%= @field_name_file %>'
3
3
  class <%= @soql_object.class_name %> < SoqlData
4
4
  include <%= @soql_object.class_name %>::Fields
5
5
  <%= "soql_object '#{@soql_object.backend_name}'" unless @soql_object.backend_name == @soql_object.class_name %>
6
- <%= "create_enum false" if @soql_object.create_enum == false %>
7
6
  end
@@ -14,18 +14,9 @@ module SoqlSettings
14
14
  @soql_object_name || to_s
15
15
  end
16
16
 
17
- # Whether to create enumerations for object when running generation tasks. By default this is true
18
- # For some objects you may want to use them without tracking their enumerations
19
- def create_enum(set)
20
- @create_enum = set
21
- end
22
-
23
- # @return [Boolean] Whether to create enum for object
24
- def create_enum?
25
- if @create_enum.nil?
26
- true # True by default
27
- else
28
- @create_enum
29
- end
17
+ # @deprecated Not used, setting in '.leap_salesforce.yml' controls this now
18
+ def create_enum
19
+ LeapSalesforce.logger.warn "Method 'create_enum' called when it is deprecated" \
20
+ " from #{caller_locations[0]}"
30
21
  end
31
22
  end
@@ -11,17 +11,41 @@ module LeapSalesforce
11
11
  attr_accessor :reference
12
12
  # @return [String] Description of Soql object from '.leap_salesforce' YAML
13
13
  attr_accessor :description
14
- # @return [Boolean] Whether to create enumerations for object
14
+ # @return [Boolean, Hash] Whether to create enumerations for object
15
15
  attr_accessor :create_enum
16
16
 
17
17
  # Create a representation of a Soql object from a description (usually in .leap_salesforce.yml)
18
- # @param [Hash, String]
18
+ # @example Specific Salesforce object 'Case' to be represented
19
+ # 'Case'
20
+ # @example Represent Broker object by class with different name
21
+ # { 'Broker' => Broker__c }
22
+ # @example Represent Group object, specifying to ignore enums
23
+ # {"Group"=>nil, "create_enum"=>true} }
24
+ # @example Represent User object, specifying to ignore enum with name of Timezone
25
+ # {"User"=>nil, "create_enum"=>{"exclude"=>["Timezone"]}}
26
+ # @param [Hash, String] description
19
27
  def initialize(description)
20
28
  self.description = description
21
29
  interpret_description
22
30
  self.reference = @class_name.snakecase
23
31
  end
24
32
 
33
+ # @param [String] picklist
34
+ # @return [Boolean] Whether picklist should be excluded from being generated
35
+ def excludes?(picklist)
36
+ if create_enum.is_a? Hash
37
+ if create_enum['exclude']
38
+ create_enum['exclude'].any? do |exclusion_list|
39
+ !picklist.to_s[Regexp.new(exclusion_list)].nil?
40
+ end
41
+ else
42
+ false
43
+ end
44
+ else
45
+ false
46
+ end
47
+ end
48
+
25
49
  private
26
50
 
27
51
  # Set attributes based on description
@@ -27,9 +27,16 @@ module LeapSalesforce
27
27
  @list << User.new(*user)
28
28
  end
29
29
 
30
+ # @example Filter user by key of :admin
31
+ # where(key: :admin)
32
+ # @example Filter user by description containing Payroll
33
+ # where(description: /Payroll/)
34
+ # @example Filter user by username
35
+ # where(username: 'username@domain.com')
30
36
  # @param [Symbol, Hash, String, Regexp, LeapSalesforce::User] filter Filter to find users by
31
37
  # @param [Boolean] all Whether to return all users matching criteria, not just first
32
- # @return [LeapSalesforce::User, Array] A user that meets the criteria
38
+ # @return [LeapSalesforce::User, Array] A user that meets the criteria.
39
+ # If all is true this returns array of users
33
40
  def where(filter, all: false)
34
41
  @all = all
35
42
  case filter
@@ -66,20 +73,26 @@ module LeapSalesforce
66
73
  @all ? users : users.first
67
74
  end
68
75
 
76
+ # @param [Symbol, Hash, String, Regexp, LeapSalesforce::User] filter Filter to find user by
77
+ # @return [Object] Result of block
78
+ def execute_as(filter)
79
+ current_user = LeapSalesforce.api_user
80
+ LeapSalesforce.api_user = LeapSalesforce::Users.where filter
81
+ result = yield
82
+ LeapSalesforce.api_user = current_user
83
+ result
84
+ end
85
+
69
86
  # Execute block as user matching filter if that user is present
70
87
  # If user is not present the current user will be used
71
88
  # @return [Object] Result of block
72
- def execute_as_if_present(filter)
89
+ def execute_as_if_present(user_filter)
73
90
  raise ArgumentError, 'Pass block to :execute_as_if_present method' unless block_given?
74
91
 
75
- current_user = LeapSalesforce.api_user
76
- if any? filter
77
- LeapSalesforce.api_user = LeapSalesforce::Users.where filter
78
- result = yield
79
- LeapSalesforce.api_user = current_user
80
- result
92
+ if any? user_filter
93
+ execute_as(user_filter) { yield }
81
94
  else
82
- LeapSalesforce.logger.warn "No user found user filter #{filter}, using '#{current_user}'"
95
+ LeapSalesforce.logger.warn "No user found user filter #{user_filter}, using '#{LeapSalesforce.api_user}'"
83
96
  yield
84
97
  end
85
98
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module LeapSalesforce
4
4
  # @return [String] Version of leap salesforce
5
- VERSION = '0.2.24'
5
+ VERSION = '0.2.26'
6
6
  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.24
4
+ version: 0.2.26
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: 2020-03-17 00:00:00.000000000 Z
12
+ date: 2020-04-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler