- convert_snake_case:
    data: {'TOPLevelKey': {'NESTEDKey': 'DoNotConvert'}}
  register: result

- assert:
    that:
      - "result.data == {'top_level_key': {'nested_key': 'DoNotConvert'}}"

- convert_snake_case:
    data: {'TOPLevelKey': {'NESTEDKey': 'DoNotConvert'}}
    reversible: True
  register: result

- assert:
    that:
      - "result.data == {'t_o_p_level_key': {'n_e_s_t_e_d_key': 'DoNotConvert'}}"

- convert_snake_case:
    data: {'Results': [{'IAMUser': 'UserName', 'Tags': {'DoConvert': 'DoNotConvert'}}], 'Tags': {'DoNotConvert': 'DoNotConvert'}}
    reversible: True
    ignore_list: ['Tags']  # Ignore top level 'Tags' key if found
  register: result

- assert:
    that:
      - "result.data == {'results': [{'i_a_m_user': 'UserName', 'tags': {'do_convert': 'DoNotConvert'}}], 'tags': {'DoNotConvert': 'DoNotConvert'}}"

- name: Test converting dict keys in lists within lists
  convert_snake_case:
    data: {'Results': [{'Changes': [{'DoConvert': 'DoNotConvert', 'Details': ['DoNotConvert']}]}]}
  register: result

- assert:
    that:
      - "result.data == {'results': [{'changes': [{'do_convert': 'DoNotConvert', 'details': ['DoNotConvert']}]}]}"
