public void GroupAsNewArea_We_Create_Gets_Into_Our_HistoryGroups() { // arrange var userId = Guid.NewGuid(); var dbUser = new User() { Id = userId, AutomaticSubscriptionSettings = null }; var newAreaId = Guid.NewGuid(); var newArea = new Area() { Id = newAreaId, Latitude = 10, Longitude = 10, Radius = RadiusRangeEnum.FiftyMeters }; var populatedDatabase = new FakeLikkleDbContext() { Users = new FakeDbSet <User>() { dbUser }, Areas = new FakeDbSet <Area>() { newArea } } .Seed(); this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase)); this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase)); this._mockedLikkleUoW.Setup(uow => uow.TagRepository).Returns(new TagRepository(populatedDatabase)); this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase)); var newGroupRequest = new GroupAsNewAreaRequestDto() { Name = "New group", TagIds = new List <Guid>() { Guid.Parse("caf77dee-a94f-49cb-b51f-e0c0e1067541"), Guid.Parse("bd456f08-f137-4382-8358-d52772c2dfc8") }, Radius = RadiusRangeEnum.FiveHundredMeters, UserId = userId, Latitude = 10, Longitude = 10 }; // act var newGroupId = this._groupService.InserGroupAsNewArea(newGroupRequest); // assert var user = this._mockedLikkleUoW.Object.UserRepository.GetUserById(userId); Assert.IsNotNull(user.HistoryGroups); Assert.IsTrue(user.HistoryGroups.Select(hg => hg.GroupId).Contains(newGroupId)); }
public void We_Can_Insert_Grou_As_New_Area() { // arrange var userId = Guid.NewGuid(); var dbUser = new User() { Id = userId, AutomaticSubscriptionSettings = null }; var populatedDatabase = new FakeLikkleDbContext() { Users = new FakeDbSet <User>() { dbUser } } .Seed(); this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase)); this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase)); this._mockedLikkleUoW.Setup(uow => uow.TagRepository).Returns(new TagRepository(populatedDatabase)); this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase)); var newGroupRequest = new GroupAsNewAreaRequestDto() { Longitude = 10, Latitude = 10, Name = "Group 1", Radius = RadiusRangeEnum.FiftyMeters, TagIds = new List <Guid>() { Guid.Parse("caf77dee-a94f-49cb-b51f-e0c0e1067541"), Guid.Parse("bd456f08-f137-4382-8358-d52772c2dfc8") }, UserId = userId }; var allAreasCount = this._areaService.GetAllAreas().Count(); Assert.AreEqual(allAreasCount, 0); // act var newGroupId = this._groupService.InserGroupAsNewArea(newGroupRequest); // assert allAreasCount = this._areaService.GetAllAreas().Count(); Assert.AreNotEqual(newGroupId, Guid.Empty); Assert.AreEqual(allAreasCount, 1); var newlyCreatedGroup = this._groupService.GetGroupById(newGroupId); Assert.IsNotNull(newlyCreatedGroup); }
public async Task <IHttpActionResult> Post([FromBody] GroupAsNewAreaRequestDto newGroup) { // TODO: Validate if really the passed groups belong to the passed coordinates if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { var newlyCreatedGroupId = await Task.FromResult(this._groupService.InserGroupAsNewArea(newGroup)); return(Created("api/v1/groups/" + newlyCreatedGroupId, "Success")); } catch (Exception ex) { var errorMessage = _apiLogger.OnActionException(ActionContext, ex); return(InternalServerError(new HttpException(errorMessage))); } }
public Guid InserGroupAsNewArea(GroupAsNewAreaRequestDto newGroup) { // 1. Add new area var areaEntity = new Area() { Latitude = newGroup.Latitude, Longitude = newGroup.Longitude, Radius = newGroup.Radius, IsActive = true }; areaEntity.ApproximateAddress = this._geoCodingManager.GetApproximateAddress(new NewAreaRequest() { Latitude = newGroup.Latitude, Longitude = newGroup.Longitude }); var newAreaId = this._unitOfWork.AreaRepository.InsertArea(areaEntity); this._unitOfWork.AreaRepository.Save(); // 2. Add new group var newGroupEntity = this._mapper.Map <GroupAsNewAreaRequestDto, Group>(newGroup); this.AssignBaseGroupInfo(newGroup, newGroupEntity); var newlyCreatedArea = this._unitOfWork.AreaRepository.GetAreaById(newAreaId); newGroupEntity.Areas.Add(newlyCreatedArea); this._unitOfWork.GroupRepository.InsertGroup(newGroupEntity); this._unitOfWork.GroupRepository.Save(); return(newGroupEntity.Id); }