public async Task DoNot_AddToDownloadsCount_When_AlreadyDownloaded() { //Arrange var options = Utils.GetOptions(nameof(DoNot_AddToDownloadsCount_When_AlreadyDownloaded)); var user = TestModelsSeeder.SeedUser(); var report = TestModelsSeeder.SeedReport(); using (var arrangeContext = new InsightHubContext(options)) { await arrangeContext.Users.AddAsync(user); await arrangeContext.Reports.AddAsync(report); arrangeContext.SaveChanges(); } //Act & Assert using var assertContext = new InsightHubContext(options); var sutTags = new TagServices(assertContext); var sut = new ReportServices(assertContext, sutTags); await sut.AddToDownloadsCount(user.Id, report.Id); await sut.AddToDownloadsCount(user.Id, report.Id); var count = assertContext.DownloadedReports.Count(); Assert.AreEqual(1, count); }
/// <summary> /// Sets the IsBanned property of a User to False. /// </summary> /// <param name="id">The ID of the target User.</param> /// <returns>Throws ArgumentNullException if User does not exist. Throws ArgumentException if the User is already banned.</returns> public async Task UnbanUser(int id) { var user = await _context.Users .FirstOrDefaultAsync(u => u.Id == id); ValidateUserExists(user); if (!user.IsBanned) { throw new ArgumentException("Unable to unban user. User not banned."); } user.IsBanned = false; user.BanReason = string.Empty; _context.SaveChanges(); }
public async Task ThrowArgumentException_When_ReportIsNotFound() { var options = Utils.GetOptions(nameof(ThrowArgumentException_When_ReportIsNotFound)); var report = TestModelsSeeder.SeedReport(); using (var arrangeContext = new InsightHubContext(options)) { await arrangeContext.Reports.AddAsync(report); arrangeContext.SaveChanges(); } using var assertContext = new InsightHubContext(options); var sutTag = new TagServices(assertContext); var sut = new ReportServices(assertContext, sutTag); await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.RestoreReport(1)); }
public async Task ThrowArgumentException_When_AlreadyExists() { //Arrange var options = Utils.GetOptions(nameof(ThrowArgumentException_When_AlreadyExists)); var tag = TestModelsSeeder.SeedTag(); var tagName = "TestTag1"; using (var arrangeContext = new InsightHubContext(options)) { arrangeContext.Tags.Add(tag); arrangeContext.SaveChanges(); } //Act & Assert using var assertContext = new InsightHubContext(options); var sut = new TagServices(assertContext); await Assert.ThrowsExceptionAsync <ArgumentException>(() => sut.CreateTag(tagName)); }
public async Task DeleteReport_When_ParamsValid() { //Arrange var options = Utils.GetOptions(nameof(DeleteReport_When_ParamsValid)); var report = TestModelsSeeder.SeedReport(); using (var arrangeContext = new InsightHubContext(options)) { await arrangeContext.Reports.AddAsync(report); arrangeContext.SaveChanges(); } //Act & Assert using var assertContext = new InsightHubContext(options); var sutTag = new TagServices(assertContext); var sut = new ReportServices(assertContext, sutTag); await sut.DeleteReport(1); Assert.IsTrue(assertContext.Reports.First(u => u.Id == 1).IsDeleted); }
public async Task PermanentlyDelete_When_ParamsValid() { var options = Utils.GetOptions(nameof(PermanentlyDelete_When_ParamsValid)); var report = TestModelsSeeder.SeedReport(); using (var arrangeContext = new InsightHubContext(options)) { await arrangeContext.Reports.AddAsync(report); arrangeContext.SaveChanges(); } using var assertContext = new InsightHubContext(options); var sutTag = new TagServices(assertContext); var sut = new ReportServices(assertContext, sutTag); assertContext.Reports.First(r => r.Id == 1).IsDeleted = true; await sut.PermanentlyDeleteReport(report.Id); Assert.AreEqual(0, assertContext.Reports.Count()); }