public void CanEditValueAndCommentOfABudget()
        {
            IRepository <Client> clientRepository = new LocalRepository <Client>();
            IRepository <Budget> budgetRepository = new LocalRepository <Budget>();
            var userManager = new Mock <IIdentityMembershipProvider>();

            Budget budget1 = new Budget();

            budget1.Id       = 1;
            budget1.Value    = 1000;
            budget1.Month    = new DateTime(2014, 1, 1);
            budget1.ClientId = 1;

            budgetRepository.Add(budget1);

            Assert.AreEqual(1, budgetRepository.All().Count());
            var controller = new BudgetController(clientRepository, budgetRepository, userManager.Object);

            var createBudgetPostMessage = new EditBudgetViewModel
            {
                id       = 1,
                clientId = 1,
                month    = "2014-01-01",
                value    = 3000,
                comment  = "New Comment"
            };

            controller.Edit(createBudgetPostMessage);
            Assert.AreEqual(1, budgetRepository.All().Count());
            Assert.AreEqual(3000, budgetRepository.All().First().Value);
            Assert.AreEqual("New Comment", budgetRepository.All().First().Comment);
        }
        public void EditGetReturnsCorrectData()
        {
            IRepository <Client> clientRepository = new LocalRepository <Client>();
            IRepository <Budget> budgetRepository = new LocalRepository <Budget>();
            var userManager = new Mock <IIdentityMembershipProvider>();

            Budget budget1 = new Budget();

            budget1.Id       = 1;
            budget1.Value    = 1000;
            budget1.Month    = new DateTime(2014, 1, 1);
            budget1.ClientId = 1;
            budget1.Comment  = "Comment";
            budget1.Client   = new Client {
                Name = "Client Name"
            };

            budgetRepository.Add(budget1);

            Assert.AreEqual(1, budgetRepository.All().Count());

            userManager.Setup(um => um.GetRoles(It.IsAny <string>())).Returns(new List <string> {
                "mockRole"
            });
            var controller = new BudgetController(clientRepository, budgetRepository, userManager.Object);
            var claim      = new Claim("test", "AnyId");

            ModelHelper.SetClaimAsCurrentUserForController(claim, controller);

            var expectedEditBudgetInRepository = new CreateEditClientBudgetViewModel
            {
                BudgetId   = 1,
                ClientId   = 1,
                Month      = "2014-01",
                Value      = 1000,
                Comment    = "Comment",
                ClientName = "Client Name"
            };

            var result      = controller.Edit(1) as ViewResult;
            var resultModel = result.Model as CreateEditClientBudgetViewModel;

            Assert.AreEqual(expectedEditBudgetInRepository.BudgetId, resultModel.BudgetId);
            Assert.AreEqual(expectedEditBudgetInRepository.ClientId, resultModel.ClientId);
            Assert.AreEqual(expectedEditBudgetInRepository.Month, resultModel.Month);
            Assert.AreEqual(expectedEditBudgetInRepository.Value, resultModel.Value);
            Assert.AreEqual(expectedEditBudgetInRepository.Comment, resultModel.Comment);
            Assert.AreEqual(expectedEditBudgetInRepository.ClientName, resultModel.ClientName);
        }