예제 #1
0
        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);
        }
예제 #2
0
        /// <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));
        }
예제 #4
0
        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());
        }