Skip to content

Commit 381a9d2

Browse files
authored
add tests for symbolize_keys (#146)
* add tests for symbolize_keys * add argumenterror * Update appium_lib_core.rb
1 parent b54ce1e commit 381a9d2

File tree

3 files changed

+39
-13
lines changed

3 files changed

+39
-13
lines changed

lib/appium_lib_core.rb

+12-6
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,19 @@ module Appium
1616
# https://github.com/rails/docrails/blob/a3b1105ada3da64acfa3843b164b14b734456a50/activesupport/lib/active_support/core_ext/hash/keys.rb#L84
1717
# @param [Hash] hash Hash value to make symbolise
1818
def self.symbolize_keys(hash)
19-
raise 'symbolize_keys requires a hash' unless hash.is_a? Hash
20-
result = {}
21-
hash.each do |key, value|
22-
key = key.to_sym rescue key # rubocop:disable Style/RescueModifier
23-
result[key] = value.is_a?(Hash) ? symbolize_keys(value) : value
19+
raise ArgumentError, 'symbolize_keys requires a hash' unless hash.is_a? Hash
20+
21+
hash.each_with_object({}) do |pair, acc|
22+
key = begin
23+
pair[0].to_sym
24+
rescue StandardError => e
25+
::Appium::Logger.warn(e.message)
26+
pair[0]
27+
end
28+
29+
value = pair[1]
30+
acc[key] = value.is_a?(Hash) ? symbolize_keys(value) : value
2431
end
25-
result
2632
end
2733

2834
module Core

test/appium_lib_core_test.rb

-7
This file was deleted.

test/unit/appium_lib_core_test.rb

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
require 'test_helper'
2+
3+
class AppiumLibCoreTest
4+
class RootTest < Minitest::Test
5+
def test_version
6+
assert !::Appium::Core::VERSION.nil?
7+
end
8+
9+
def test_symbolize_keys
10+
result = ::Appium.symbolize_keys({ 'a' => 1, b: 2 })
11+
assert_equal({ a: 1, b: 2 }, result)
12+
end
13+
14+
def test_symbolize_keys_nested
15+
result = ::Appium.symbolize_keys({ 'a' => 1, b: { 'c' => 2, d: 3 } })
16+
assert_equal({ a: 1, b: { c: 2, d: 3 } }, result)
17+
end
18+
19+
def test_symbolize_keys_raise_argument_error
20+
e = assert_raises ArgumentError do
21+
::Appium.symbolize_keys('no hash value')
22+
end
23+
24+
assert_equal 'symbolize_keys requires a hash', e.message
25+
end
26+
end
27+
end

0 commit comments

Comments
 (0)