---
# 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

- name: 'Remove any node modules'
  file:
    path: '{{ remote_dir }}/node_modules'
    state: absent

- vars:
    # sample: node-v8.2.0-linux-x64.tar.xz
    node_path: '{{ remote_dir }}/{{ nodejs_path }}/bin'
    package: 'iconv-lite'
  block:
    - shell: npm --version
      environment:
        PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
      register: npm_version

    - debug:
        var: npm_version.stdout

    - name: 'Install simple package without dependency'
      npm:
        path: '{{ remote_dir }}'
        executable: '{{ node_path }}/npm'
        state: present
        name: '{{ package }}'
      environment:
        PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
      register: npm_install

    - assert:
        that:
          - npm_install is success
          - npm_install is changed

    - name: 'Reinstall simple package without dependency'
      npm:
        path: '{{ remote_dir }}'
        executable: '{{ node_path }}/npm'
        state: present
        name: '{{ package }}'
      environment:
        PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
      register: npm_reinstall

    - name: Check there is no change
      assert:
        that:
          - npm_reinstall is success
          - not (npm_reinstall is changed)

    - name: 'Manually delete package'
      file:
        path: '{{ remote_dir }}/node_modules/{{ package }}'
        state: absent

    - name: 'reinstall simple package'
      npm:
        path: '{{ remote_dir }}'
        executable: '{{ node_path }}/npm'
        state: present
        name: '{{ package }}'
      environment:
        PATH: '{{ node_path }}:{{ ansible_env.PATH }}'
      register: npm_fix_install

    - name: Check result is changed and successful
      assert:
        that:
          - npm_fix_install is success
          - npm_fix_install is changed
