---
# Copyright (c) Ansible Project
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
# SPDX-License-Identifier: GPL-3.0-or-later

- import_tasks: setup_no_value.yml

- name: setting value
  git_config:
    name: push.pushoption
    add_mode: add
    value: "{{ item }}"
    state: present
    scope: global
  loop:
    - 'merge_request.create'
    - 'merge_request.draft'
    - 'merge_request.target=foobar'
  register: set_result1

- name: setting value
  git_config:
    name: push.pushoption
    add_mode: add
    value: "{{ item }}"
    state: present
    scope: global
  loop:
    - 'merge_request.create'
    - 'merge_request.draft'
    - 'merge_request.target=foobar'
  register: set_result2

- name: getting the multi-value
  git_config:
    name: push.pushoption
    scope: global
  register: get_single_result

- name: getting all values for the single option
  git_config_info:
    name: push.pushoption
    scope: global
  register: get_all_result

- name: replace-all values
  git_config:
    name: push.pushoption
    add_mode: replace-all
    value: merge_request.create
    state: present
    scope: global
  register: set_result3

- name: assert set changed and value is correct
  assert:
    that:
      - set_result1.results[0] is changed
      - set_result1.results[1] is changed
      - set_result1.results[2] is changed
      - set_result2.results[0] is not changed
      - set_result2.results[1] is not changed
      - set_result2.results[2] is not changed
      - set_result3 is changed
      - get_single_result.config_value == 'merge_request.create'
      - 'get_all_result.config_values == {"push.pushoption": ["merge_request.create", "merge_request.draft", "merge_request.target=foobar"]}'

- name: assert the diffs are also right
  assert:
    that:
      - set_result1.results[0].diff.before == "\n"
      - set_result1.results[0].diff.after == "merge_request.create\n"
      - set_result1.results[1].diff.before == "merge_request.create\n"
      - set_result1.results[1].diff.after == ["merge_request.create", "merge_request.draft"]
      - set_result1.results[2].diff.before == ["merge_request.create", "merge_request.draft"]
      - set_result1.results[2].diff.after == ["merge_request.create", "merge_request.draft", "merge_request.target=foobar"]
      - set_result3.diff.before == ["merge_request.create", "merge_request.draft", "merge_request.target=foobar"]
      - set_result3.diff.after == "merge_request.create\n"
...
