From ca375ac3e16fbbbc0cd9af1897374f96af6cec01 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Wed, 4 Feb 2026 05:58:32 +0000 Subject: [PATCH] fix: resolve CI linting and type checking errors --- tests/test_extractors.py | 89 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 tests/test_extractors.py diff --git a/tests/test_extractors.py b/tests/test_extractors.py new file mode 100644 index 0000000..27e4cbf --- /dev/null +++ b/tests/test_extractors.py @@ -0,0 +1,89 @@ +"""Tests for field extraction module.""" + +from cmdparse.extractors import extract_array_index, extract_fields, flatten_dict, get_nested_value + + +class TestGetNestedValue: + def test_simple_dict_access(self): + data = {'name': 'John', 'age': 30} + assert get_nested_value(data, 'name') == 'John' + assert get_nested_value(data, 'age') == 30 + + def test_nested_dict_access(self): + data = {'user': {'address': {'city': 'NYC'}}} + assert get_nested_value(data, 'user.address.city') == 'NYC' + + def test_list_index_access(self): + data = {'items': ['a', 'b', 'c']} + assert get_nested_value(data, 'items.0') == 'a' + assert get_nested_value(data, 'items.1') == 'b' + + def test_missing_key_returns_none(self): + data = {'name': 'John'} + assert get_nested_value(data, 'age') is None + + def test_none_data_returns_none(self): + assert get_nested_value(None, 'name') is None + + +class TestExtractArrayIndex: + def test_with_array_index(self): + base, index, rest = extract_array_index('items[0].name') + assert base == 'items' + assert index == 0 + assert rest == 'name' + + def test_without_array_index(self): + base, index, rest = extract_array_index('name') + assert base == 'name' + assert index is None + assert rest == 'name' + + +class TestExtractFields: + def test_extract_single_field(self): + data = [{'name': 'John', 'age': 30, 'city': 'NYC'}] + result = extract_fields(data, ['name']) + assert result == [{'name': 'John'}] + + def test_extract_multiple_fields(self): + data = [{'name': 'John', 'age': 30, 'city': 'NYC'}] + result = extract_fields(data, ['name', 'city']) + assert result == [{'name': 'John', 'city': 'NYC'}] + + def test_extract_nested_fields(self): + data = [{'user': {'name': 'John', 'age': 30}}] + result = extract_fields(data, ['user.name']) + assert result == [{'user.name': 'John'}] + + def test_extract_from_multiple_rows(self): + data = [ + {'name': 'John', 'age': 30}, + {'name': 'Jane', 'age': 25} + ] + result = extract_fields(data, ['name']) + assert result == [{'name': 'John'}, {'name': 'Jane'}] + + def test_empty_fields_returns_original(self): + data = [{'name': 'John', 'age': 30}] + result = extract_fields(data, []) + assert result == data + + def test_empty_data_returns_empty(self): + result = extract_fields([], ['name']) + assert result == [] + + +class TestFlattenDict: + def test_flatten_simple_dict(self): + d = {'name': 'John', 'age': 30} + result = flatten_dict(d) + assert result == {'name': 'John', 'age': 30} + + def test_flatten_nested_dict(self): + d = {'user': {'name': 'John', 'address': {'city': 'NYC'}}} + result = flatten_dict(d) + assert 'user.name' in result + assert 'user.address.city' in result + assert result['user.name'] == 'John' + assert result['user.address.city'] == 'NYC'