---
- name: setup
  local_action:
     module: jenkins_job
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
     state: absent
  register: result
- name: verify setup
  assert:
    that:
    - result|success

- name: test fail on missing params
  local_action:
     module: jenkins_job
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
  register: result
  ignore_errors: true
- name: verify test fail on missing params
  assert:
    that:
    - result|failed
    - 'result.msg == "one of the following params is required on state=present: config,enabled"'

- name: test create a job
  local_action:
     module: jenkins_job
     config: "{{ lookup('template', 'config.xml.j2') }}"
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
  register: result
- name: verify test create a job
  assert:
    that:
    - result|success
    - result|changed
    - result.enabled

- name: test create a job idempotence
  local_action:
     module: jenkins_job
     config: "{{ lookup('template', 'config.xml.j2') }}"
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
  register: result
- name: verify test create a job idempotence
  assert:
    that:
    - result|success
    - not result|changed
    - result.enabled

- name: test create a enabled job idempotence
  local_action:
     module: jenkins_job
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
     enabled: true
  register: result
- name: verify test create a enabled job idempotence
  assert:
    that:
    - result|success
    - not result|changed
    - result.enabled

- name: test update a job
  local_action:
     module: jenkins_job
     config: "{{ lookup('template', 'config.xml.j2') }}"
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
  register: result
  vars:
    jenkins_days_to_keep: 10
- name: verify test create a enabled job idempotence
  assert:
    that:
    - result|success
    - result|changed
    - result.enabled

- name: test disable an existing job without config
  local_action:
     module: jenkins_job
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
     enabled: false
  register: result
- name: verify test disable an existing job without config
  assert:
    that:
    - result|success
    - result|changed
    - not result.enabled

- name: test disable an existing job without config idempotence
  local_action:
     module: jenkins_job
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
     enabled: false
  register: result
- name: verify test disable an existing job without config idempotence
  assert:
    that:
    - result|success
    - not result|changed
    - not result.enabled

- name: test reset to config job
  local_action:
     module: jenkins_job
     config: "{{ lookup('template', 'config.xml.j2') }}"
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
  register: result
- name: verify test reset to config job
  assert:
    that:
    - result|success
    - result|changed

- name: test remove job
  local_action:
     module: jenkins_job
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
     state: absent
  register: result
- name: verify test remove job
  assert:
    that:
    - result|success
    - result|changed

- name: test remove job idempotence
  local_action:
     module: jenkins_job
     name: test.job
     url: "{{ jenkins_url }}"
     user: "{{ jenkins_user }}"
     password: "{{ jenkins_password }}"
     state: absent
  register: result
- name: verify test remove job idempotence
  assert:
    that:
    - result|success
    - not result|changed
