Exemple #1
0
        public SubscriptionSettingsServiceTests()
        {
            var fakeDbContext = new FakeLikkleDbContext().Seed();

            this._mockedLikkleUoW = new Mock <ILikkleUoW>();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository)
            .Returns(new AreaRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.UserRepository)
            .Returns(new UserRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository)
            .Returns(new GroupRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.TagRepository)
            .Returns(new TagRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.LanguageRepository)
            .Returns(new LanguageRepository(fakeDbContext));

            this._mockedConfigurationProvider = new Mock <IConfigurationProvider>();

            this._subscriptionSettingsService = new SubscriptionSettingsService(
                this._mockedLikkleUoW.Object,
                this._mockedConfigurationProvider.Object);
        }
        public void StandaloneGroup_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 StandaloneGroupRequestDto()
            {
                Name   = "New group",
                TagIds = new List <Guid>()
                {
                    Guid.Parse("caf77dee-a94f-49cb-b51f-e0c0e1067541"), Guid.Parse("bd456f08-f137-4382-8358-d52772c2dfc8")
                },
                AreaIds = new List <Guid>()
                {
                    newAreaId
                },
                UserId = userId
            };

            // act
            var newGroupId = this._groupService.InsertNewGroup(newGroupRequest);

            // assert
            var user = this._mockedLikkleUoW.Object.UserRepository.GetUserById(userId);

            Assert.IsNotNull(user.HistoryGroups);
            Assert.IsTrue(user.HistoryGroups.Select(hg => hg.GroupId).Contains(newGroupId));
        }
Exemple #3
0
        public void We_Can_Get_User_By_StsId()
        {
            // arrange
            var idsrvUniqueId = Guid.NewGuid().ToString();
            var firstUser     = new User()
            {
                Id            = Guid.NewGuid(),
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = idsrvUniqueId,
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSetting()
                {
                    AutomaticallySubscribeToAllGroups        = false,
                    AutomaticallySubscribeToAllGroupsWithTag = false
                }
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Users = new FakeDbSet <User>()
                {
                    firstUser
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var user = this._userService.GetUserByStsId(idsrvUniqueId);

            // assert
            Assert.IsNotNull(user);
        }
Exemple #4
0
        public UserServiceTests()
        {
            var fakeDbContext = new FakeLikkleDbContext().Seed();

            this._mockedLikkleUoW = new Mock <ILikkleUoW>();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository)
            .Returns(new AreaRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.UserRepository)
            .Returns(new UserRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository)
            .Returns(new GroupRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.TagRepository)
            .Returns(new TagRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.LanguageRepository)
            .Returns(new LanguageRepository(fakeDbContext));

            this._accelometerAlgorithmHelperService = new Mock <IAccelometerAlgorithmHelperService>();
            this._accelometerAlgorithmHelperService.Setup(
                a => a.SecondsToClosestBoundary(It.IsAny <double>(), It.IsAny <double>())).Returns(32.5);

            this._subscriptionSettingsServiceMock = new Mock <ISubscriptionSettingsService>();

            this._mockedConfigurationProvider = new Mock <IConfigurationProvider>();

            var mapConfiguration = new MapperConfiguration(cfg => {
                cfg.AddProfile <EntitiesMappingProfile>();
            });

            this._mockedConfigurationProvider.Setup(mc => mc.CreateMapper()).Returns(mapConfiguration.CreateMapper);

            this._subscriptionSettingsService = new SubscriptionSettingsService(
                this._mockedLikkleUoW.Object,
                this._mockedConfigurationProvider.Object);

            this._configurationWrapperMock = new Mock <IConfigurationWrapper>();

            // Only this call to the mocked service returns the actual result but not mocked one.
            this._subscriptionSettingsServiceMock
            .Setup(ss => ss.GroupsForUserAroundCoordinatesBasedOnUserSettings(It.IsAny <Guid>(), It.IsAny <double>(), It.IsAny <double>()))
            .Returns((Guid userId, double lat, double lon) => this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, lat, lon));


            this._userService = new UserService(
                this._mockedLikkleUoW.Object,
                this._mockedConfigurationProvider.Object,
                this._configurationWrapperMock.Object,
                this._accelometerAlgorithmHelperService.Object,
                this._subscriptionSettingsServiceMock.Object);

            this._subscriptionService = new SubscriptionService(
                this._mockedLikkleUoW.Object,
                this._mockedConfigurationProvider.Object,
                this._configurationWrapperMock.Object);
        }
Exemple #5
0
 public static void SetupAreaUserAndGroupRepositories(
     Mock <ILikkleUoW> uowMock,
     FakeLikkleDbContext fakeContext)
 {
     uowMock.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(fakeContext));
     uowMock.Setup(uow => uow.UserRepository).Returns(new UserRepository(fakeContext));
     uowMock.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(fakeContext));
 }
Exemple #6
0
        public void We_Can_Get_Areas_Inside_Of_Which_We_Are()
        {
            // arrange
            var firstAreaId = Guid.NewGuid();
            var firstArea   = new Area()
            {
                Id        = firstAreaId,
                Latitude  = 10,
                Longitude = 10,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = true
            };

            var secondAreaId = Guid.NewGuid();
            var secondArea   = new Area()
            {
                Id        = secondAreaId,
                Latitude  = 10,
                Longitude = 10,
                Radius    = RadiusRangeEnum.ThreeHundredMeters,
                IsActive  = true
            };

            var thirdAreaId = Guid.NewGuid();
            var thirdArea   = new Area()
            {
                Id        = thirdAreaId,
                Latitude  = 50,
                Longitude = 50,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = true
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Areas = new FakeDbSet <Area>()
                {
                    firstArea, secondArea, thirdArea
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));

            // act
            var areasWhereWeFallIn = this._areaService.GetAreas(10, 10);

            // assert
            Assert.IsNotNull(areasWhereWeFallIn);
            Assert.AreEqual(areasWhereWeFallIn.Count(), 2);

            var areaIds = areasWhereWeFallIn.Select(a => a.Id);

            Assert.IsTrue(areaIds.Contains(firstAreaId));
            Assert.IsTrue(areaIds.Contains(secondAreaId));
            Assert.IsFalse(areaIds.Contains(thirdAreaId));
        }
Exemple #7
0
        public void We_Can_Get_Areas_In_A_Radius_Of_Certain_Point()
        {
            // arrange
            var firstAreaId = Guid.NewGuid();
            var firstArea   = new Area()
            {
                Id        = firstAreaId,
                Latitude  = 10,
                Longitude = 10,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = true
            };

            var secondAreaId = Guid.NewGuid();
            var secondArea   = new Area()
            {
                Id        = secondAreaId,
                Latitude  = 10.000001,
                Longitude = 10.000001,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = true
            };

            var thirdAreaId = Guid.NewGuid();
            var thirdArea   = new Area()
            {
                Id        = thirdAreaId,
                Latitude  = 42,
                Longitude = 42,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = true
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Areas = new FakeDbSet <Area>()
                {
                    firstArea, secondArea, thirdArea
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));

            // act
            var areasAroundCoordinatesInRadius = this._areaService.GetAreas(10, 10, 10);

            // assert
            Assert.IsNotNull(areasAroundCoordinatesInRadius);
            Assert.AreEqual(areasAroundCoordinatesInRadius.Count(), 2);

            var areaIds = areasAroundCoordinatesInRadius.Select(a => a.Id);

            Assert.IsTrue(areaIds.Contains(firstAreaId));
            Assert.IsTrue(areaIds.Contains(secondAreaId));
            Assert.IsFalse(areaIds.Contains(thirdAreaId));
        }
Exemple #8
0
        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 AccelometerAlgorithmHelperServiceTests()
        {
            var fakeDbContext = new FakeLikkleDbContext().Seed();

            this._mockedLikkleUoW          = new Mock <ILikkleUoW>();
            this._configurationWrapperMock = new Mock <IConfigurationWrapper>();
            this._configurationWrapperMock.Setup(x => x.PersonWalkingSpeedInKmh).Returns(5);

            this._accelometerAlgorithmHelperService = new AccelometerAlgorithmHelperService(
                this._mockedLikkleUoW.Object,
                this._configurationWrapperMock.Object);
        }
Exemple #10
0
        public void We_Can_Fetch_All_Users_From_Group()
        {
            // arrange
            var firstUserId = Guid.NewGuid();
            var firstUser   = new User()
            {
                Id            = firstUserId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var secondUserId = Guid.NewGuid();
            var secondUser   = new User()
            {
                Id            = secondUserId,
                FirstName     = "Other",
                LastName      = "Name",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var groupId = Guid.NewGuid();
            var group   = new Group()
            {
                Id = groupId, Name = "Group", Users = new List <User>()
                {
                    firstUser, secondUser
                }
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    group
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));

            // act
            var allUsersInGroup = this._groupService.GetUsersFromGroup(groupId);

            // assert
            Assert.IsNotNull(allUsersInGroup);
            Assert.AreEqual(allUsersInGroup.Count(), 2);
        }
Exemple #11
0
        public AreaServiceTests()
        {
            var fakeDbContext = new FakeLikkleDbContext().Seed();

            this._mockedLikkleUoW = new Mock <ILikkleUoW>();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository)
            .Returns(new AreaRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.UserRepository)
            .Returns(new UserRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository)
            .Returns(new GroupRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.TagRepository)
            .Returns(new TagRepository(fakeDbContext));

            this._mockedLikkleUoW.Setup(uow => uow.LanguageRepository)
            .Returns(new LanguageRepository(fakeDbContext));

            this._mockedConfigurationProvider = new Mock <IConfigurationProvider>();

            _geoCodingManagerMock = new Mock <IGeoCodingManager>();
            _geoCodingManagerMock.Setup(gcm => gcm.GetApproximateAddress(It.IsAny <NewAreaRequest>()))
            .Returns(Guid.NewGuid().ToString);

            var mapConfiguration = new MapperConfiguration(cfg => {
                cfg.AddProfile <EntitiesMappingProfile>();
            });

            this._mockedConfigurationProvider.Setup(mc => mc.CreateMapper()).Returns(mapConfiguration.CreateMapper);

            this._configurationWrapperMock = new Mock <IConfigurationWrapper>();

            this._areaService = new AreaService(
                this._mockedLikkleUoW.Object,
                this._mockedConfigurationProvider.Object,
                this._configurationWrapperMock.Object,
                this._geoCodingManagerMock.Object);

            this._groupService = new GroupService(
                this._mockedLikkleUoW.Object,
                this._mockedConfigurationProvider.Object,
                this._configurationWrapperMock.Object,
                this._geoCodingManagerMock.Object);
        }
Exemple #12
0
        public void We_Get_AutomaticallyGroupAsNewArea_Response_When_Never_Created_Or_Subscribed_Group_Here()
        {
            // 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,
                IsActive  = true
            };

            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));

            // act
            var result = this._groupService.GetGroupCreationType(20, 20, userId);

            // assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.CreationType, CreateGroupActionTypeEnum.AutomaticallyGroupAsNewArea);
        }
Exemple #13
0
        public void We_Can_Get_All_Users()
        {
            // arrange
            var firstUserId = Guid.NewGuid();
            var firstUser   = new User()
            {
                Id            = firstUserId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var secondUserId = Guid.NewGuid();
            var secondUser   = new User()
            {
                Id            = secondUserId,
                FirstName     = "Other",
                LastName      = "Name",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Users = new FakeDbSet <User>()
                {
                    firstUser, secondUser
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var users = this._userService.GetAllUsers();

            // assert
            Assert.IsNotNull(users);
            Assert.IsTrue(users.Count() == 2);
        }
        public void We_Can_Get_Seconds_To_Closest_Boundary()
        {
            // arrange
            var smallAreaId = Guid.NewGuid();
            var smallArea   = new Area()
            {
                Id        = smallAreaId,
                Latitude  = 42.626229,
                Longitude = 23.38143,
                IsActive  = true,
                Radius    = RadiusRangeEnum.FiftyMeters
            };

            var biggerAreaId = Guid.NewGuid();
            var biggerArea   = new Area()
            {
                Id        = biggerAreaId,
                Latitude  = 42.62523,
                Longitude = 23.381371,
                IsActive  = true,
                Radius    = RadiusRangeEnum.FiveHundredMeters
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Areas = new FakeDbSet <Area>()
                {
                    smallArea, biggerArea
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));

            // act
            var secondsToClosestBoundary = this._accelometerAlgorithmHelperService.SecondsToClosestBoundary(42.626391, 23.381071);

            // assert
            Assert.AreEqual(11.17049703433503, secondsToClosestBoundary);
        }
Exemple #15
0
        public void Exception_Is_Thrown_When_Trying_To_Update_Not_Existing_Notification()
        {
            // 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));

            // act
            this._userService.UpdateUserAutomaticSubscriptionSettings(userId, null);
        }
Exemple #16
0
        public void HistoryGroups_And_RegularGroups_Are_Correct_When_Updating_Location_With_SubscribeToAllWithTagOption_TurnedOn()
        {
            var allTags = this._mockedLikkleUoW.Object.TagRepository.GetAllTags().ToList();

            // arrange
            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id = userId,
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSetting()
                {
                    AutomaticallySubscribeToAllGroups        = false,
                    AutomaticallySubscribeToAllGroupsWithTag = true,
                    Tags = allTags.Where(t => t.Name == "Sport" || t.Name == "Help").ToList()
                }
            };

            // ================= Area1 (GR1, GR2) ========
            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id       = groupOneId,
                Name     = "Group one",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Animals")
                }
            };

            var groupTwoId = Guid.NewGuid();
            var groupTwo   = new Group()
            {
                Id       = groupTwoId,
                Name     = "Group two",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Sport")
                }
            };

            var areaOneId = Guid.NewGuid();
            var areaOne   = new Area()
            {
                Id        = areaOneId,
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                },
                IsActive = true,
                Radius   = RadiusRangeEnum.FiftyMeters
            };

            groupOne.Areas = new List <Area>()
            {
                areaOne
            };
            groupTwo.Areas = new List <Area>()
            {
                areaOne
            };

            // ================= Area1 (GR1, GR2) ========
            // ================= Area1 (GR3, GR4, GR5) ========
            var groupThreeId = Guid.NewGuid();
            var groupThree   = new Group()
            {
                Id       = groupThreeId,
                Name     = "Group three",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Help"),
                    allTags.FirstOrDefault(t => t.Name == "Sport")
                }
            };

            var groupFourId = Guid.NewGuid();
            var groupFour   = new Group()
            {
                Id       = groupFourId,
                Name     = "Group four",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "University")
                }
            };

            var groupFiveId = Guid.NewGuid();
            var groupFive   = new Group()
            {
                Id       = groupFiveId,
                Name     = "Group five",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Help"),
                    allTags.FirstOrDefault(t => t.Name == "Animals")
                }
            };

            var areaTwoId = Guid.NewGuid();
            var areaTwo   = new Area()
            {
                Id        = areaTwoId,
                Latitude  = 20,
                Longitude = 20,
                Groups    = new List <Group>()
                {
                    groupThree, groupFour, groupFive
                },
                IsActive = true,
                Radius   = RadiusRangeEnum.FiftyMeters
            };

            groupThree.Areas = new List <Area>()
            {
                areaTwo
            };
            groupFour.Areas = new List <Area>()
            {
                areaTwo
            };
            groupFive.Areas = new List <Area>()
            {
                areaTwo
            };
            // ================= Area1 (GR3, GR4, GR5) ========

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo, groupThree, groupFour, groupFive
                },
                Areas = new FakeDbSet <Area>()
                {
                    areaOne, areaTwo
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 10, 10);

            // assert
            Assert.AreEqual(1, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());
            Assert.IsTrue(groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Contains(groupTwoId));

            Assert.IsTrue(user.Groups.Contains(groupTwo));
            Assert.AreEqual(1, user.Groups.Count());

            Assert.IsTrue(user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupTwo.Id));
            Assert.AreEqual(1, user.HistoryGroups.Count());

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 15, 15);

            // assert
            Assert.IsFalse(groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Any());
            Assert.IsFalse(user.Groups.Any());
            Assert.AreEqual(1, user.HistoryGroups.Count());
            Assert.IsTrue(user.HistoryGroups.Select(hgr => hgr.GroupId).Contains(groupTwoId));

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 20, 20);

            // assert
            Assert.AreEqual(2, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());
            Assert.AreEqual(2, user.Groups.Count());
            Assert.IsTrue(user.Groups.Contains(groupThree) && user.Groups.Contains(groupFive));

            Assert.AreEqual(3, user.HistoryGroups.Count());
            Assert.IsTrue(user.HistoryGroups.Select(hgr => hgr.GroupThatWasPreviouslySubscribed).Contains(groupTwo) &&
                          user.HistoryGroups.Select(hgr => hgr.GroupThatWasPreviouslySubscribed).Contains(groupThree) &&
                          user.HistoryGroups.Select(hgr => hgr.GroupThatWasPreviouslySubscribed).Contains(groupFive));

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 25, 25);

            // assert
            Assert.IsFalse(groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Any());

            Assert.AreEqual(0, user.Groups.Count());

            Assert.AreEqual(3, user.HistoryGroups.Count());
            Assert.IsTrue(user.HistoryGroups.Select(hgr => hgr.GroupThatWasPreviouslySubscribed).Contains(groupTwo) &&
                          user.HistoryGroups.Select(hgr => hgr.GroupThatWasPreviouslySubscribed).Contains(groupThree) &&
                          user.HistoryGroups.Select(hgr => hgr.GroupThatWasPreviouslySubscribed).Contains(groupFive));

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 10, 10);

            // assert
            Assert.AreEqual(1, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());

            Assert.AreEqual(1, user.Groups.Count());
            Assert.IsTrue(user.Groups.Contains(groupTwo));

            var histGroups = user.HistoryGroups.Select(hgr => hgr.GroupThatWasPreviouslySubscribed);

            Assert.AreEqual(3, user.HistoryGroups.Count());
            Assert.IsTrue(histGroups.Contains(groupTwo) && histGroups.Contains(groupThree) && histGroups.Contains(groupFive));
        }
Exemple #17
0
        public void HistoryGroups_And_RegularGroups_Are_Correct_When_Updating_Location_With_SubscribeToAllOption_TurnedOn()
        {
            // arrange
            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id            = userId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString(),
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSetting()
                {
                    AutomaticallySubscribeToAllGroups        = true,
                    AutomaticallySubscribeToAllGroupsWithTag = false
                }
            };

            // ================= Area1 (GR1, GR3) ========
            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id       = groupOneId,
                Name     = "Group one",
                IsActive = true
            };

            var groupThreeId = Guid.NewGuid();
            var groupThree   = new Group()
            {
                Id       = groupThreeId,
                Name     = "Group three",
                IsActive = true
            };

            var areaOneId = Guid.NewGuid();
            var areaOne   = new Area()
            {
                Id        = areaOneId,
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupThree
                },
                Radius   = RadiusRangeEnum.FiftyMeters,
                IsActive = true
            };
            // ================= Area1 (GR1, GR3) ========

            // ================= Area2 (GR3) ========
            var groupSixId = Guid.NewGuid();
            var groupSix   = new Group()
            {
                Id       = groupSixId,
                Name     = "Group six",
                IsActive = true
            };

            var areaTwoId = Guid.NewGuid();
            var areaTwo   = new Area()
            {
                Id        = areaTwoId,
                Latitude  = 20,
                Longitude = 20,
                Groups    = new List <Group>()
                {
                    groupSix
                },
                Radius   = RadiusRangeEnum.FiftyMeters,
                IsActive = true
            };

            // ================= Area2 (GR3) ========

            groupOne.Areas = new List <Area>()
            {
                areaOne
            };
            groupThree.Areas = new List <Area>()
            {
                areaOne
            };

            groupSix.Areas = new List <Area>()
            {
                areaTwo
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupThree, groupSix
                },
                Areas = new FakeDbSet <Area>()
                {
                    areaOne, areaTwo
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 10, 10);

            // assert
            Assert.AreEqual(2, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());
            Assert.IsTrue(groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Contains(groupOneId) &&
                          groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Contains(groupThreeId));
            Assert.IsTrue(user.Groups.Contains(groupOne) && user.Groups.Contains(groupThree));
            Assert.IsTrue(user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupOne.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupThree.Id));

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 15, 15);

            // assert
            Assert.AreEqual(0, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());
            Assert.IsFalse(user.Groups.Contains(groupOne) && user.Groups.Contains(groupThree));
            Assert.IsTrue(user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupOne.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupThree.Id));

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 20, 20);

            // assert
            Assert.AreEqual(1, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());
            Assert.IsTrue(groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Contains(groupSixId));
            Assert.IsTrue(user.Groups.Contains(groupSix));
            Assert.IsTrue(user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupOne.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupThree.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupSix.Id));

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 25, 25);

            // assert
            Assert.AreEqual(0, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());
            Assert.IsFalse(user.Groups.Any());
            Assert.IsTrue(user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupOne.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupThree.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupSix.Id));

            // act
            groupsDependingOnUserSettingsAroundCoordinates = this._userService.UpdateUserLocation(userId, 10, 10);

            // assert
            Assert.AreEqual(2, groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Count());
            Assert.IsTrue(groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Contains(groupOneId) &&
                          groupsDependingOnUserSettingsAroundCoordinates.SubscribedGroupIds.Contains(groupThreeId));
            Assert.IsTrue(user.Groups.Contains(groupOne) && user.Groups.Contains(groupThree));
            Assert.IsTrue(user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupOne.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupThree.Id) &&
                          user.HistoryGroups.Select(gr => gr.GroupId).Contains(groupSix.Id));
        }
Exemple #18
0
        public void When_User_Location_Is_Updated_Proper_ResponseDto_IsReturned()
        {
            // arrange
            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id            = userId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString(),
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSetting()
                {
                    AutomaticallySubscribeToAllGroups        = true,
                    AutomaticallySubscribeToAllGroupsWithTag = false
                }
            };

            var groupOneId = Guid.NewGuid();
            var groupTwoId = Guid.NewGuid();

            var groupOne = new Group()
            {
                Id = groupOneId, Name = "GroupOne", IsActive = true, Users = new List <User>()
            };
            var groupTwo = new Group()
            {
                Id = groupTwoId, Name = "GroupTwo", IsActive = true, Users = new List <User>()
            };

            var areaId = Guid.NewGuid();
            var area   = new Area()
            {
                Id        = areaId,
                Latitude  = 10.00000,
                Longitude = 10.00000,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                },
                Radius   = RadiusRangeEnum.FiftyMeters,
                IsActive = true
            };

            groupOne.Areas = new List <Area>()
            {
                area
            };
            groupTwo.Areas = new List <Area>()
            {
                area
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                },
                Areas = new FakeDbSet <Area>()
                {
                    area
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));

            // act
            var relateUserToGroupsDto = new RelateUserToGroupsDto()
            {
                UserId               = userId,
                Latitude             = 10,
                Longitude            = 10,
                GroupsUserSubscribes = new List <Guid>()
                {
                    groupOneId, groupTwoId
                }
            };

            this._subscriptionService.RelateUserToGroups(relateUserToGroupsDto);
            Assert.IsNotNull(user.Groups);
            Assert.IsNotNull(user.HistoryGroups);

            Assert.AreEqual(2, user.Groups.Count);
            Assert.AreEqual(2, user.HistoryGroups.Count);

            this._userService.UpdateUserLocation(userId, 20, 20);

            Assert.AreEqual(0, user.Groups.Count);
            Assert.AreEqual(2, user.HistoryGroups.Count);

            var updateResponse = this._userService.UpdateUserLocation(userId, 10.00009, 10.00009);

            // TODO: When implemented double SecondsToClosestBoundary(double latitude, double longitude); update the assertions here
            Assert.AreEqual(2, updateResponse.SubscribedGroupIds.Count());
        }
Exemple #19
0
        public void We_Can_Get_Groups_Around_Coordinates_Based_On_Subscription_Settings_SubscribeAllAvailableOptionSet()
        {
            // arrange
            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id = userId,
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSetting()
                {
                    AutomaticallySubscribeToAllGroups        = true,
                    AutomaticallySubscribeToAllGroupsWithTag = false
                }
            };

            // ================= Area1 (GR1, GR2) ========
            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id = groupOneId, Name = "Group one", IsActive = true
            };

            var groupTwoId = Guid.NewGuid();
            var groupTwo   = new Group()
            {
                Id = groupTwoId, Name = "Group two", IsActive = true
            };

            var areaOneId = Guid.NewGuid();
            var areaOne   = new Area()
            {
                Id = areaOneId, Latitude = 10, Longitude = 10, Groups = new List <Group>()
                {
                    groupOne, groupTwo
                },
                Radius = RadiusRangeEnum.FiftyMeters, IsActive = true
            };
            // ================= Area1 (GR1, GR2) ========

            // ================= Area2 (GR3) ========
            var groupThreeId = Guid.NewGuid();
            var groupThree   = new Group()
            {
                Id = groupThreeId, Name = "Group three", IsActive = true
            };

            var areaTwoId = Guid.NewGuid();
            var areaTwo   = new Area()
            {
                Id = areaTwoId, Latitude = 20, Longitude = 20, Groups = new List <Group>()
                {
                    groupThree
                },
                Radius   = RadiusRangeEnum.FiftyMeters,
                IsActive = true
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo, groupThree
                },
                Areas = new FakeDbSet <Area>()
                {
                    areaOne, areaTwo
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var groupsDependingOnUserSettingsAroundCoordinates =
                this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, 10, 10);

            // assert
            Assert.AreEqual(2, groupsDependingOnUserSettingsAroundCoordinates.Count());


            // act
            groupsDependingOnUserSettingsAroundCoordinates =
                this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, 15, 15);

            // assert
            Assert.AreEqual(0, groupsDependingOnUserSettingsAroundCoordinates.Count());

            // act
            groupsDependingOnUserSettingsAroundCoordinates =
                this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, 20, 20);

            // assert
            Assert.AreEqual(1, groupsDependingOnUserSettingsAroundCoordinates.Count());

            // act
            groupsDependingOnUserSettingsAroundCoordinates =
                this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, 25, 25);

            // assert
            Assert.AreEqual(0, groupsDependingOnUserSettingsAroundCoordinates.Count());
        }
Exemple #20
0
        public void We_Can_Get_AreaMetadata()
        {
            // arrange
            var myLocationLatitude  = 10;
            var myLocationLongitude = 10;

            var groupOneId = Guid.NewGuid();
            var groupTwoId = Guid.NewGuid();

            var workingTag = new Tag()
            {
                Id   = Guid.Parse("caf77dee-a94f-49cb-b51f-e0c0e1067541"),
                Name = "Help"
            };

            var groupOne = new Group()
            {
                Id    = groupOneId,
                Name  = "GroupOne",
                Users = new List <User>(),
                Tags  = new List <Tag>()
                {
                    workingTag
                }
            };
            var groupTwo = new Group()
            {
                Id = groupTwoId, Name = "GroupTwo", Users = new List <User>(), Tags = new List <Tag>()
                {
                    workingTag
                }
            };

            var areaId = Guid.NewGuid();
            var area   = new Area()
            {
                Id        = areaId,
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                }
            };

            groupOne.Areas = new List <Area>()
            {
                area
            };
            groupTwo.Areas = new List <Area>()
            {
                area
            };

            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id            = userId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                },
                Areas = new FakeDbSet <Area>()
                {
                    area
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var areaMetadata = this._areaService.GetMetadataForArea(myLocationLatitude, myLocationLongitude, areaId);

            // assert
            Assert.IsNotNull(areaMetadata);
            Assert.AreEqual(areaMetadata.TagIds.Count(), 1);
            Assert.AreEqual(areaMetadata.DistanceTo, 0);
        }
Exemple #21
0
        public void We_Can_Get_Metadata_For_Multiple_Areas()
        {
            // arrange
            var myLocationLatitude  = 10;
            var myLocationLongitude = 10;

            var groupOneId = Guid.NewGuid();
            var groupTwoId = Guid.NewGuid();

            var workingTag = new Tag()
            {
                Id   = Guid.Parse("caf77dee-a94f-49cb-b51f-e0c0e1067541"),
                Name = "Help"
            };

            var groupOne = new Group()
            {
                Id    = groupOneId,
                Name  = "GroupOne",
                Users = new List <User>(),
                Tags  = new List <Tag>()
                {
                    workingTag
                }
            };
            var groupTwo = new Group()
            {
                Id = groupTwoId, Name = "GroupTwo", Users = new List <User>(), Tags = new List <Tag>()
                {
                    workingTag
                }
            };

            var firstAreaId = Guid.NewGuid();
            var firstArea   = new Area()
            {
                Id        = firstAreaId,
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                },
                Radius = RadiusRangeEnum.FiftyMeters
            };

            var secondAreaId = Guid.NewGuid();
            var secondArea   = new Area()
            {
                Id        = firstAreaId,
                Latitude  = 10.00001,
                Longitude = 10.00001,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                },
                Radius = RadiusRangeEnum.FiveHundredMeters
            };

            groupOne.Areas = new List <Area>()
            {
                firstArea, secondArea
            };
            groupTwo.Areas = new List <Area>()
            {
                firstArea, secondArea
            };

            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id            = userId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                },
                Areas = new FakeDbSet <Area>()
                {
                    firstArea, secondArea
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var multipleAreasMetadataRequestDto = new MultipleAreasMetadataRequestDto()
            {
                AreaIds = new List <Guid>()
                {
                    firstAreaId, secondAreaId
                },
                Latitude  = myLocationLatitude,
                Longitude = myLocationLongitude
            };

            var multipleAreasMetadata = this._areaService.GetMultipleAreasMetadata(multipleAreasMetadataRequestDto);

            // assert
            Assert.IsNotNull(multipleAreasMetadata);
            Assert.AreEqual(multipleAreasMetadata.Count(), 2);
            Assert.IsTrue(multipleAreasMetadata.Any(a => a.DistanceTo == 0));
        }
Exemple #22
0
        public void We_Can_Relate_User_To_Groups()
        {
            // arrange
            var groupOneId = Guid.NewGuid();
            var groupTwoId = Guid.NewGuid();

            var groupOne = new Group()
            {
                Id = groupOneId, Name = "GroupOne", Users = new List <User>(), IsActive = true
            };
            var groupTwo = new Group()
            {
                Id = groupTwoId, Name = "GroupTwo", Users = new List <User>(), IsActive = true
            };

            var area = new Area()
            {
                Id        = Guid.NewGuid(),
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                },
                IsActive = true
            };

            groupOne.Areas = new List <Area>()
            {
                area
            };
            groupTwo.Areas = new List <Area>()
            {
                area
            };

            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id            = userId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var firstHistoryGroup = new HistoryGroup()
            {
                DateTimeGroupWasSubscribed = DateTime.UtcNow,
                GroupId = groupOneId,
                GroupThatWasPreviouslySubscribed = groupOne,
                UserId = userId,
                UserWhoSubscribedGroup = user,
                Id = Guid.NewGuid()
            };

            var secondHistoryGroup = new HistoryGroup()
            {
                DateTimeGroupWasSubscribed = DateTime.UtcNow,
                GroupId = groupTwoId,
                GroupThatWasPreviouslySubscribed = groupTwo,
                UserId = userId,
                UserWhoSubscribedGroup = user,
                Id = Guid.NewGuid()
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                },
                Areas = new FakeDbSet <Area>()
                {
                    area
                },
                Users = new FakeDbSet <User>()
                {
                    user
                },
                HistoryGroups = new FakeDbSet <HistoryGroup>()
                {
                    firstHistoryGroup, secondHistoryGroup
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.HistoryGroupRepository).Returns(new HistoryGroupRepository(populatedDatabase));

            var relateUserToGroupsRequest = new RelateUserToGroupsDto()
            {
                UserId               = userId,
                Latitude             = 10,
                Longitude            = 10,
                GroupsUserSubscribes = new List <Guid>()
                {
                    groupOneId, groupTwoId
                }
            };

            // act
            this._subscriptionService.RelateUserToGroups(relateUserToGroupsRequest);
            var userSubscribtionsAroundCoordintes = this._groupService.GetUserSubscriptions(userId, 10, 10);

            // assert subscription works
            Assert.IsNotNull(userSubscribtionsAroundCoordintes);
            Assert.AreEqual(userSubscribtionsAroundCoordintes.Count(), 2);
            Assert.IsTrue(userSubscribtionsAroundCoordintes.Contains(groupOneId));
            Assert.IsTrue(userSubscribtionsAroundCoordintes.Contains(groupTwoId));
            Assert.IsNotNull(user.HistoryGroups);
            Assert.AreEqual(user.HistoryGroups.Count(), 2);
            var historyGroupIds = user.HistoryGroups.Select(hgr => hgr.GroupId).ToList();

            Assert.IsTrue(historyGroupIds.Contains(groupOneId) && historyGroupIds.Contains(groupTwoId));

            // arrange
            relateUserToGroupsRequest = new RelateUserToGroupsDto()
            {
                UserId               = userId,
                Latitude             = 10,
                Longitude            = 10,
                GroupsUserSubscribes = new List <Guid>()
                {
                    groupTwoId
                }
            };

            groupOne.Users = new List <User>()
            {
                user
            };
            groupTwo.Users = new List <User>()
            {
                user
            };
            user.HistoryGroups = new List <HistoryGroup>()
            {
                firstHistoryGroup, secondHistoryGroup
            };

            // act
            this._subscriptionService.RelateUserToGroups(relateUserToGroupsRequest);
            userSubscribtionsAroundCoordintes = this._groupService.GetUserSubscriptions(userId, 10, 10);

            // assert unsubscription works
            Assert.IsNotNull(userSubscribtionsAroundCoordintes);
            Assert.AreEqual(userSubscribtionsAroundCoordintes.Count(), 1);
            Assert.IsFalse(userSubscribtionsAroundCoordintes.Contains(groupOneId));
            Assert.IsTrue(userSubscribtionsAroundCoordintes.Contains(groupTwoId));
            Assert.IsTrue(user.HistoryGroups != null);
            Assert.IsTrue(user.HistoryGroups.Select(hgr => hgr.GroupId).Contains(groupTwoId));
            Assert.IsTrue(this._mockedLikkleUoW.Object.HistoryGroupRepository.AllHistoryGroups().Count() == 2);

            // arrange
            var groupThree = new Group()
            {
                Id = Guid.NewGuid(), Name = "GroupThree", Users = new List <User>(), IsActive = true
            };
            var groupFour = new Group()
            {
                Id = Guid.NewGuid(), Name = "GroupFour", Users = new List <User>(), IsActive = true
            };

            groupThree.Areas = new List <Area>()
            {
                area
            };
            groupFour.Areas = new List <Area>()
            {
                area
            };

            area.Groups.Clear();

            area.Groups.Add(groupThree);
            area.Groups.Add(groupFour);

            populatedDatabase.Groups = new FakeDbSet <Group>()
            {
                groupThree, groupFour
            };

            relateUserToGroupsRequest = new RelateUserToGroupsDto()
            {
                UserId               = userId,
                Latitude             = 10,
                Longitude            = 10,
                GroupsUserSubscribes = new List <Guid>()
                {
                    groupThree.Id, groupFour.Id
                }
            };

            // act
            this._subscriptionService.RelateUserToGroups(relateUserToGroupsRequest);
            userSubscribtionsAroundCoordintes = this._groupService.GetUserSubscriptions(userId, 10, 10);

            // assert
            Assert.IsNotNull(userSubscribtionsAroundCoordintes);
            Assert.AreEqual(userSubscribtionsAroundCoordintes.Count(), 2);
            Assert.IsFalse(userSubscribtionsAroundCoordintes.Contains(groupOneId));
            Assert.IsFalse(userSubscribtionsAroundCoordintes.Contains(groupTwoId));
            Assert.IsTrue(userSubscribtionsAroundCoordintes.Contains(groupThree.Id));
            Assert.IsTrue(userSubscribtionsAroundCoordintes.Contains(groupFour.Id));
        }
Exemple #23
0
        public void We_Can_Insert_New_User()
        {
            // arrange
            var firstLanguageId  = Guid.Parse("e9260fb3-5183-4c3e-9bd2-c606d03b7bcb");
            var secondLanguageId = Guid.Parse("05872235-365b-41f8-ab50-3913ffe9c601");
            var newUserStsId     = "https://boongaloocompanysts/identity3025f46b-3070-4f75-809d-44b7ae5b8e6a";

            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id = groupOneId, Name = "GroupOne", Users = new List <User>()
            };

            var area = new Area()
            {
                Id        = Guid.NewGuid(),
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne
                }
            };

            groupOne.Areas = new List <Area>()
            {
                area
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne
                },
                Areas = new FakeDbSet <Area>()
                {
                    area
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));

            var newUserRequestDto = new NewUserRequestDto()
            {
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = newUserStsId,
                LanguageIds   = new List <Guid>()
                {
                    firstLanguageId, secondLanguageId
                },
                GroupIds = new List <Guid>()
                {
                    groupOneId
                },
                BirthDate = DateTime.Parse(this.InitialDateString)
            };

            // act
            var userId = this._userService.InsertNewUser(newUserRequestDto);

            // assert
            Assert.IsNotNull(userId);

            var user = this._userService.GetUserById(userId);

            Assert.IsNotNull(user);
            Assert.IsNotNull(user.Id);
            Assert.AreEqual(userId, user.Id);
            Assert.AreEqual(user.Languages.Count(), 2);
            Assert.AreEqual(user.BirthDate, DateTime.Parse(this.InitialDateString));
        }
Exemple #24
0
        public void Area_Gets_Inactive_When_No_Active_Groups_Belong_To_It()
        {
            // arrange
            this._configurationWrapperMock.Setup(config => config.AutomaticallyCleanupGroupsAndAreas).Returns(true);

            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id            = userId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var groupOneId = Guid.NewGuid();
            var groupTwoId = Guid.NewGuid();

            var groupOne = new Group()
            {
                Id = groupOneId, Name = "GroupOne", Users = new List <User>()
                {
                    user
                }, IsActive = true
            };
            var groupTwo = new Group()
            {
                Id = groupTwoId, Name = "GroupTwo", Users = new List <User>(), IsActive = false
            };

            var areaId = Guid.NewGuid();
            var area   = new Area()
            {
                Id        = areaId,
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                },
                IsActive = true
            };

            groupOne.Areas = new List <Area>()
            {
                area
            };
            groupTwo.Areas = new List <Area>()
            {
                area
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                },
                Users = new FakeDbSet <User>()
                {
                    user
                },
                Areas = new FakeDbSet <Area>()
                {
                    area
                }
            }
            .Seed();

            DataGenerator.SetupAreaUserAndGroupRepositories(this._mockedLikkleUoW, populatedDatabase);

            // act
            var relateUserToGroupsRequest = new RelateUserToGroupsDto()
            {
                UserId               = userId,
                Latitude             = 10,
                Longitude            = 10,
                GroupsUserSubscribes = new List <Guid>()
                {
                    groupTwoId
                }
            };

            this._subscriptionService.RelateUserToGroups(relateUserToGroupsRequest);

            // assert
            Assert.AreEqual(2, this._areaService.GetAreaById(areaId).Groups.Count());

            Assert.IsFalse(this._mockedLikkleUoW.Object.GroupRepository.GetGroupById(groupOneId).IsActive);
            Assert.IsFalse(this._mockedLikkleUoW.Object.GroupRepository.GetGroupById(groupTwoId).IsActive);

            Assert.IsFalse(this._mockedLikkleUoW.Object.AreaRepository.GetAreaById(areaId).IsActive);
        }
Exemple #25
0
        public void When_User_Location_Is_Changed_Group_Is_Removed_But_HistoryGroup_Stays()
        {
            // arrange
            var groupOneId = Guid.NewGuid();
            var groupTwoId = Guid.NewGuid();

            var groupOne = new Group()
            {
                Id = groupOneId, Name = "GroupOne", Users = new List <User>()
            };
            var groupTwo = new Group()
            {
                Id = groupTwoId, Name = "GroupTwo", Users = new List <User>()
            };

            var area = new Area()
            {
                Id        = Guid.NewGuid(),
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                }
            };

            groupOne.Areas = new List <Area>()
            {
                area
            };
            groupTwo.Areas = new List <Area>()
            {
                area
            };

            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id            = userId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                },
                Areas = new FakeDbSet <Area>()
                {
                    area
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            var relateUserToGroupsRequest = new RelateUserToGroupsDto()
            {
                UserId               = userId,
                Latitude             = 10,
                Longitude            = 10,
                GroupsUserSubscribes = new List <Guid>()
                {
                    groupOneId, groupTwoId
                }
            };

            // act
            this._subscriptionService.RelateUserToGroups(relateUserToGroupsRequest);

            Assert.IsNotNull(user.Groups);
            Assert.AreEqual(user.Groups.Count(), 2);

            Assert.IsNotNull(user.HistoryGroups);
            Assert.AreEqual(user.HistoryGroups.Count(), 2);

            this._userService.UpdateUserLocation(userId, 90, 90);
            Assert.AreEqual(user.Groups.Count(), 0);
            Assert.AreEqual(user.HistoryGroups.Count(), 2);
        }
Exemple #26
0
        public void We_Can_Activate_Previously_Not_Active_Group()
        {
            // arrange
            var userId = Guid.NewGuid();
            var dbUser = new User()
            {
                Id     = userId,
                Groups = new List <Group>()
            };

            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id       = groupOneId,
                IsActive = true
            };

            var newAreaId = Guid.NewGuid();
            var newArea   = new Area()
            {
                Id        = newAreaId,
                Latitude  = 10,
                Longitude = 10,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = false,
                Groups    = new List <Group>()
                {
                    groupOne
                }
            };

            var secondNewAreaId = Guid.NewGuid();
            var secondNewArea   = new Area()
            {
                Id        = secondNewAreaId,
                Latitude  = 10,
                Longitude = 10,
                Radius    = RadiusRangeEnum.FiveHundredMeters,
                IsActive  = false,
                Groups    = new List <Group>()
                {
                    groupOne
                }
            };

            groupOne.Areas = new List <Area>()
            {
                newArea, secondNewArea
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Areas = new FakeDbSet <Area>()
                {
                    newArea, secondNewArea
                },
                Groups = new FakeDbSet <Group>()
                {
                    groupOne
                },
                Users = new FakeDbSet <User>()
                {
                    dbUser
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            this._groupService.ActivateGroup(groupOneId, userId);

            // assert
            Assert.IsTrue(groupOne.IsActive);
            Assert.IsTrue(newArea.IsActive);
            Assert.IsTrue(secondNewArea.IsActive);
            Assert.IsTrue(dbUser.Groups.Any());
            Assert.IsTrue(dbUser.Groups.Any(gr => gr.Id == groupOneId));
        }
Exemple #27
0
        public void We_Can_Get_Users_From_Area()
        {
            // arrange
            var firstUserId = Guid.NewGuid();
            var firstUser   = new User()
            {
                Id            = firstUserId,
                FirstName     = "Stefcho",
                LastName      = "Stefchev",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };

            var secondUserId = Guid.NewGuid();
            var secondUser   = new User()
            {
                Id            = secondUserId,
                FirstName     = "Other",
                LastName      = "Name",
                Email         = "*****@*****.**",
                IdsrvUniqueId = Guid.NewGuid().ToString()
            };


            var groupOneId = Guid.NewGuid();
            var groupTwoId = Guid.NewGuid();

            var groupOne = new Group()
            {
                Id = groupOneId, Name = "GroupOne", Users = new List <User>()
                {
                    firstUser
                }
            };
            var groupTwo = new Group()
            {
                Id = groupTwoId, Name = "GroupTwo", Users = new List <User>()
                {
                    firstUser, secondUser
                }
            };

            var areaId = Guid.NewGuid();
            var area   = new Area()
            {
                Id        = areaId,
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                }
            };

            groupOne.Areas = new List <Area>()
            {
                area
            };
            groupTwo.Areas = new List <Area>()
            {
                area
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                },
                Areas = new FakeDbSet <Area>()
                {
                    area
                },
                Users = new FakeDbSet <User>()
                {
                    firstUser, secondUser
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));

            // act
            var usersFromArea = this._areaService.GetUsersFromArea(areaId);

            // assert
            Assert.IsNotNull(usersFromArea);

            var userIds = usersFromArea.Select(u => u.Id);

            Assert.IsTrue(userIds.Count() == userIds.Distinct().Count());
            Assert.AreEqual(userIds.Count(), 2);
        }
Exemple #28
0
        public void We_Can_Get_List_Of_Previously_Created_Groups_When_At_A_Place_With_Previous_Activity()
        {
            // arrange
            var userId = Guid.NewGuid();
            var dbUser = new User()
            {
                Id = userId,
                AutomaticSubscriptionSettings = null
            };

            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id       = groupOneId,
                Name     = "Group one",
                IsActive = false
            };

            var groupTwoId = Guid.NewGuid();
            var groupTwo   = new Group()
            {
                Id       = groupTwoId,
                Name     = "Group two",
                IsActive = true
            };

            var groupThreeId = Guid.NewGuid();
            var groupThree   = new Group()
            {
                Id       = groupThreeId,
                Name     = "Group three",
                IsActive = false
            };

            dbUser.HistoryGroups = new List <HistoryGroup>()
            {
                new HistoryGroup()
                {
                    DateTimeGroupWasSubscribed = DateTime.UtcNow.AddDays(-2),
                    GroupId = groupOneId,
                    GroupThatWasPreviouslySubscribed = groupOne,
                    Id     = Guid.NewGuid(),
                    UserId = userId,
                    UserWhoSubscribedGroup = dbUser
                },
                new HistoryGroup()
                {
                    DateTimeGroupWasSubscribed = DateTime.UtcNow.AddDays(-2),
                    GroupId = groupThreeId,
                    GroupThatWasPreviouslySubscribed = groupThree,
                    Id     = Guid.NewGuid(),
                    UserId = userId,
                    UserWhoSubscribedGroup = dbUser
                }
            };

            groupOne.Users = new List <User>()
            {
                dbUser
            };
            groupTwo.Users = new List <User>()
            {
                dbUser
            };
            groupThree.Users = new List <User>()
            {
                dbUser
            };

            var areaOneId = Guid.NewGuid();
            var areaOne   = new Area()
            {
                Id        = areaOneId,
                Latitude  = 10.0000000,
                Longitude = 10.0000000,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = true,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                }
            };

            var areaTwoId = Guid.NewGuid();
            var areaTwo   = new Area()
            {
                Id        = areaTwoId,
                Latitude  = 10.0000001,
                Longitude = 10.0000001,
                Radius    = RadiusRangeEnum.HunderdAndFiftyMeters,
                IsActive  = true,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo, groupThree
                }
            };

            groupOne.Areas = new List <Area>()
            {
                areaOne, areaTwo
            };
            groupTwo.Areas = new List <Area>()
            {
                areaOne, areaTwo
            };
            groupThree.Areas = new List <Area>()
            {
                areaTwo
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Users = new FakeDbSet <User>()
                {
                    dbUser
                },
                Areas = new FakeDbSet <Area>()
                {
                    areaOne, areaTwo
                },
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo, groupThree
                }
            }
            .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));

            // act
            var result = this._groupService.GetGroupCreationType(10, 10, userId);

            // assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.PrevousGroupsList);
            Assert.AreEqual(result.CreationType, CreateGroupActionTypeEnum.ListOfPreviouslyCreatedOrSubscribedGroups);
            Assert.AreEqual(2, result.PrevousGroupsList.Count());
        }
Exemple #29
0
        public void We_Get_Choice_Screen_When_Creating_A_group_In_Existing_Active_Area()
        {
            // arrange
            var userId = Guid.NewGuid();
            var dbUser = new User()
            {
                Id = userId,
                AutomaticSubscriptionSettings = null
            };

            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id       = groupOneId,
                IsActive = true
            };

            var groupTwoId = Guid.NewGuid();
            var groupTwo   = new Group()
            {
                Id       = groupTwoId,
                IsActive = true
            };

            var newAreaId = Guid.NewGuid();
            var newArea   = new Area()
            {
                Id        = newAreaId,
                Latitude  = 10,
                Longitude = 10,
                Radius    = RadiusRangeEnum.FiftyMeters,
                IsActive  = true,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                }
            };

            groupOne.Areas = new List <Area>()
            {
                newArea
            };
            groupTwo.Areas = new List <Area>()
            {
                newArea
            };

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Users = new FakeDbSet <User>()
                {
                    dbUser
                },
                Areas = new FakeDbSet <Area>()
                {
                    newArea
                },
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo
                }
            }
            .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));

            // act
            var result = this._groupService.GetGroupCreationType(10, 10, userId);

            // assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result.CreationType, CreateGroupActionTypeEnum.ChoiceScreen);
        }
Exemple #30
0
        public void We_Can_Get_Groups_Around_Coordinates_Based_On_Subscription_Settings_SubscribeAllWithTagOptionSet()
        {
            var allTags = this._mockedLikkleUoW.Object.TagRepository.GetAllTags().ToList();

            // arrange
            var userId = Guid.NewGuid();
            var user   = new User()
            {
                Id = userId,
                AutomaticSubscriptionSettings = new AutomaticSubscriptionSetting()
                {
                    AutomaticallySubscribeToAllGroups        = false,
                    AutomaticallySubscribeToAllGroupsWithTag = true,
                    Tags = allTags.Where(t => t.Name == "Sport" || t.Name == "Help").ToList()
                }
            };

            // ================= Area1 (GR1, GR2) ========
            var groupOneId = Guid.NewGuid();
            var groupOne   = new Group()
            {
                Id       = groupOneId,
                Name     = "Group one",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Animals")
                }
            };

            var groupTwoId = Guid.NewGuid();
            var groupTwo   = new Group()
            {
                Id       = groupTwoId,
                Name     = "Group two",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Sport")
                }
            };

            var areaOneId = Guid.NewGuid();
            var areaOne   = new Area()
            {
                Id        = areaOneId,
                Latitude  = 10,
                Longitude = 10,
                Groups    = new List <Group>()
                {
                    groupOne, groupTwo
                }, IsActive = true, Radius = RadiusRangeEnum.FiftyMeters
            };
            // ================= Area1 (GR1, GR2) ========

            // ================= Area1 (GR3, GR4, GR5) ========
            var groupThreeId = Guid.NewGuid();
            var groupThree   = new Group()
            {
                Id       = groupThreeId,
                Name     = "Group three",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Help"),
                    allTags.FirstOrDefault(t => t.Name == "Sport")
                }
            };

            var groupFourId = Guid.NewGuid();
            var groupFour   = new Group()
            {
                Id       = groupFourId,
                Name     = "Group four",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "University")
                }
            };

            var groupFiveId = Guid.NewGuid();
            var groupFive   = new Group()
            {
                Id       = groupFiveId,
                Name     = "Group five",
                IsActive = true,
                Tags     = new List <Tag>()
                {
                    allTags.FirstOrDefault(t => t.Name == "Help"),
                    allTags.FirstOrDefault(t => t.Name == "Animals")
                }
            };

            var areaTwoId = Guid.NewGuid();
            var areaTwo   = new Area()
            {
                Id        = areaTwoId,
                Latitude  = 20,
                Longitude = 20,
                Groups    = new List <Group>()
                {
                    groupThree, groupFour, groupFive
                }, IsActive = true, Radius = RadiusRangeEnum.FiftyMeters
            };
            // ================= Area1 (GR3, GR4, GR5) ========

            var populatedDatabase = new FakeLikkleDbContext()
            {
                Groups = new FakeDbSet <Group>()
                {
                    groupOne, groupTwo, groupThree, groupFour, groupFive
                },
                Areas = new FakeDbSet <Area>()
                {
                    areaOne, areaTwo
                },
                Users = new FakeDbSet <User>()
                {
                    user
                }
            }
            .Seed();

            this._mockedLikkleUoW.Setup(uow => uow.AreaRepository).Returns(new AreaRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.GroupRepository).Returns(new GroupRepository(populatedDatabase));
            this._mockedLikkleUoW.Setup(uow => uow.UserRepository).Returns(new UserRepository(populatedDatabase));

            // act
            var groupsDependingOnUserSettingsAroundCoordinates =
                this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, 10, 10);

            // assert
            Assert.AreEqual(1, groupsDependingOnUserSettingsAroundCoordinates.Count());

            Assert.IsTrue(groupsDependingOnUserSettingsAroundCoordinates.FirstOrDefault() == groupTwoId);

            // act
            groupsDependingOnUserSettingsAroundCoordinates =
                this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, 15, 15);

            // assert
            Assert.AreEqual(0, groupsDependingOnUserSettingsAroundCoordinates.Count());

            // act
            groupsDependingOnUserSettingsAroundCoordinates =
                this._subscriptionSettingsService.GroupsForUserAroundCoordinatesBasedOnUserSettings(userId, 20, 20);

            // assert
            Assert.AreEqual(2, groupsDependingOnUserSettingsAroundCoordinates.Count());
            var observedGroups =
                this._mockedLikkleUoW.Object.GroupRepository.GetGroups()
                .Where(gr => groupsDependingOnUserSettingsAroundCoordinates.Contains(gr.Id));

            Assert.IsTrue(observedGroups.Any(gr => gr.Tags.Any(igr => igr.Name == "Sport")) && observedGroups.Any(gr => gr.Tags.Any(igr => igr.Name == "Help")));
        }