public async Task ChangePlan_PullDogNotInstalledByUser_ReturnsBadRequest()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Is <EnsureUserForIdentityCommand>(args =>
                                                        args.IdentityName == "some-identity-name"))
            .Returns(new User()
            {
                PullDogSettings = null
            });

            var fakeMapper = Substitute.For <IMapper>();
            var fakeAesEncryptionHelper = Substitute.For <IAesEncryptionHelper>();

            var controller = new PullDogApiController(
                fakeMediator,
                fakeMapper,
                fakeAesEncryptionHelper);

            controller.FakeAuthentication("some-identity-name");

            //Act
            var result = await controller.ChangePlan(new ChangePlanRequest()
            {
                PlanId   = "dummy",
                PoolSize = 1337
            }) as BadRequestObjectResult;

            //Assert
            Assert.IsNotNull(result);
        }
        public async Task ChangePlan_ConditionsPassed_ChangesPullDogPlan()
        {
            //Arrange
            var fakeMediator = Substitute.For <IMediator>();

            fakeMediator
            .Send(Arg.Is <EnsureUserForIdentityCommand>(args =>
                                                        args.IdentityName == "some-identity-name"))
            .Returns(new User()
            {
                PullDogSettings = new PullDogSettings()
            });

            var fakeMapper = Substitute.For <IMapper>();
            var fakeAesEncryptionHelper = Substitute.For <IAesEncryptionHelper>();

            var controller = new PullDogApiController(
                fakeMediator,
                fakeMapper,
                fakeAesEncryptionHelper);

            controller.FakeAuthentication("some-identity-name");

            //Act
            var result = await controller.ChangePlan(new ChangePlanRequest()
            {
                PlanId   = "some-plan-id",
                PoolSize = 1337
            }) as OkResult;

            //Assert
            Assert.IsNotNull(result);

            await fakeMediator
            .Received(1)
            .Send(Arg.Is <ChangePullDogPlanCommand>(args =>
                                                    args.PoolSize == 1337 &&
                                                    args.PlanId == "some-plan-id"));
        }