public async Task <IActionResult> Edit(
            int id,
            [FromServices] IPackageRepository repo)
        {
            if (id == 0)
            {
                return(RedirectToAction(
                           nameof(ManagePackagesController.Index)));
            }
            var aggregate = await repo.Get(id);

            if (aggregate == null)
            {
                return(RedirectToAction(
                           nameof(ManagePackagesController.Index)));
            }
            var vm = new PackageFullEditViewModel(aggregate);

            return(View(vm));
        }
        public async Task DeletePostSuccessTest()
        {
            var controller        = new ManagePackagesController();
            var commandDependency =
                new Mock <ICommandHandler <UpdatePackageCommand> >();

            commandDependency
            .Setup(m => m.HandleAsync(It.IsAny <UpdatePackageCommand>()))
            .Returns(Task.CompletedTask);
            var vm = new PackageFullEditViewModel();

            var result = await controller.Edit(vm,
                                               commandDependency.Object);

            commandDependency.Verify(m => m.HandleAsync(
                                         It.IsAny <UpdatePackageCommand>()),
                                     Times.Once);
            var redirectResult = Assert.IsType <RedirectToActionResult>(result);

            Assert.Equal(nameof(ManagePackagesController.Index),
                         redirectResult.ActionName);
            Assert.Null(redirectResult.ControllerName);
        }