# state=present

- name: Test addition - {{ method }}
  flatpak:
    name: org.gnome.Characters
    remote: flathub
    state: present
    method: "{{ method }}"
  register: addition_result

- name: Verify addition test result - {{ method }}
  assert:
    that:
      - "addition_result.changed == true"
    msg: "state=present shall add flatpak when absent"

- name: Test idempotency of addition - {{ method }}
  flatpak:
    name: org.gnome.Characters
    remote: flathub
    state: present
    method: "{{ method }}"
  register: double_addition_result

- name: Verify idempotency of addition test result - {{ method }}
  assert:
    that:
      - "double_addition_result.changed == false"
    msg: "state=present shall not do anything when flatpak is already present"

# state=absent

- name: Test removal - {{ method }}
  flatpak:
    name: org.gnome.Characters
    state: absent
    method: "{{ method }}"
  register: removal_result

- name: Verify removal test result - {{ method }}
  assert:
    that:
      - "removal_result.changed == true"
    msg: "state=absent shall remove flatpak when present"

- name: Test idempotency of removal - {{ method }}
  flatpak:
    name: org.gnome.Characters
    state: absent
    method: "{{ method }}"
  register: double_removal_result

- name: Verify idempotency of removal test result - {{ method }}
  assert:
    that:
      - "double_removal_result.changed == false"
    msg: "state=absent shall not do anything when flatpak is not present"

# state=present with url as name

- name: Test addition with url - {{ method }}
  flatpak:
    name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
    remote: flathub
    state: present
    method: "{{ method }}"
  register: url_addition_result

- name: Verify addition test result - {{ method }}
  assert:
    that:
      - "url_addition_result.changed == true"
    msg: "state=present with url as name shall add flatpak when absent"

- name: Test idempotency of addition with url - {{ method }}
  flatpak:
    name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
    remote: flathub
    state: present
    method: "{{ method }}"
  register: double_url_addition_result

- name: Verify idempotency of addition with url test result - {{ method }}
  assert:
    that:
      - "double_url_addition_result.changed == false"
    msg: "state=present with url as name shall not do anything when flatpak is already present"

# state=absent with url as name

- name: Test removal with url - {{ method }}
  flatpak:
    name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
    state: absent
    method: "{{ method }}"
  register: url_removal_result

- name: Verify removal test result - {{ method }}
  assert:
    that:
      - "url_removal_result.changed == true"
    msg: "state=absent with url as name shall remove flatpak when present"

- name: Test idempotency of removal with url - {{ method }}
  flatpak:
    name: https://flathub.org/repo/appstream/org.gnome.Characters.flatpakref
    state: absent
    method: "{{ method }}"
  register: double_url_removal_result

- name: Verify idempotency of removal with url test result - {{ method }}
  assert:
    that:
      - "double_url_removal_result.changed == false"
    msg: "state=absent with url as name shall not do anything when flatpak is not present"
