Feature: Manage Cap

  Background:
    Given a WP install

  Scenario: CRUD for cap
    When I run `wp cap list contributor | sort`
    Then STDOUT should be:
      """
      delete_posts
      edit_posts
      level_0
      level_1
      read
      """

    When I run `wp cap add contributor spectate`
    Then STDOUT should contain:
      """
      Success: Added 1 capability to 'contributor' role.
      """

    When I run `wp cap add contributor behold observe --grant`
    Then STDOUT should contain:
      """
      Success: Added 2 capabilities to 'contributor' role.
      """

    When I run `wp cap add contributor detect --no-grant`
    Then STDOUT should contain:
      """
      Success: Added 1 capability to 'contributor' role as false.
      """

    When I run `wp cap add contributor discover examine --no-grant`
    Then STDOUT should contain:
      """
      Success: Added 2 capabilities to 'contributor' role as false.
      """

    When I run `wp cap add contributor inspire --grant=false`
    Then STDOUT should contain:
      """
      Success: Added 1 capability to 'contributor' role as false.
      """

    When I run `wp cap list contributor`
    Then STDOUT should contain:
      """
      spectate
      """
    And STDOUT should contain:
      """
      behold
      """
    And STDOUT should contain:
      """
      observe
      """
    Then STDOUT should not contain:
      """
      detect
      """
    Then STDOUT should not contain:
      """
      discover
      """
    Then STDOUT should not contain:
      """
      examine
      """

    When I run `wp cap list contributor --show-grant`
    Then STDOUT should contain:
      """
      spectate,true
      """
    And STDOUT should contain:
      """
      behold,true
      """
    And STDOUT should contain:
      """
      observe,true
      """
    Then STDOUT should contain:
      """
      detect,false
      """
    Then STDOUT should contain:
      """
      discover,false
      """
    Then STDOUT should contain:
      """
      examine,false
      """

    When I run `wp cap remove contributor spectate`
    Then STDOUT should contain:
      """
      Success: Removed 1 capability from 'contributor' role.
      """

    When I run `wp cap remove contributor behold observe`
    Then STDOUT should contain:
      """
      Success: Removed 2 capabilities from 'contributor' role.
      """

    When I run `wp cap remove contributor detect discover examine`
    Then STDOUT should contain:
      """
      Success: Removed 3 capabilities from 'contributor' role.
      """

    When I run `wp cap list contributor`
    Then STDOUT should not contain:
      """
      spectate
      """
    And STDOUT should not contain:
      """
      behold
      """
    And STDOUT should not contain:
      """
      observe
      """

    When I run `wp cap list contributor --show-grant`
    Then STDOUT should not contain:
      """
      spectate,true
      """
    And STDOUT should not contain:
      """
      behold,true
      """
    And STDOUT should not contain:
      """
      observe,true
      """
    Then STDOUT should not contain:
      """
      detect,false
      """
    And STDOUT should not contain:
      """
      discover,false
      """
    And STDOUT should not contain:
      """
      examine,false
      """

    When I try `wp cap add role-not-available spectate`
    Then STDERR should be:
      """
      Error: 'role-not-available' role not found.
      """
