You are here

public function OgRoleCacheContextTestTrait::membershipsProvider in Organic groups 8

Data provider for testMemberships().

Format of the user list:


  $user_id => [
    $group_entity_type_id => [
      $group_id => [
        $role_name,
      ],
    ],
  ],

Return value

array An array of test data, each array consisting of two arrays. The first array defines a list of users, the groups of which they are a member, and the roles the users have in the groups. It is in the format described above. The second array contains arrays of user IDs that are expected to have identical cache context keys, since they have identical memberships in the defined test groups.

See also

::testMemberships()

File

tests/src/Traits/OgRoleCacheContextTestTrait.php, line 53

Class

OgRoleCacheContextTestTrait
Provides functionality shared between tests for the OgRoleCacheContext.

Namespace

Drupal\Tests\og\Traits

Code

public function membershipsProvider() : array {
  return [
    [
      // Set up a number of users with different roles within different
      // groups.
      [
        // An anonymous user which is not a member of any groups.
        0 => [],
        // A user which is a normal member of three groups, one group of type
        // node, and two groups of type entity_test.
        1 => [
          'node' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
          'entity_test' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
            ],
            2 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which is a member of one single group.
        2 => [
          'entity_test' => [
            2 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which is an administrator in one group and a regular member
        // in another. Note that an administrator is also a normal member, so
        // the user will have two roles.
        3 => [
          'node' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
              OgRoleInterface::ADMINISTRATOR,
            ],
            2 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which has a custom role 'moderator' in three different
        // groups.
        4 => [
          'node' => [
            1 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
          'entity_test' => [
            1 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
            2 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which has the same memberships as user 1, and one additional
        // membership.
        5 => [
          'node' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
            ],
            2 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
          'entity_test' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
            ],
            2 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which has the same memberships as user 1, but defined in a
        // different order.
        6 => [
          'entity_test' => [
            2 => [
              OgRoleInterface::AUTHENTICATED,
            ],
            1 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
          'node' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which has the same memberships as user 3.
        7 => [
          'node' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
              OgRoleInterface::ADMINISTRATOR,
            ],
            2 => [
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which has the same memberships as user 4, with the
        // memberships declared in a different order.
        8 => [
          'node' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
              'moderator',
            ],
          ],
          'entity_test' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
              'moderator',
            ],
            2 => [
              OgRoleInterface::AUTHENTICATED,
              'moderator',
            ],
          ],
        ],
        // A user which has the same memberships as user 4, with the
        // memberships declared in the same order.
        9 => [
          'node' => [
            1 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
          'entity_test' => [
            1 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
            2 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
        // A user which has the same memberships as user 4, but with one
        // role missing.
        10 => [
          'node' => [
            1 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
          'entity_test' => [
            1 => [
              OgRoleInterface::AUTHENTICATED,
            ],
            2 => [
              'moderator',
              OgRoleInterface::AUTHENTICATED,
            ],
          ],
        ],
      ],
      // Define the users which have identical memberships and should have an
      // identical hash in their cache context key.
      [
        [
          0,
        ],
        [
          1,
          6,
        ],
        [
          2,
        ],
        [
          3,
          7,
        ],
        [
          4,
          8,
          9,
        ],
        [
          5,
        ],
        [
          10,
        ],
      ],
    ],
  ];
}