コード例 #1
0
        public void DeleteAnnouncement_Should_Success()
        {
            var author = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Goshko Petkov"
            };

            var announcementInput = new AnnouncementInputModel()
            {
                Content = "newnew",
                Author  = author.UserName
            };

            var newAnnouncementId = this.adminService.AddAnnouncement(announcementInput);

            var announcement = this.Context.Announcements.Find(newAnnouncementId);

            this.adminService.DeleteAnnouncement(newAnnouncementId);

            var result = this.Context.Announcements.ToList();

            result.Should().BeEmpty()
            .And.Subject.Should().NotContain(announcement);
        }
コード例 #2
0
        public async Task <IActionResult> Update(AnnouncementInputModel announcementInputModel, string id)
        {
            if (!this.ModelState.IsValid)
            {
                var categories          = this.categoriesService.GetAll <AnnouncementCategoriesView>();
                var currentAnnouncement = new AnnouncementViewModel()
                {
                    Id           = id,
                    Title        = announcementInputModel.Title,
                    ServiceType  = announcementInputModel.ServiceType,
                    CategoryName = announcementInputModel.Category,
                    Description  = announcementInputModel.Description,
                    Price        = announcementInputModel.Price,
                    Place        = announcementInputModel.Place,
                };
                var viewModel = new AnnouncementUpdateModel()
                {
                    Categories   = categories,
                    Announcement = currentAnnouncement,
                };
                return(this.View("GetUpdateView", viewModel));
            }

            await this.announcementService.UpdateAsync(announcementInputModel, id);

            return(this.RedirectToAction("GetDetails", new { id = id }));
        }
コード例 #3
0
        public void AddAnnouncement_Should_Success()
        {
            var user = new BookCreatorUser()
            {
                UserName = "******",
                Name     = "Goshko Petkov"
            };

            var announcements = new[]
            {
                new Announcement
                {
                    Id          = "2",
                    Content     = "content1",
                    AuthorId    = user.Id,
                    PublishedOn = DateTime.UtcNow
                },
                new Announcement
                {
                    Id          = "3",
                    Content     = "content2",
                    AuthorId    = user.Id,
                    PublishedOn = DateTime.UtcNow.AddHours(2)
                },
                new Announcement
                {
                    Id          = "4",
                    Content     = "content3",
                    AuthorId    = user.Id,
                    PublishedOn = DateTime.UtcNow.AddHours(7)
                },
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.Context.Announcements.AddRange(announcements);
            this.Context.SaveChanges();

            var newAnnouncement = new AnnouncementInputModel
            {
                Author  = user.UserName,
                Content = "new"
            };

            var newAnnouncementId = this.adminService.AddAnnouncement(newAnnouncement);

            var announcementCompareTo = new Announcement()
            {
                Id          = newAnnouncementId,
                AuthorId    = user.Id,
                Author      = user,
                Content     = newAnnouncement.Content,
                PublishedOn = DateTime.UtcNow
            };

            var result = this.Context.Announcements.Find(newAnnouncementId);

            result.Should().NotBeNull()
            .And.BeEquivalentTo(announcementCompareTo,
                                options => options.Excluding(x => x.PublishedOn));
        }
コード例 #4
0
        public IActionResult GetCreateView(AnnouncementInputModel announcementInputModel)
        {
            var categories  = this.categoriesService.GetAll <AnnouncementCategoriesView>();
            var createModel = new CreateModel()
            {
                Categories   = categories,
                Announcement = announcementInputModel,
            };

            return(this.View(createModel));
        }
コード例 #5
0
        public IActionResult AllAnnouncements(AnnouncementInputModel inputModel)
        {
            if (ModelState.IsValid)
            {
                this.AdminService.AddAnnouncement(inputModel);
                return(RedirectToAction(nameof(AllAnnouncements)));
            }

            this.ViewData[GlobalConstants.Error] = GlobalConstants.TooShortAnnouncement;
            return(RedirectToAction(nameof(AllAnnouncements)));
        }
コード例 #6
0
        public void AddAnnouncement(AnnouncementInputModel inputModel)
        {
            var user = this.UserManager.FindByNameAsync(inputModel.Author).Result;

            var announce = Mapper.Map <Announcement>(inputModel);

            announce.Author = user;

            this.Context.Announcements.Add(announce);

            this.Context.SaveChanges();
        }
コード例 #7
0
        public async Task <string> UpdateAsync(AnnouncementInputModel announcementInputModel, string id)
        {
            var announcement = this.announcementRepository.All().FirstOrDefault(x => x.Id == id);

            announcement.Title       = announcementInputModel.Title;
            announcement.Description = announcementInputModel.Description;
            announcement.Place       = announcementInputModel.Place;
            announcement.ServiceType = announcementInputModel.ServiceType;
            announcement.CategoryId  = int.Parse(announcementInputModel.Category);
            announcement.Price       = announcementInputModel.Price;

            await this.announcementRepository.SaveChangesAsync();

            return(announcement.Id);
        }
コード例 #8
0
        public async Task CreateAsyncAddAnnouncementCorrectly()
        {
            var announcement = new AnnouncementInputModel()
            {
                ServiceType = ServiceType.Предмет,
                Category    = "1",
                Description = "test",
                Place       = "test",
                Title       = "test",
                UserId      = "a",
            };
            var service = new AnnouncementService(this.announcementRepository);
            await service.CreateAsync(announcement, "aa");

            Assert.Equal(1, this.dbContext.Announcements.Count());
        }
コード例 #9
0
        public async Task CreateAsyncAddAnnouncementReturnId()
        {
            var announcement = new AnnouncementInputModel()
            {
                ServiceType = ServiceType.Предмет,
                Category    = "1",
                Description = "test",
                Place       = "test",
                Title       = "test",
                UserId      = "a",
            };
            var service    = new AnnouncementService(this.announcementRepository);
            var expectedId = await service.CreateAsync(announcement, "aa");

            var actualId = this.dbContext.Announcements.FirstOrDefault()?.Id;

            Assert.Equal(expectedId, actualId);
        }
コード例 #10
0
        public async Task <string> CreateAsync(AnnouncementInputModel announcementInputModel, string userId)
        {
            var announcement = new Announcement()
            {
                Title       = announcementInputModel.Title,
                Description = announcementInputModel.Description,
                Place       = announcementInputModel.Place,
                ServiceType = announcementInputModel.ServiceType,
                CategoryId  = int.Parse(announcementInputModel.Category),
                UserId      = userId,
                Price       = announcementInputModel.Price,
            };

            await this.announcementRepository.AddAsync(announcement);

            await this.announcementRepository.SaveChangesAsync();

            return(announcement.Id);
        }
コード例 #11
0
        public async Task <IActionResult> Create(AnnouncementInputModel announcementInputModel)
        {
            if (!this.ModelState.IsValid)
            {
                var categories = this.categoriesService.GetAll <AnnouncementCategoriesView>();

                var createModel = new CreateModel()
                {
                    Categories   = categories,
                    Announcement = announcementInputModel,
                };

                return(this.View("GetCreateView", createModel));
            }

            var user = await this.userManager.GetUserAsync(this.User);

            var id = await this.announcementService.CreateAsync(announcementInputModel, user.Id);

            return(this.RedirectToAction("GetDetails", new { id = id }));
        }
コード例 #12
0
        public void Add_Announcement_Should_Add_Announcement()
        {
            //arrange

            var user = new FanFictionUser
            {
                Id       = "userId",
                Nickname = "AnotherUser",
                UserName = "******",
            };

            var announcements = new[]
            {
                new Announcement
                {
                    Author     = user,
                    AuthorId   = user.Id,
                    Content    = "SomeAnnouncement1",
                    Id         = 4,
                    PublshedOn = DateTime.Now
                },
                new Announcement
                {
                    Author     = user,
                    AuthorId   = user.Id,
                    Content    = "SomeAnnouncement2",
                    Id         = 2,
                    PublshedOn = DateTime.Now
                },
                new Announcement
                {
                    Author     = user,
                    AuthorId   = user.Id,
                    Content    = "SomeAnnouncement3",
                    Id         = 3,
                    PublshedOn = DateTime.Now
                },
            };

            this.userManager.CreateAsync(user).GetAwaiter();
            this.Context.Announcements.AddRange(announcements);
            this.Context.SaveChanges();

            //act

            var newAnounce = new AnnouncementInputModel
            {
                Author  = user.UserName,
                Content = "NewAnnouncement"
            };

            this.adminService.AddAnnouncement(newAnounce);

            var modelCompare = new Announcement
            {
                Author     = user,
                AuthorId   = user.Id,
                Content    = newAnounce.Content,
                Id         = 1,
                PublshedOn = DateTime.Now
            };
            //assert
            // again id to 1 because by default inmemory dont keep reference and add from 1!
            int id      = 1;
            var anounce = this.Context.Announcements.Find(id);

            anounce.Should().NotBeNull().And.BeEquivalentTo(modelCompare, options => options.Excluding(x => x.PublshedOn));
        }