private static bool AssertEntryIsCreatedCorrectly(WidgetEntry widgetEntry, Manifest manifest, int expectedNumberOfVersions) { widgetEntry.Versions.Should().HaveCount(expectedNumberOfVersions); AssertNewEntryIsCorrect(widgetEntry, manifest); return(true); }
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); }
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(); }
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 }); }