/// <inheritdoc /> public async Task <bool> CanUserMaintainTagAsync(TagSummary tag, ulong userId) { if (tag is null) { throw new ArgumentNullException(nameof(tag)); } var currentUser = await UserService.GetGuildUserAsync(tag.GuildId, userId); if (!await CanTriviallyMaintainTagAsync(currentUser)) { if (tag.OwnerUser is null) { if (!await CanUserMaintainTagOwnedByRoleAsync(currentUser, tag.OwnerRole)) { return(false); } } else if (userId != tag.OwnerUser.Id) { return(false); } } return(true); }
public void Create_Always_ReturnsCreatedResult() { // arrange const int TAG_ID = 123; var createdSummary = new TagSummary { Id = TAG_ID }; _mockTagRepository.Setup(r => r.Create(It.IsAny <TagSaveData>())).Returns(createdSummary); // act var saveData = new TagSaveData(); var result = _tagsController.Create(saveData); // assert Assert.IsInstanceOfType(result, typeof(CreatedResult)); var createdResult = (CreatedResult)result; Assert.AreEqual($"./{TAG_ID}", createdResult.Location); Assert.IsInstanceOfType(createdResult.Value, typeof(TagSummary)); var actualSummary = (TagSummary)createdResult.Value; Assert.AreEqual(TAG_ID, actualSummary.Id); }
public static Embed FormatTagInfo(IUser author, IUser owner, TagSummary tag) { return(new EmbedBuilder() .WithColor(Constants.DefaultEmbedColour) .AddField("Name", tag.Name) .AddField("Uses", tag.Uses) .AddField("Owner", owner) .AddField("Author", author) .Build()); }
public void WidgetTest() { var tags = new TagSummary[] { }; _postRepositoryMock.Expect(r => r.ListTags()).Return(tags); var result = TestedController.Widget(); VerifyViewResult(result, "SearchWidget", typeof(IEnumerable <TagSummary>), tags); }
public void TagRefContainsCorrectData(int numTags) { InitDatabase(numTags); for (int i = 1; i <= numTags; i++) { Tag expected = CreateTag(i); TagSummary TagRef = _referenceData.Tags.GetSummary(i); Assert.NotNull(TagRef); Assert.Equal(expected.Id, TagRef.Id); Assert.Equal(expected.Name, TagRef.Name); Assert.Equal(expected.Count, TagRef.Count); } }
public void Create_Always_CallsRepositoryWithData() { // arrange const string TAG_NAME = "tag name"; var incomingData = new TagSaveData { Name = TAG_NAME }; var createdSummary = new TagSummary(); _mockTagRepository.Setup(r => r.Create(It.IsAny <TagSaveData>())).Returns(createdSummary); // act _tagsController.Create(incomingData); // assert _mockTagRepository.Verify(r => r.Create(It.Is <TagSaveData>(sd => sd.Name == TAG_NAME))); }
private async Task EnsureUserCanMaintainTagAsync(TagSummary tag, ulong currentUserId) { var currentUser = await UserService.GetGuildUserAsync(tag.GuildId, currentUserId); if (!await CanTriviallyMaintainTagAsync(currentUser)) { if (tag.OwnerUser is null) { if (!await CanUserMaintainTagOwnedByRoleAsync(currentUser, tag.OwnerRole)) { throw new InvalidOperationException("User rank insufficient to transfer the tag."); } } else if (currentUserId != tag.OwnerUser.Id) { throw new InvalidOperationException("User does not own the tag."); } } }
public static void ShouldMatchTestData(this TagSummary summary) { summary.ShouldNotBeNull(); summary.Id.ShouldBeOneOf(Tags.Entities.Select(x => x.Id).ToArray()); var entity = Tags.Entities.First(x => x.Id == summary.Id); summary.CreateAction.ShouldNotBeNull(); summary.CreateAction.ShouldMatchTestData(); if (!(entity.DeleteActionId is null)) { summary.DeleteAction.ShouldNotBeNull(); summary.DeleteAction.ShouldMatchTestData(); } summary.GuildId.ShouldBe(entity.GuildId); summary.Name.ShouldBe(entity.Name); summary.Content.ShouldBe(entity.Content); summary.Uses.ShouldBe(entity.Uses); }