- 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