salesforce_certification_calculator 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +114 -0
  3. data/Rakefile +15 -0
  4. data/bin/salesforce_certification_calculator +5 -0
  5. data/data/Administrator-Spring2022.xml +40 -0
  6. data/data/AdvancedAdministrator-Spring2022.xml +40 -0
  7. data/data/B2BSolutionArchitect-Spring2022.xml +30 -0
  8. data/data/B2CSolutionArchitect-Spring2022.xml +30 -0
  9. data/data/DataArchitect-Spring2022.xml +35 -0
  10. data/data/DevelopmentLifecycleAndDeploymentArchitect-Spring2022.xml +45 -0
  11. data/data/EducationCloudConsultant-Spring2022.xml +35 -0
  12. data/data/ExperienceCloudConsultant-Spring2022.xml +45 -0
  13. data/data/IdentityAndAccessManagementArchitect-Spring2022.xml +35 -0
  14. data/data/IntegrationArchitect-Spring2022.xml +35 -0
  15. data/data/JavaScriptDeveloperI-Spring2022.xml +40 -0
  16. data/data/MarketingCloudAdministrator-Spring2022.xml +30 -0
  17. data/data/MarketingCloudConsultant-Spring2022.xml +35 -0
  18. data/data/MarketingCloudDeveloper-Spring2022.xml +30 -0
  19. data/data/MarketingCloudEmailSpecialist-Spring2022.xml +30 -0
  20. data/data/PlatformAppBuilder-Spring2022.xml +30 -0
  21. data/data/PlatformDeveloperI-Spring2022.xml +25 -0
  22. data/data/PlatformDeveloperII-Spring2022.xml +30 -0
  23. data/data/SalesCloudConsultant-Spring2022.xml +55 -0
  24. data/data/ServiceCloudConsultant-Spring2022.xml +50 -0
  25. data/data/SharingAndVisibilityArchitect-Spring2022.xml +20 -0
  26. data/lib/salesforce_certification_calculator/exam.rb +63 -0
  27. data/lib/salesforce_certification_calculator/file_reader.rb +53 -0
  28. data/lib/salesforce_certification_calculator/section.rb +25 -0
  29. data/lib/salesforce_certification_calculator/u_i.rb +107 -0
  30. data/lib/salesforce_certification_calculator.rb +92 -0
  31. data/test/test_exam.rb +498 -0
  32. data/test/test_file_reader.rb +65 -0
  33. data/test/test_salesforce_certification_calculator.rb +189 -0
  34. data/test/test_section.rb +59 -0
  35. data/test/test_u_i.rb +297 -0
  36. metadata +98 -0
@@ -0,0 +1,189 @@
1
+ require "minitest/autorun"
2
+ require "salesforce_certification_calculator"
3
+
4
+ class SalesforceTest < Minitest::Test
5
+ SFC = SalesforceCertificationCalculator
6
+ @@calculator = SFC.new
7
+ @@methods = @@calculator.methods
8
+
9
+ def test_initialize_exam_exists
10
+ assert_includes @@methods, :exam, "should create an object with an exam attribute"
11
+ end
12
+
13
+ def test_initialize_exam_type
14
+ assert_instance_of SFC::Exam, @@calculator.exam, "should create an object with an exam attribute of type Exam"
15
+ end
16
+
17
+ def test_generate_exams_list_exists
18
+ assert_includes @@methods, :generate_exams_list, "should create an object with a method called generate_exams_list"
19
+ end
20
+
21
+ def test_extract_initial_exam_data_exists
22
+ assert_includes @@methods, :extract_initial_exam_data, "should create an object with a method called extract_initial_exam_data"
23
+ end
24
+
25
+ def test_calculate_total_exists
26
+ assert_includes @@methods, :calculate_total, "should create an object with a method called calculate_total"
27
+ end
28
+
29
+ def test_generate_exams_list_makes_exams_attribute_contain_21_items
30
+ @@calculator.generate_exams_list
31
+
32
+ assert_equal 21, @@calculator.exams.length, "should make exams attribute contain 21 elements when invoke generate_exams_list"
33
+ end
34
+
35
+ def test_generate_exams_list_makes_exams_attribute_contain_exams
36
+ @@calculator.generate_exams_list
37
+
38
+ @@calculator.exams.each do |exam|
39
+ assert_instance_of SFC::Exam, exam, "should make exams attribute contain Exam objects when invoke generate_exams_list"
40
+ end
41
+ end
42
+
43
+ def test_generate_exams_list_contains_no_sections
44
+ @@calculator.generate_exams_list
45
+
46
+ @@calculator.exams.each do |exam|
47
+ assert_equal 0, exam.sections.length, "should not fill any sections on any of the exams now included in the attribute"
48
+ end
49
+ end
50
+
51
+ def test_generate_exams_list_contains_administrator
52
+ @@calculator.generate_exams_list
53
+
54
+ exists = @@calculator.exams.any? { |exam| exam.title == "Administrator - Spring 2022" }
55
+
56
+ assert_equal true, exists, "should set exams attribute to an array containing one exam with the Administrator title when invoke generate_exams_list"
57
+ end
58
+
59
+ def test_generate_exams_list_contains_multiple_marketings
60
+ @@calculator.generate_exams_list
61
+ marketings = 0
62
+
63
+ @@calculator.exams.each do |exam|
64
+ if exam.title.include? "Marketing"
65
+ marketings += 1
66
+ end
67
+ end
68
+
69
+ assert_operator marketings, :>, 1, "should set exams attribute to an array containing multiple objects with titles including Marketing when invoke generate_exams_list"
70
+ end
71
+
72
+ def test_extract_initial_exam_data_sets_exam_sections
73
+ @@calculator.generate_exams_list
74
+ @@calculator.exam = @@calculator.exams[0]
75
+ @@calculator.extract_initial_exam_data
76
+
77
+ assert_operator @@calculator.exam.sections.length, :>, 0, "should populate sections on exam attribute when invoke extract_initial_exam_data"
78
+ end
79
+
80
+ def test_calculate_total_returns_final_score
81
+ @@calculator.generate_exams_list
82
+ @@calculator.exam = @@calculator.exams[0]
83
+ @@calculator.extract_initial_exam_data
84
+
85
+ @@calculator.exam.sections.each do |section|
86
+ section.score = 70
87
+ end
88
+
89
+ result = @@calculator.calculate_total
90
+
91
+ assert_equal 70, result, "should return final score when invoke calculate_total"
92
+ end
93
+
94
+ def test_determine_percentage_manually_list_returns_float
95
+ calculator = SFC.new
96
+ result = 0
97
+
98
+ OStreamCatcher.catch do
99
+ string_io = StringIO.new
100
+ string_io.puts "LIST"
101
+ string_io.puts "1"
102
+
103
+ (0..6).each do |i|
104
+ string_io.puts "80"
105
+ end
106
+
107
+ string_io.rewind
108
+ $stdin = string_io
109
+ result = calculator.determine_percentage_manually
110
+ $stdin = STDIN
111
+ end
112
+
113
+ assert_instance_of Float, result, "should return a float after calling determine_percentage_manually if user selects LIST"
114
+ end
115
+
116
+ def test_determine_percentage_manually_prompts_2_more_than_sections_if_list
117
+ calculator = SFC.new
118
+ sections = 7
119
+ prompts = 2 + sections
120
+
121
+ result = OStreamCatcher.catch do
122
+ string_io = StringIO.new
123
+ string_io.puts "LIST"
124
+ string_io.puts "1"
125
+
126
+ (1..sections).each do |i|
127
+ string_io.puts "80"
128
+ end
129
+
130
+ string_io.rewind
131
+ $stdin = string_io
132
+ result = calculator.determine_percentage_manually
133
+ $stdin = STDIN
134
+ end
135
+
136
+ assert_equal prompts, result[1].scan("?").length, "should prompt user for input 2 more than the number of sections in exam when call determine_percentage_manually and LIST selected"
137
+ end
138
+
139
+ def test_determine_percentage_manually_new_returns_float
140
+ calculator = SFC.new
141
+ result = 0
142
+
143
+ OStreamCatcher.catch do
144
+ string_io = StringIO.new
145
+ string_io.puts "NEW"
146
+ string_io.puts "My Test"
147
+ string_io.puts "4"
148
+
149
+ (1..4).each do |i|
150
+ string_io.puts "Section #{i}"
151
+ string_io.puts "25"
152
+ string_io.puts "70"
153
+ end
154
+
155
+ string_io.rewind
156
+ $stdin = string_io
157
+ result = calculator.determine_percentage_manually
158
+ $stdin = STDIN
159
+ end
160
+
161
+ assert_instance_of Float, result, "should return a float after calling determine_percentage_manually if user selects NEW"
162
+ end
163
+
164
+ def test_determine_percentage_manually_prompts_3_more_than_3_times_sections_if_new
165
+ calculator = SFC.new
166
+ sections = 4
167
+ prompts = 3 + 3 * sections
168
+
169
+ result = OStreamCatcher.catch do
170
+ string_io = StringIO.new
171
+ string_io.puts "NEW"
172
+ string_io.puts "My Test"
173
+ string_io.puts "#{sections}"
174
+
175
+ (1..sections).each do |i|
176
+ string_io.puts "Section #{i}"
177
+ string_io.puts "25"
178
+ string_io.puts "70"
179
+ end
180
+
181
+ string_io.rewind
182
+ $stdin = string_io
183
+ result = calculator.determine_percentage_manually
184
+ $stdin = STDIN
185
+ end
186
+
187
+ assert_equal prompts, result[1].scan("?").length, "should prompt user for input 3 more than 3 times the number of sections in exam when call determine_percentage_manually and NEW selected"
188
+ end
189
+ end
@@ -0,0 +1,59 @@
1
+ require "minitest/autorun"
2
+ require "salesforce_certification_calculator"
3
+
4
+ class SectionTest < Minitest::Test
5
+ Section = SalesforceCertificationCalculator::Section
6
+ @@name = "Section 1"
7
+ @@weight = 40
8
+ @@score = 80
9
+ @@section = Section.new(@@name, @@weight, @@score)
10
+ @@methods = @@section.methods
11
+
12
+ def test_initialize_name_exists
13
+ assert_includes @@methods, :name, "should create an object with a name attribute"
14
+ end
15
+
16
+ def test_initialize_name_setter
17
+ assert_includes @@methods, :name=, "should create an object with a method for setting the name attribute"
18
+ end
19
+
20
+ def test_initialize_name_string
21
+ assert_instance_of String, @@section.name, "should create an object with a name attribute of type string"
22
+ end
23
+
24
+ def test_initialize_name_matches_parameter
25
+ assert_equal @@name, @@section.name, "should create an object with a name attribute matching the first argument to its new call"
26
+ end
27
+
28
+ def test_initialize_weight_exists
29
+ assert_includes @@methods, :weight, "should create an object with a weight attribute"
30
+ end
31
+
32
+ def test_initialize_weight_setter
33
+ assert_includes @@methods, :weight=, "should create an object with a method for setting the weight attribute"
34
+ end
35
+
36
+ def test_initialize_weight_integer
37
+ assert_instance_of Integer, @@section.weight, "should create an object with a weight attribute of type integer"
38
+ end
39
+
40
+ def test_initialize_weight_matches_parameter
41
+ assert_equal @@weight, @@section.weight, "should create an object with a weight attribute matching the second argument to its new call"
42
+ end
43
+
44
+ def test_initialize_score_exists
45
+ assert_includes @@methods, :score, "should create an object with a score attribute"
46
+ end
47
+
48
+ def test_initialize_score_setter
49
+ assert_includes @@methods, :score=, "should create an object with a method for setting the score attribute"
50
+ end
51
+
52
+ def test_initialize_score_integer
53
+ assert_instance_of Integer, @@section.score, "should create an object with a score attribute of type integer"
54
+ end
55
+
56
+ def test_initialize_score_matches_parameter
57
+ assert_equal @@score, @@section.score, "should create an object with a score attribute matching the last argument to its new call"
58
+ end
59
+ end
data/test/test_u_i.rb ADDED
@@ -0,0 +1,297 @@
1
+ require "minitest/autorun"
2
+ require "stringio"
3
+ require "o_stream_catcher"
4
+ require "salesforce_certification_calculator"
5
+
6
+ class UITest < Minitest::Test
7
+ UI = SalesforceCertificationCalculator::UI
8
+ FR = SalesforceCertificationCalculator::FileReader
9
+ Exam = SalesforceCertificationCalculator::Exam
10
+ reader = FR.new
11
+ @@ui = UI.new
12
+ @@exams = reader.generate_exams_list
13
+ @@methods = @@ui.methods
14
+
15
+ def test_select_list_or_new_exists
16
+ assert_includes @@methods, :select_list_or_new, "should create an object with a method called select_list_or_new"
17
+ end
18
+
19
+ def test_select_specific_exam_exists
20
+ assert_includes @@methods, :select_specific_exam, "should create an object with a method called select_specific_exam"
21
+ end
22
+
23
+ def test_provide_scores_exists
24
+ assert_includes @@methods, :provide_scores, "should create an object with a method called provide_scores"
25
+ end
26
+
27
+ def test_provide_all_details_manually_exists
28
+ assert_includes @@methods, :provide_all_details_manually, "should create an object with a method called provide_all_details_manually"
29
+ end
30
+
31
+ def test_select_list_or_new_returns_string
32
+ choice = ""
33
+
34
+ OStreamCatcher.catch do
35
+ string_io = StringIO.new
36
+ string_io.puts "LIST"
37
+ string_io.rewind
38
+ $stdin = string_io
39
+ choice = @@ui.select_list_or_new
40
+ $stdin = STDIN
41
+ end
42
+
43
+ assert_instance_of String, choice, "should return string after calling select_list_or_new"
44
+ end
45
+
46
+ def test_select_list_or_new_returns_list
47
+ choice = ""
48
+
49
+ OStreamCatcher.catch do
50
+ string_io = StringIO.new
51
+ string_io.puts "LIST"
52
+ string_io.rewind
53
+ $stdin = string_io
54
+ choice = @@ui.select_list_or_new
55
+ $stdin = STDIN
56
+ end
57
+
58
+ assert_equal "LIST", choice, "should return LIST after calling select_list_or_new if user inputted LIST"
59
+ end
60
+
61
+ def test_select_list_or_new_called_once_if_list
62
+ result = OStreamCatcher.catch do
63
+ string_io = StringIO.new
64
+ string_io.puts "LIST"
65
+ string_io.rewind
66
+ $stdin = string_io
67
+ @@ui.select_list_or_new
68
+ $stdin = STDIN
69
+ end
70
+
71
+ assert_equal 1, result[1].scan("Do you want to select").length, "should only call select_list_or_new once if user inputted LIST"
72
+ end
73
+
74
+ def test_select_list_or_new_returns_new
75
+ choice = ""
76
+
77
+ OStreamCatcher.catch do
78
+ string_io = StringIO.new
79
+ string_io.puts "NEW"
80
+ string_io.rewind
81
+ $stdin = string_io
82
+ choice = @@ui.select_list_or_new
83
+ $stdin = STDIN
84
+ end
85
+
86
+ assert_equal "NEW", choice, "should return NEW after calling select_list_or_new if user inputted NEW"
87
+ end
88
+
89
+ def test_select_list_or_new_called_once_if_new
90
+ result = OStreamCatcher.catch do
91
+ string_io = StringIO.new
92
+ string_io.puts "NEW"
93
+ string_io.rewind
94
+ $stdin = string_io
95
+ @@ui.select_list_or_new
96
+ $stdin = STDIN
97
+ end
98
+
99
+ assert_equal 1, result[1].scan("Do you want to select").length, "should only call select_list_or_new once if user inputted NEW"
100
+ end
101
+
102
+ def test_select_list_or_new_recursion
103
+ result = OStreamCatcher.catch do
104
+ string_io = StringIO.new
105
+ string_io.puts "a"
106
+ string_io.puts "NEW"
107
+ string_io.rewind
108
+ $stdin = string_io
109
+ @@ui.select_list_or_new
110
+ $stdin = STDIN
111
+ end
112
+
113
+ assert_operator result[1].scan("Do you want to select").length, :>, 1, "should call select_list_or_new more than once if user initially inputted something other than LIST or NEW"
114
+ end
115
+
116
+ def test_select_specific_exam_returns_exam
117
+ choice = {}
118
+
119
+ OStreamCatcher.catch do
120
+ string_io = StringIO.new
121
+ string_io.puts "1"
122
+ string_io.rewind
123
+ $stdin = string_io
124
+ choice = @@ui.select_specific_exam(@@exams)
125
+ $stdin = STDIN
126
+ end
127
+
128
+ assert_instance_of Exam, choice, "should return Exam object after calling select_specific_exam"
129
+ end
130
+
131
+ def test_select_specific_exam_returns_first_if_1
132
+ choice = {}
133
+
134
+ OStreamCatcher.catch do
135
+ string_io = StringIO.new
136
+ string_io.puts "1"
137
+ string_io.rewind
138
+ $stdin = string_io
139
+ choice = @@ui.select_specific_exam(@@exams)
140
+ $stdin = STDIN
141
+ end
142
+
143
+ assert_equal @@exams[0], choice, "should return first Exam object in exams array after calling select_specific_exam if 1 inputted"
144
+ end
145
+
146
+ def test_select_specific_exam_called_once_if_1
147
+ result = OStreamCatcher.catch do
148
+ string_io = StringIO.new
149
+ string_io.puts "1"
150
+ string_io.rewind
151
+ $stdin = string_io
152
+ @@ui.select_specific_exam(@@exams)
153
+ $stdin = STDIN
154
+ end
155
+
156
+ assert_equal 1, result[1].scan("Which one would you like to select").length, "should call select_specific_exam only once if user inputs 1"
157
+ end
158
+
159
+ def test_select_specific_exam_returns_second_if_2
160
+ choice = {}
161
+
162
+ OStreamCatcher.catch do
163
+ string_io = StringIO.new
164
+ string_io.puts "2"
165
+ string_io.rewind
166
+ $stdin = string_io
167
+ choice = @@ui.select_specific_exam(@@exams)
168
+ $stdin = STDIN
169
+ end
170
+
171
+ assert_equal @@exams[1], choice, "should return second Exam object in exams array after calling select_specific_exam if 2 inputted"
172
+ end
173
+
174
+ def test_select_specific_exam_called_once_if_2
175
+ result = OStreamCatcher.catch do
176
+ string_io = StringIO.new
177
+ string_io.puts "2"
178
+ string_io.rewind
179
+ $stdin = string_io
180
+ @@ui.select_specific_exam(@@exams)
181
+ $stdin = STDIN
182
+ end
183
+
184
+ assert_equal 1, result[1].scan("Which one would you like to select").length, "should call select_specific_exam only once if user inputs 2"
185
+ end
186
+
187
+ def test_select_specific_exam_recursion_greater
188
+ result = OStreamCatcher.catch do
189
+ string_io = StringIO.new
190
+ string_io.puts "30"
191
+ string_io.puts "1"
192
+ string_io.rewind
193
+ $stdin = string_io
194
+ @@ui.select_specific_exam(@@exams)
195
+ $stdin = STDIN
196
+ end
197
+
198
+ assert_operator result[1].scan("Which one would you like to select").length, :>, 1, "should call select_specific_exam more than once if user inputs number above length of options"
199
+ end
200
+
201
+ def test_select_specific_exam_recursion_0
202
+ result = OStreamCatcher.catch do
203
+ string_io = StringIO.new
204
+ string_io.puts "0"
205
+ string_io.puts "1"
206
+ string_io.rewind
207
+ $stdin = string_io
208
+ @@ui.select_specific_exam(@@exams)
209
+ $stdin = STDIN
210
+ end
211
+
212
+ assert_operator result[1].scan("Which one would you like to select").length, :>, 1, "should call select_specific_exam more than once if user inputs 0"
213
+ end
214
+
215
+ def test_provide_scores_returns_exam
216
+ result = {}
217
+
218
+ OStreamCatcher.catch do
219
+ string_io = StringIO.new
220
+
221
+ @@exams[0].sections.each do |section|
222
+ string_io.puts "70"
223
+ end
224
+
225
+ string_io.rewind
226
+ $stdin = string_io
227
+ result = @@ui.provide_scores(@@exams[0])
228
+ $stdin = STDIN
229
+ end
230
+
231
+ assert_instance_of Exam, result, "should return Exam object after calling provide_scores"
232
+ end
233
+
234
+ def test_provide_scores_prompts_user_for_each_section
235
+ result = OStreamCatcher.catch do
236
+ string_io = StringIO.new
237
+
238
+ @@exams[0].sections.each do |section|
239
+ string_io.puts "70"
240
+ end
241
+
242
+ string_io.rewind
243
+ $stdin = string_io
244
+ @@ui.provide_scores(@@exams[0])
245
+ $stdin = STDIN
246
+ end
247
+
248
+ assert_equal @@exams[0].sections.length, result[1].scan("What score did you get").length, "should prompt user for input once for every section of exam parameter when call provide_scores"
249
+ end
250
+
251
+ def test_provide_all_details_manually_returns_exam
252
+ result = {}
253
+
254
+ OStreamCatcher.catch do
255
+ string_io = StringIO.new
256
+ string_io.puts "My Test"
257
+ string_io.puts "4"
258
+
259
+ (1..4).each do |i|
260
+ string_io.puts "Section #{i}"
261
+ string_io.puts "25"
262
+ string_io.puts "80"
263
+ end
264
+
265
+ string_io.rewind
266
+ $stdin = string_io
267
+ result = @@ui.provide_all_details_manually
268
+ $stdin = STDIN
269
+ end
270
+
271
+ assert_instance_of Exam, result, "should return Exam object after calling provide_all_details_manually"
272
+ end
273
+
274
+ def test_provide_all_details_manually_prompts_user_2_more_than_3_times_sections
275
+ sections = 4
276
+ prompts = 2 + 3 * sections
277
+
278
+ result = OStreamCatcher.catch do
279
+ string_io = StringIO.new
280
+ string_io.puts "My Test"
281
+ string_io.puts "#{sections}"
282
+
283
+ (1..sections).each do |i|
284
+ string_io.puts "Section #{i}"
285
+ string_io.puts "25"
286
+ string_io.puts "80"
287
+ end
288
+
289
+ string_io.rewind
290
+ $stdin = string_io
291
+ @@ui.provide_all_details_manually
292
+ $stdin = STDIN
293
+ end
294
+
295
+ assert_equal prompts, result[1].scan("\n").length, "should prompt user for input 2 more than 3 times the number of sections entered when call provide_all_details_manually"
296
+ end
297
+ end
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: salesforce_certification_calculator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jackson Reeves
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-07-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.13'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
27
+ description: Salesforce resource for certifications
28
+ email: jr@jacksonreeves.com
29
+ executables:
30
+ - salesforce_certification_calculator
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - README.md
35
+ - Rakefile
36
+ - bin/salesforce_certification_calculator
37
+ - data/Administrator-Spring2022.xml
38
+ - data/AdvancedAdministrator-Spring2022.xml
39
+ - data/B2BSolutionArchitect-Spring2022.xml
40
+ - data/B2CSolutionArchitect-Spring2022.xml
41
+ - data/DataArchitect-Spring2022.xml
42
+ - data/DevelopmentLifecycleAndDeploymentArchitect-Spring2022.xml
43
+ - data/EducationCloudConsultant-Spring2022.xml
44
+ - data/ExperienceCloudConsultant-Spring2022.xml
45
+ - data/IdentityAndAccessManagementArchitect-Spring2022.xml
46
+ - data/IntegrationArchitect-Spring2022.xml
47
+ - data/JavaScriptDeveloperI-Spring2022.xml
48
+ - data/MarketingCloudAdministrator-Spring2022.xml
49
+ - data/MarketingCloudConsultant-Spring2022.xml
50
+ - data/MarketingCloudDeveloper-Spring2022.xml
51
+ - data/MarketingCloudEmailSpecialist-Spring2022.xml
52
+ - data/PlatformAppBuilder-Spring2022.xml
53
+ - data/PlatformDeveloperI-Spring2022.xml
54
+ - data/PlatformDeveloperII-Spring2022.xml
55
+ - data/SalesCloudConsultant-Spring2022.xml
56
+ - data/ServiceCloudConsultant-Spring2022.xml
57
+ - data/SharingAndVisibilityArchitect-Spring2022.xml
58
+ - lib/salesforce_certification_calculator.rb
59
+ - lib/salesforce_certification_calculator/exam.rb
60
+ - lib/salesforce_certification_calculator/file_reader.rb
61
+ - lib/salesforce_certification_calculator/section.rb
62
+ - lib/salesforce_certification_calculator/u_i.rb
63
+ - test/test_exam.rb
64
+ - test/test_file_reader.rb
65
+ - test/test_salesforce_certification_calculator.rb
66
+ - test/test_section.rb
67
+ - test/test_u_i.rb
68
+ homepage: https://github.com/jtreeves/salesforce_certification_calculator
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message: Thanks for installing the SalesforceCertificationCalculator
73
+ module!
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ - data
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubygems_version: 3.3.7
90
+ signing_key:
91
+ specification_version: 4
92
+ summary: Calculates cumulative percentage from Salesforce certification section results
93
+ test_files:
94
+ - test/test_exam.rb
95
+ - test/test_file_reader.rb
96
+ - test/test_salesforce_certification_calculator.rb
97
+ - test/test_section.rb
98
+ - test/test_u_i.rb