- name: Run tests for the generate-zuul-manifest role
  hosts: all
  pre_tasks:
    - name: Create test directories
      file:
        path: "{{ ansible_user_dir }}/{{ item }}"
        state: directory
      loop:
        - tests
        - tests/logs

    - name: Create tests files
      copy:
        dest: "{{ ansible_user_dir }}/{{ item }}"
        content: ""
      loop:
        - tests/index.txt
        - tests/logs/file.txt
        - tests/logs/file.png

  roles:
    - role: generate-zuul-manifest
      generate_zuul_manifest_root: "{{ ansible_user_dir }}/tests"
      generate_zuul_manifest_filename: "test-manifest.json"
      generate_zuul_manifest_output: "{{ ansible_user_dir }}/tests/{{ generate_zuul_manifest_filename }}"
      generate_zuul_manifest_type: "test_zuul_manifest"

  post_tasks:
    - name: Fetch output
      fetch:
        src: "{{ ansible_user_dir }}/tests/test-manifest.json"
        flat: true
        dest: "{{ zuul.executor.log_root }}/"

    - name: Load output
      include_vars:
        file: "{{ zuul.executor.log_root }}/test-manifest.json"
        name: manifest

    - name: Check output
      vars:
        got: "{{ manifest['tree'] }}"
        exp:
          - name: logs
            mimetype: application/directory
            children:
              - name: file.png
                mimetype: image/png
              - name: file.txt
                mimetype: text/plain
          - name: index.txt
            mimetype: text/plain
      assert:
        that:
          - got[0]['name'] == exp[0]['name']
          - got[0]['mimetype'] == exp[0]['mimetype']
          - got[0]['children'][0]['name'] == exp[0]['children'][0]['name']
          - got[0]['children'][0]['mimetype'] == exp[0]['children'][0]['mimetype']
          - got[0]['children'][1]['name'] == exp[0]['children'][1]['name']
          - got[0]['children'][1]['mimetype'] == exp[0]['children'][1]['mimetype']