Example #1
0
        public async Task <ActionResult <BrainstormSession> > CreateActionResult([FromBody] NewIdeaModel model)
        {
            if (!ModelState.IsValid)
            {
                Logger.Error($"Passed model is not valid: {model}");
                return(BadRequest(ModelState));
            }

            var session = await _sessionRepository.GetByIdAsync(model.SessionId);

            if (session == null)
            {
                return(NotFound(model.SessionId));
            }

            var idea = new Idea()
            {
                DateCreated = DateTimeOffset.Now,
                Description = model.Description,
                Name        = model.Name
            };

            session.AddIdea(idea);

            await _sessionRepository.UpdateAsync(session);

            return(CreatedAtAction(nameof(CreateActionResult), new { id = session.Id }, session));
        }
Example #2
0
        public async Task <IActionResult> Create([FromBody] NewIdeaModel model)
        {
            if (!ModelState.IsValid)
            {
                Logger.Error($"Passed model is not valid: {model}");
                return(BadRequest(ModelState));
            }

            var session = await _sessionRepository.GetByIdAsync(model.SessionId);

            if (session == null)
            {
                Logger.Warn($"Session with id: {model.SessionId} is not found");
                return(NotFound(model.SessionId));
            }

            var idea = new Idea()
            {
                DateCreated = DateTimeOffset.Now,
                Description = model.Description,
                Name        = model.Name
            };

            session.AddIdea(idea);

            await _sessionRepository.UpdateAsync(session);

            return(Ok(session));
        }
        public async Task CreateActionResult_ReturnsNotFoundObjectResultForNonexistentSession()
        {
            // Arrange
            var    nonExistentSessionId = 999;
            string testName             = "test name";
            string testDescription      = "test description";
            var    mockRepo             = new Mock <IBrainstormSessionRepository>();
            var    controller           = new IdeasController(mockRepo.Object);

            var newIdea = new NewIdeaModel()
            {
                Description = testDescription,
                Name        = testName,
                SessionId   = nonExistentSessionId
            };

            // Act
            var result = await controller.CreateActionResult(newIdea);

            // Assert
            Assert.That(result, Is.TypeOf <ActionResult <BrainstormSession> >());
            var actionResult = result as ActionResult <BrainstormSession>;

            Assert.That(actionResult.Result, Is.TypeOf <NotFoundObjectResult>());
        }
Example #4
0
        public async Task <ActionResult <BrainstormSession> > CreateActionResult([FromBody] NewIdeaModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (!this.ModelState.IsValid)
            {
                Logger.Log.Error($"Modelstate in method {nameof(this.CreateActionResult)} has {this.ModelState.ErrorCount} errors");
                return(this.BadRequest(this.ModelState));
            }

            var session = await this.sessionRepository.GetByIdAsync(model.SessionId);

            if (session == null)
            {
                return(this.NotFound(model.SessionId));
            }

            var idea = new Idea()
            {
                DateCreated = DateTimeOffset.Now,
                Description = model.Description,
                Name        = model.Name,
            };

            session.AddIdea(idea);

            await this.sessionRepository.UpdateAsync(session);

            return(this.CreatedAtAction(nameof(this.CreateActionResult), new { id = session.Id }, session));
        }
Example #5
0
        public async Task <IActionResult> Create([FromBody] NewIdeaModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var session = await this.sessionRepository.GetByIdAsync(model.SessionId);

            if (session == null)
            {
                return(this.NotFound(model.SessionId));
            }

            var idea = new Idea()
            {
                DateCreated = DateTimeOffset.Now,
                Description = model.Description,
                Name        = model.Name,
            };

            session.AddIdea(idea);

            await this.sessionRepository.UpdateAsync(session);

            return(this.Ok(session));
        }
        public async Task <IActionResult> Create([FromBody] NewIdeaModel model)
        {
            if (_validator.IsValid(model) == false)
            {
                return(BadRequest(ModelState));
            }

            var session = await _sessionRepository.GetByIdAsync(model.SessionId);

            if (session == null)
            {
                return(NotFound(model.SessionId));
            }

            var idea = new Idea()
            {
                DateCreated = DateTimeOffset.Now,
                Description = model.Description,
                Name        = model.Name
            };

            session.AddIdea(idea);

            await _sessionRepository.UpdateAsync(session);

            return(Ok(session));
        }
Example #7
0
        public void CreateReturnsNewlyCreatedIdeaForSession()
        {
            var    mockRepo        = new Mock <IBrainstormSessionRepository>();
            int    testSessionId   = 123;
            string testName        = "test name";
            string testDescription = "test description";
            var    testSession     = GetTestSession();

            mockRepo.Setup(r => r.GetById(testSessionId)).Returns(testSession);
            var controller = new IdeasController(mockRepo.Object);

            var newIdea = new NewIdeaModel()
            {
                Description = testDescription,
                Name        = testName,
                SessionId   = testSessionId
            };

            mockRepo.Setup(r => r.Update(testSession)).Verifiable();

            var result        = Assert.IsType <HttpOkObjectResult>(controller.Create(newIdea));
            var returnSession = Assert.IsType <BrainstormSession>(result.Value);

            mockRepo.Verify();
            Assert.Equal(2, returnSession.Ideas.Count());
            Assert.Equal(testName, returnSession.Ideas.LastOrDefault().Name);
            Assert.Equal(testDescription, returnSession.Ideas.LastOrDefault().Description);
        }
Example #8
0
        public async Task <IActionResult> Create([FromBody] NewIdeaModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var session = await _sessionRepository.GetByIdAsync(model.SessionId);

            if (session == null)
            {
                if (Logger.useLogs)
                {
                    Logger.Log.Error("Session not found");
                }
                return(NotFound(model.SessionId));
            }

            var idea = new Idea()
            {
                DateCreated = DateTimeOffset.Now,
                Description = model.Description,
                Name        = model.Name
            };

            session.AddIdea(idea);

            Logger.Log.Debug($"idea.DateCreated: {idea.DateCreated} idea.Name: {idea.Name} idea.Id: {idea.Id}");

            await _sessionRepository.UpdateAsync(session);

            return(Ok(session));
        }
Example #9
0
        public async Task Create_ReturnNewCreatedIdeaForSession()
        {
            int    testSessionId   = 123;
            string testName        = "test name";
            string testDescription = "test description";
            var    testSession     = GetTestSession();
            var    mockRepo        = new Mock <IBrainstormSessionRepository>();

            mockRepo.Setup(repo => repo.GetByIdAsync(testSessionId))
            .ReturnsAsync(testSession);
            var controller = new IdeasController(mockRepo.Object);

            var newIdea = new NewIdeaModel()
            {
                Description = testDescription,
                Name        = testName,
                SessionId   = testSessionId
            };

            mockRepo.Setup(x => x.UpdateAsync(testSession))
            .Returns(Task.CompletedTask)
            .Verifiable();

            var result = await controller.CreateActionResult(newIdea);

            var actionResult         = Assert.IsType <ActionResult <BrainstormSession> >(result);
            var createAtActionResult = Assert.IsType <CreatedAtActionResult>(actionResult.Result);
            var returnValue          = Assert.IsType <BrainstormSession>(createAtActionResult.Value);

            mockRepo.Verify();
            Assert.Equal(2, returnValue.Ideas.Count);
            Assert.Equal(testName, returnValue.Ideas.LastOrDefault().Name);
            Assert.Equal(testDescription, returnValue.Ideas.LastOrDefault().Description);
        }
Example #10
0
        public async Task <IActionResult> Remove(int ideaId, [FromBody] NewIdeaModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var session = await _sessionRepository.GetByIdAsync(model.SessionId);

            if (session == null)
            {
                return(NotFound(model.SessionId));
            }

            var idea = session.Ideas.Find(i => i.Id.Equals(ideaId));

            if (idea == null)
            {
                return(NotFound(ideaId));
            }

            session.Ideas.Remove(idea);

            await _sessionRepository.UpdateAsync(session);

            return(Ok(session));
        }
        public async Task CreateActionResult_ReturnsNewlyCreatedIdeaForSession()
        {
            // Arrange
            int    testSessionId   = 123;
            string testName        = "test name";
            string testDescription = "test description";
            var    testSession     = GetTestSession();
            var    mockRepo        = new Mock <IBrainstormSessionRepository>();

            mockRepo.Setup(repo => repo.GetByIdAsync(testSessionId))
            .ReturnsAsync(testSession);
            var controller = new IdeasController(mockRepo.Object);

            var newIdea = new NewIdeaModel()
            {
                Description = testDescription,
                Name        = testName,
                SessionId   = testSessionId
            };

            mockRepo.Setup(repo => repo.UpdateAsync(testSession))
            .Returns(Task.CompletedTask)
            .Verifiable();

            // Act
            var result = await controller.CreateActionResult(newIdea);

            // Assert
            Assert.That(result, Is.TypeOf <ActionResult <BrainstormSession> >());
            var actionResult = result as ActionResult <BrainstormSession>;

            Assert.That(actionResult.Result, Is.TypeOf <CreatedAtActionResult>());
            var createdAtActionResult = actionResult.Result as CreatedAtActionResult;

            Assert.That(createdAtActionResult.Value, Is.TypeOf <BrainstormSession>());
            var returnValue = createdAtActionResult.Value as BrainstormSession;

            mockRepo.Verify();
            Assert.AreEqual(2, returnValue.Ideas.Count());
            Assert.AreEqual(testName, returnValue.Ideas.LastOrDefault().Name);
            Assert.AreEqual(testDescription, returnValue.Ideas.LastOrDefault().Description);
        }
Example #12
0
        public async Task Create_ReturnsNewlyCreatedIdeaForSession()
        {
            // Arrange
            int    testSessionId   = 123;
            string testName        = "test name";
            string testDescription = "test description";
            var    testSession     = GetTestSession();
            var    mockRepo        = new Mock <IBrainstormSessionRepository>();

            mockRepo.Setup(repo => repo.GetByIdAsync(testSessionId))
            .ReturnsAsync(testSession);
            var controller = new IdeasController(mockRepo.Object);

            var newIdea = new NewIdeaModel()
            {
                Description = testDescription,
                Name        = testName,
                SessionId   = testSessionId
            };

            mockRepo.Setup(repo => repo.UpdateAsync(testSession))
            .Returns(Task.CompletedTask)
            .Verifiable();

            // Act
            var result = await controller.Create(newIdea);

            // Assert
            //var okResult = Assert.IsType<OkObjectResult>(result); xUnit
            Assert.That(result, Is.TypeOf <OkObjectResult>()); //of Assert.IsInstanceOf<OkObjectResult>(result); Nunit
            var okResult = result as OkObjectResult;

            //var returnSession = Assert.IsType<BrainstormSession>(okResult.Value); xUnit
            Assert.That(okResult.Value, Is.TypeOf <BrainstormSession>());//of Assert.IsInstanceOf<....
            var returnSession = okResult.Value as BrainstormSession;

            mockRepo.Verify();
            Assert.AreEqual(2, returnSession.Ideas.Count());
            Assert.AreEqual(testName, returnSession.Ideas.LastOrDefault().Name);
            Assert.AreEqual(testDescription, returnSession.Ideas.LastOrDefault().Description);
        }
Example #13
0
        public IActionResult Create([FromBody] NewIdeaModel model)
        {
            if (!ModelState.IsValid)
            {
                return(new BadRequestObjectResult(ModelState));
            }
            var session = _sessionRepository.GetById(model.SessionId);

            if (session == null)
            {
                return(HttpNotFound(model.SessionId));
            }
            var idea = new Idea()
            {
                DateCreated = DateTime.Now,
                Description = model.Description,
                Name        = model.Name
            };

            session.AddIdea(idea);
            _sessionRepository.Update(session);
            return(new ObjectResult(session));
        }