---
- debug:
    msg: "START junos_lldp_global replaced integration tests on connection={{ ansible_connection }}"

- name: get supported protocols
  junos_command:
    commands: show lldp
  register: result
  ignore_errors: yes

- name: lldp supported
  set_fact:
    lldp_supported: True
  when: not result.failed

- name: lldp not supported
  set_fact:
    lldp_supported: False
  when: result.failed

- block:
  - include_tasks: _remove_config.yaml

  - set_fact:
      expected_replaced_output:
        - interval: 20000
          address: 10.1.1.2
          transmit_delay: 500
          hold_multiplier: 5
          enabled: False

  - name: Configure initial state for lldp global
    junos_lldp_global:
      config:
        interval: 10000
        address: 10.1.1.1
        transmit_delay: 400
        hold_multiplier: 10
      state: merged
    register: result

  - name: Replace the provided configuration with the exisiting running configuration
    junos_lldp_global: &replaced
      config:
        interval: 20000
        address: 10.1.1.2
        transmit_delay: 500
        hold_multiplier: 5
        enabled: False
      state: replaced
    register: result

  - name: Assert the configuration is reflected on host
    assert:
      that:
        - "{{ expected_replaced_output | symmetric_difference([result['after']]) |length == 0 }}"

  - name: Replace the provided configuration with the existing running configuration (IDEMPOTENT)
    junos_lldp_global: *replaced
    register: result

  - name: Assert that the previous task was idempotent
    assert:
      that:
        - "result['changed'] == false"

  always:
    - include_tasks: _remove_config.yaml
  when: lldp_supported

- debug:
    msg: "END junos_lldp_global replaced integration tests on connection={{ ansible_connection }}"
