예제 #1
0
        protected async Task <AnnouncementResponse> CreateAnnouncementAsync(
            CreateAnnouncementDto createAnnouncementDto)
        {
            var res = await TestClient.PostAsJsonAsync(ApiRoutes.Announcements.Create, createAnnouncementDto);

            return(await res.Content.ReadAsAsync <AnnouncementResponse>());
        }
        public async Task Create_ReturnsOk_WhenCreated()
        {
            //Arrange
            await AuthenticateAsync();
            await LoginAsync();

            var createdAnnouncement = new CreateAnnouncementDto
            {
                Name        = "Announcement To Report",
                Type        = "Other",
                Description = "Report",
                Image       = null
            };

            var announcementResponse = await TestClient.PostAsJsonAsync(
                ApiRoutes.Announcements.Create, createdAnnouncement);

            var announcementContent = await announcementResponse.Content.ReadAsAsync <AnnouncementResponse>();

            //Act
            var response = await TestClient.PostAsJsonAsync(
                ApiRoutes.Reports.Create.Replace("{announcementId}",
                                                 announcementContent.Id.ToString()), new CreateReportDto
            {
                ReportCause       = "Test",
                ReportDescription = "Test",
            });

            var content = await response.Content.ReadAsAsync <ReportResponse>();

            //Assert
            response.StatusCode.Should().Be(HttpStatusCode.Created);
            content.Should().NotBeNull();
            content.Should().BeOfType <ReportResponse>();
        }
        public async Task <IActionResult> Create([FromBody] CreateAnnouncementDto announcementDto)
        {
            int userId;

            try
            {
                userId = HttpContext.GetUserId();
            }
            catch (ArgumentNullException)
            {
                return(Unauthorized());
            }

            var announcement = new Announcement
            {
                Name        = announcementDto.Name,
                Type        = (AnnouncementType)Enum.Parse(typeof(AnnouncementType), announcementDto.Type),
                Description = announcementDto.Description,
                Image       = announcementDto.Image,
                CreatedAt   = DateTime.UtcNow,
                UserId      = userId
            };

            await _announcementRepository.CreateAsync(announcement);

            //https://localhost:5001 in this case
            var baseUrl     = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}";
            var locationUri = baseUrl + ApiRoutes.Announcements.Get.Replace("{id}", announcement.Id.ToString());
            var response    = new AnnouncementResponse {
                Id = announcement.Id
            };

            //201 - Created
            return(Created(locationUri, response));
        }
예제 #4
0
        public async Task Create_ReturnsOk_WhenCreatedSuccessfully()
        {
            //Arrange
            await AuthenticateAsync();
            await LoginAsync(); //Adds token

            var createdAnnouncement = new CreateAnnouncementDto
            {
                Name        = "Create Integration Test",
                Type        = "Sale",
                Description = "Create Integration Test Description",
                Image       = null
            };

            //Act
            var response = await TestClient.PostAsJsonAsync(
                ApiRoutes.Announcements.Create, createdAnnouncement);

            var content = await response.Content.ReadAsAsync <AnnouncementResponse>();

            //Assert
            response.StatusCode.Should().Be(HttpStatusCode.Created);
            content.Should().NotBeNull();
            content.Should().BeOfType <AnnouncementResponse>();
        }
        public async Task Get_ReturnsOk_WhenAdminLoggedIn()
        {
            //Arrange
            await LoginAsAdminAsync();

            var createdAnnouncement = new CreateAnnouncementDto
            {
                Name        = "Announcement To Report",
                Type        = "Other",
                Description = "Report",
                Image       = null
            };

            var announcementResponse = await TestClient.PostAsJsonAsync(
                ApiRoutes.Announcements.Create, createdAnnouncement);

            var announcementContent = await announcementResponse.Content.ReadAsAsync <AnnouncementResponse>();

            int announcementId = announcementContent.Id;

            var createdReport = new CreateReportDto
            {
                ReportCause       = "Test",
                ReportDescription = "Test",
            };

            var reportResponse = await TestClient.PostAsJsonAsync(
                ApiRoutes.Reports.Create.Replace("{announcementId}",
                                                 announcementId.ToString()), createdReport);

            var reportResponseContent =
                await reportResponse.Content.ReadAsAsync <ReportResponse>();

            //Act
            var response = await TestClient.GetAsync(
                ApiRoutes.Reports.Get.Replace(
                    "{reportId}", reportResponseContent.Id.ToString()));

            var content = await response.Content.ReadAsAsync <Report>();

            //Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            content.Should().NotBeNull();
            content.ReportCause.Should().Be("Test");
            content.ReportDescription.Should().Be("Test");
        }
예제 #6
0
        public async Task <IActionResult> PutAnnouncement([FromRoute] Guid id, [FromBody] CreateAnnouncementDto createAnnouncementDto)
        {
            switch (createAnnouncementDto.Type)
            {
            case "info":
                break;

            case "warning":
                break;

            case "danger":
                break;

            case "primary":
                break;

            case "secondary":
                break;

            default:
                return(BadRequest());
            }

            try
            {
                var announcement = await _announcementService.GetByIdAsync(id);

                announcement.Subject = createAnnouncementDto.Subject;
                announcement.Type    = createAnnouncementDto.Type;

                await _announcementService.SaveAllAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!await _announcementService.GetIfExistsByIdAsync(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #7
0
        public async Task Create_ReturnsUnauthorized_WhenNotLoggedIn()
        {
            //Arrange
            var createdAnnouncement = new CreateAnnouncementDto
            {
                Name        = "Not logged in test",
                Type        = "Other",
                Description = "Not logged in test description",
                Image       = null
            };

            //Act
            var response = await TestClient.PostAsJsonAsync(
                ApiRoutes.Announcements.Create, createdAnnouncement);

            //Assert
            response.StatusCode.Should().Be(HttpStatusCode.Unauthorized);
        }
예제 #8
0
        public async Task <IActionResult> OnPostAsync()
        {
            var createdAnnouncement = new CreateAnnouncementDto
            {
                Name        = Name,
                Type        = Type.ToString(),
                Description = Description,
                Image       = null
            };

            if (ImageFile != null)
            {
                //Checking AllowedImageExtensions attribute error message
                if (!ModelState.IsValid)
                {
                    return(Page());
                }

                MemoryStream ms = new MemoryStream();
                await ImageFile.CopyToAsync(ms);

                createdAnnouncement.Image = ms.ToArray();

                ms.Close();
                ms.Dispose();
            }

            var success = await _announcementClient.CreateAnnouncementAsync(createdAnnouncement);

            if (!success)
            {
                ModelState.AddModelError("UnknownError", "Something went wrong creating the announcement...");
                return(Page());
            }
            return(RedirectToPage("/Index"));
        }
예제 #9
0
        public async Task <ActionResult <Announcement> > PostAnnouncement(CreateAnnouncementDto createAnnouncementDto)
        {
            switch (createAnnouncementDto.Type)
            {
            case "info":
                break;

            case "warning":
                break;

            case "danger":
                break;

            case "primary":
                break;

            case "secondary":
                break;

            default:
                return(BadRequest());
            }

            var announcement = new Announcement
            {
                Subject = createAnnouncementDto.Subject,
                Type    = createAnnouncementDto.Type,
                Author  = await _userManager.GetUserAsync(User)
            };

            var result = await _announcementService.AddAsync(announcement);

            await _announcementService.SaveAllAsync();

            return(Ok(new { result.Entity.Id, userName = result.Entity.Author.UserName, result.Entity.Subject, result.Entity.Type, result.Entity.CreatedAt }));
        }
예제 #10
0
        public async Task <bool> CreateAnnouncementAsync(CreateAnnouncementDto announcement)
        {
            var response = await _httpClient.PostAsJsonAsync(ApiRoutes.Announcements.Create, announcement);

            return(response.IsSuccessStatusCode);
        }