示例#1
0
 private static bool AssertEntryIsCreatedCorrectly(WidgetEntry widgetEntry, Manifest manifest,
                                                   int expectedNumberOfVersions)
 {
     widgetEntry.Versions.Should().HaveCount(expectedNumberOfVersions);
     AssertNewEntryIsCorrect(widgetEntry, manifest);
     return(true);
 }
示例#2
0
        private static void AssertNewEntryIsCorrect(WidgetEntry widgetEntry, Manifest manifest)
        {
            var entryVersion = widgetEntry.Versions[manifest.Version];

            entryVersion.WidgetComponents.Should().HaveCount(manifest.Components.Count);
            entryVersion.MainIconName.Should().Be(manifest.MainIconName);
            entryVersion.WidgetIcons.Should().BeEquivalentTo(manifest.Icons);
            widgetEntry.Name.Should().Be(manifest.Name);
            widgetEntry.Type.Should().Be(manifest.Type);
            widgetEntry.LatestVersion.Should().Be(manifest.Version);
        }
        private async Task <ApiResult <WidgetEntry> > SaveNewVersion(ManifestWidgetVersion manifestWidgetVersion,
                                                                     WidgetEntry entry)
        {
            entry.AddVersion(manifestWidgetVersion, User.ToUserInfo());
            if (entry.Id == ObjectId.Empty)
            {
                return(await _repository.SaveAsync(CollectionName, entry));
            }
            var result = await _repository.UpdateAsync(CollectionName, x => x.Id == entry.Id, entry);

            return(entry);
        }
示例#4
0
        public void should_throw_HttpConflictException_when_an_existing_version_already_exists_for_the_specified_manifest()
        {
            var manifest       = TestHelpers.CreateManifest();
            var files          = TestHelpers.CreateZipFile(TestHelpers.CreateFilesFromManifest(manifest));
            var formCollection = new FormCollection(new Dictionary <string, StringValues>(), files);
            var widgetCursor   = StubCursor <WidgetEntry>(WidgetEntryController.CollectionName);
            var existingEntry  = new WidgetEntry
            {
                Name     = manifest.Name, Type = manifest.Type,
                Versions = new Dictionary <string, WidgetVersion> {
                    { manifest.Version, new WidgetVersion() }
                }
            };

            StubSingleFoundResult(widgetCursor, existingEntry);
            StubValidManifest();

            _controller.Awaiting(x => x.AddNewItem(formCollection)).Should()
            .Throw <HttpConflictException>().Which.Errors
            .Any(x => x.Message.Contains($"Version {manifest.Version} already exists.")).Should().BeTrue();
        }
示例#5
0
        public async Task should_find_a_widget_entry_with_name_and_type_saving_a_new_entry_version()
        {
            var manifest       = TestHelpers.CreateManifest();
            var files          = TestHelpers.CreateZipFile(TestHelpers.CreateFilesFromManifest(manifest));
            var formCollection = new FormCollection(new Dictionary <string, StringValues>(), files);
            var widgetCursor   = StubCursor <WidgetEntry>(WidgetEntryController.CollectionName);
            var existingEntry  = new WidgetEntry
            {
                Id       = ObjectId.GenerateNewId(),
                Name     = manifest.Name, Type = manifest.Type,
                Versions = new Dictionary <string, WidgetVersion> {
                    { "0.1", new WidgetVersion() }
                }
            };

            StubSingleFoundResult(widgetCursor, existingEntry);
            StubValidManifest();

            await _controller.AddNewItem(formCollection);

            Repository.Verify(x => x.UpdateAsync(WidgetEntryController.CollectionName,
                                                 It.IsAny <Expression <Func <WidgetEntry, bool> > >(),
                                                 It.Is <WidgetEntry>(e => AssertEntryIsCreatedCorrectly(e, manifest, 2))));
        }
 private static WidgetVersionOutput ToWidgetVersionOutput(this WidgetVersion version, WidgetEntry entry)
 {
     return(new WidgetVersionOutput
     {
         CreatedAt = version.CreatedAt,
         CreatedBy = version.CreatedBy,
         WidgetComponents = version.WidgetComponents,
         WidgetIcons = version.WidgetIcons,
         MainIconName = version.MainIconName,
         Type = entry.Type,
         Name = entry.Name
     });
 }