########################
### check mode apply ###
########################
- name: check mode enable category
  win_audit_policy_system:
    category: "{{ category_name }}"
    audit_type: success
  check_mode: yes
  register: category

- name: check mode enable subcategory
  win_audit_policy_system:
    subcategory: "{{ subcategory_name }}"
    audit_type: success, failure
  check_mode: yes
  register: subcategory

- name: check mode assert that changed is true
  assert:
    that:
      - category is changed
      - subcategory is changed

- name: check mode assert that audit_type is "no auditing"
  assert:
    that:
      - item == "no auditing"
  with_items:
    - "{{ subcategory.current_audit_policy.values() | list }}"
    - "{{ category.current_audit_policy.values() | list | unique }}"

#alternative check for category...pretty noise and requires more lines
#  - name: assert that audit_type is no auditing
#    assert:
#      that: item.value == "no auditing"
#    with_dict: "{{ category.current_audit_policy }}"

####################
### apply change ###
####################

- name: enable category
  win_audit_policy_system:
    category: "{{ category_name }}"
    audit_type: success
  register: category

- name: enable subcategory
  win_audit_policy_system:
    subcategory: "{{ subcategory_name }}"
    audit_type: success, failure
  register: subcategory

- name: enable assert that changed is true
  assert:
    that:
      - category is changed
      - subcategory is changed

- name: enable assert that audit_type is "success" for category
  assert:
    that:
      - item == "success"
  with_items:
    - "{{ category.current_audit_policy.values() | list | unique }}"

- name: enable assert that audit_type is "success and failure" for subcategory
  assert:
    that:
      - item == "success and failure"
  with_items:
    - "{{ subcategory.current_audit_policy.values() | list }}"

###############################
### idempotent apply change ###
###############################

- name: idem enable category
  win_audit_policy_system:
    category: "{{ category_name }}"
    audit_type: success
  register: category

- name: idem enable subcategory
  win_audit_policy_system:
    subcategory: "{{ subcategory_name }}"
    audit_type: success, failure
  register: subcategory

- name: idem assert that changed is false
  assert:
    that:
      - category is not changed
      - subcategory is not changed

- name: idem assert that audit_type is "success" for category
  assert:
    that:
      - item == "success"
  with_items:
    - "{{ category.current_audit_policy.values() | list | unique }}"

- name: idem assert that audit_type is "success and failure" for subcategory
  assert:
    that:
      - item == "success and failure"
  with_items:
    - "{{ subcategory.current_audit_policy.values() | list }}"
