public void ResolvePathIsCorrect(string action, Func <UrlHelper, IPackageVersionModel, string> caller)
            {
                // Arrange
                var packageId = "TestPackageId";
                var package   = new Package
                {
                    PackageRegistration = new PackageRegistration
                    {
                        Id = packageId
                    },
                    Version = "1.0.0"
                };

                var urlHelper = TestUtility.MockUrlHelper();

                var idModel      = new TrivialPackageVersionModel(packageId, version: null);
                var versionModel = new ListPackageItemViewModel(package, currentUser: null);

                // Act
                var idResult      = urlHelper.PackageVersionAction(action, idModel);
                var versionResult = urlHelper.PackageVersionAction(action, versionModel);

                // Assert
                // Id
                Assert.Equal("/packages/" + packageId + "/" + action, idResult);
                Assert.Equal(urlHelper.PackageVersionAction(action, packageId, version: null), idResult);
                Assert.Equal(caller(urlHelper, idModel), idResult);

                // Id and version
                Assert.Equal("/packages/" + packageId + "/" + package.Version + "/" + action, versionResult);
                Assert.Equal(urlHelper.PackageVersionAction(action, packageId, package.Version), versionResult);
                Assert.Equal(urlHelper.PackageVersionActionTemplate(action).Resolve(versionModel), versionResult);
                Assert.Equal(caller(urlHelper, versionModel), versionResult);
            }
        private static ManagePackageViewModel.VersionReadMeState GetVersionReadMeState(
            TrivialPackageVersionModel model,
            UrlHelper url)
        {
            var submitUrlTemplate    = url.PackageVersionActionTemplate("Edit");
            var getReadMeUrlTemplate = url.PackageVersionActionTemplate("GetReadMeMd");

            var result = new ManagePackageViewModel.VersionReadMeState(
                submitUrlTemplate.Resolve(model),
                getReadMeUrlTemplate.Resolve(model),
                readMe: null);

            result.HasEmbeddedReadme = model.HasEmbeddedReadme;
            return(result);
        }
Exemplo n.º 3
0
        public virtual ActionResult UndoPendingEdits(string id, string version)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);

            if (package == null)
            {
                return(HttpNotFound());
            }

            var model = new TrivialPackageVersionModel
            {
                Id      = package.PackageRegistration.Id,
                Version = package.Version,
                Title   = package.Title,
            };

            return(View(model));
        }
Exemplo n.º 4
0
        public ManagePackageViewModel(Package package, User currentUser, IReadOnlyList <ReportPackageReason> reasons, UrlHelper url, string readMe, bool isManageDeprecationEnabled)
            : base(package, currentUser)
        {
            IsCurrentUserAnAdmin = currentUser != null && currentUser.IsAdministrator;

            DeletePackagesRequest = new DeletePackagesRequest
            {
                Packages = new List <string>
                {
                    string.Format(
                        CultureInfo.InvariantCulture,
                        "{0}|{1}",
                        package.PackageRegistration.Id,
                        package.Version)
                },
                ReasonChoices = reasons
            };

            IsLocked = package.PackageRegistration.IsLocked;

            IsManageDeprecationEnabled = isManageDeprecationEnabled;

            var versionSelectPackages = package.PackageRegistration.Packages
                                        .Where(p => p.PackageStatusKey == PackageStatus.Available || p.PackageStatusKey == PackageStatus.Validating)
                                        .OrderByDescending(p => new NuGetVersion(p.Version))
                                        .ToList();

            VersionSelectList                 = new List <SelectListItem>();
            VersionListedStateDictionary      = new Dictionary <string, VersionListedState>();
            VersionReadMeStateDictionary      = new Dictionary <string, VersionReadMeState>();
            VersionDeprecationStateDictionary = new Dictionary <string, VersionDeprecationState>();

            var submitUrlTemplate    = url.PackageVersionActionTemplate("Edit");
            var getReadMeUrlTemplate = url.PackageVersionActionTemplate("GetReadMeMd");

            foreach (var versionSelectPackage in versionSelectPackages)
            {
                var text  = PackageHelper.GetSelectListText(versionSelectPackage);
                var value = NuGetVersionFormatter.Normalize(versionSelectPackage.Version);
                VersionSelectList.Add(new SelectListItem
                {
                    Text     = text,
                    Value    = value,
                    Selected = package == versionSelectPackage
                });

                VersionListedStateDictionary.Add(
                    value,
                    new VersionListedState(versionSelectPackage));

                var model = new TrivialPackageVersionModel(versionSelectPackage);
                VersionReadMeStateDictionary.Add(
                    value,
                    new VersionReadMeState(
                        submitUrlTemplate.Resolve(model),
                        getReadMeUrlTemplate.Resolve(model),
                        null));

                VersionDeprecationStateDictionary.Add(
                    value,
                    new VersionDeprecationState(versionSelectPackage, text));
            }

            // Update edit model with the readme.md data.
            ReadMe = new EditPackageVersionReadMeRequest();
            if (package.HasReadMe)
            {
                ReadMe.ReadMe.SourceType = ReadMeService.TypeWritten;
                ReadMe.ReadMe.SourceText = readMe;
            }
        }
        private ManagePackageViewModel SetupInternal(
            ManagePackageViewModel viewModel,
            Package package,
            User currentUser,
            IReadOnlyList <ReportPackageReason> reasons,
            UrlHelper url,
            string readMe,
            bool isManageDeprecationEnabled)
        {
            viewModel.IsCurrentUserAnAdmin = currentUser != null && currentUser.IsAdministrator;

            viewModel.DeletePackagesRequest = new DeletePackagesRequest
            {
                Packages = new List <string>
                {
                    string.Format(
                        CultureInfo.InvariantCulture,
                        "{0}|{1}",
                        package.PackageRegistration.Id,
                        package.Version)
                },
                ReasonChoices = reasons
            };

            viewModel.IsLocked = package.PackageRegistration.IsLocked;

            viewModel.IsManageDeprecationEnabled = isManageDeprecationEnabled;

            var versionSelectPackages = package.PackageRegistration.Packages
                                        .Where(p => p.PackageStatusKey == PackageStatus.Available || p.PackageStatusKey == PackageStatus.Validating)
                                        .OrderByDescending(p => new NuGetVersion(p.Version))
                                        .ToList();

            var versionSelectList = new List <SelectListItem>();

            viewModel.VersionSelectList = versionSelectList;
            var versionListedStateDictionary = new Dictionary <string, ManagePackageViewModel.VersionListedState>();

            viewModel.VersionListedStateDictionary = versionListedStateDictionary;
            var versionReadMeStateDictionary = new Dictionary <string, ManagePackageViewModel.VersionReadMeState>();

            viewModel.VersionReadMeStateDictionary = versionReadMeStateDictionary;
            var versionDeprecationStateDictionary = new Dictionary <string, ManagePackageViewModel.VersionDeprecationState>();

            viewModel.VersionDeprecationStateDictionary = versionDeprecationStateDictionary;

            foreach (var versionSelectPackage in versionSelectPackages)
            {
                var text  = PackageHelper.GetSelectListText(versionSelectPackage);
                var value = NuGetVersionFormatter.Normalize(versionSelectPackage.Version);
                versionSelectList.Add(new SelectListItem
                {
                    Text     = text,
                    Value    = value,
                    Selected = package == versionSelectPackage
                });

                versionListedStateDictionary.Add(
                    value,
                    new ManagePackageViewModel.VersionListedState(versionSelectPackage.Listed, versionSelectPackage.DownloadCount));

                var model = new TrivialPackageVersionModel(versionSelectPackage);
                versionReadMeStateDictionary.Add(
                    value,
                    GetVersionReadMeState(model, url));

                versionDeprecationStateDictionary.Add(
                    value,
                    GetVersionDeprecationState(versionSelectPackage.Deprecations.SingleOrDefault(), text));
            }

            // Update edit model with the readme.md data.
            viewModel.ReadMe = new EditPackageVersionReadMeRequest();
            if (package.HasReadMe && package.EmbeddedReadmeType == EmbeddedReadmeFileType.Absent)
            {
                viewModel.ReadMe.ReadMe.SourceType = ReadMeService.TypeWritten;
                viewModel.ReadMe.ReadMe.SourceText = readMe;
            }

            return(viewModel);
        }
Exemplo n.º 6
0
        public virtual ActionResult UndoPendingEdits(string id, string version)
        {
            var package = _packageService.FindPackageByIdAndVersion(id, version);
            if (package == null)
            {
                return HttpNotFound();
            }

            var model = new TrivialPackageVersionModel
            {
                Id = package.PackageRegistration.Id,
                Version = package.Version,
                Title = package.Title,
            };

            return View(model);
        }