public async Task CanPerformActivityAsync_NoDelegateRunSynchronously_ReturnFalse()
        {
            // Arrange
            var user = new UserAuthorisation(userName);

            // Act
            var result = await user.CanPerformActivityAsync("READ");

            // Assert
            Assert.IsFalse(result);
        }
        public async Task CanPerformActivityAsync_PassDelegateParameter_ReturnTrue()
        {
            // Arrange
            var mockPredicate = new Mock<Func<UserAuthorisation, string, Task<bool>>>();
            mockPredicate.SetReturnsDefault(Task.FromResult(true));

            var user = new UserAuthorisation(userName);

            // Act
            var result = await user.CanPerformActivityAsync("READ", mockPredicate.Object);

            // Assert
            Assert.IsTrue(result);
            mockPredicate.Verify(p => p(user, "READ"), Times.Once);
        }
        public async Task CanPerformActivityAsync_NoDelegateRunSynchronously_ReturnTrue()
        {
            // Arrange
            var dataReader = roles.First((r => r.Name.Equals("Data Reader")));
            var user = new UserAuthorisation(userName, new List<Role>() { dataReader });

            // Act
            var result = await user.CanPerformActivityAsync("READ");

            // Assert
            Assert.IsTrue(result);
        }