public void ReturnCountOfAllAims_WhenNoFilteringParametesArePassed()
        {
            // Arrange
            var mockedData = new Mock <IDearDiaryData>();

            var aims = new List <Aim>
            {
                new Aim()
                {
                    Name = "Jump with parachute", OwnerUsername = "******"
                },
                new Aim()
                {
                    Name = "build a spacecraft", OwnerUsername = "******"
                },
                new Aim()
                {
                    Name = "visit china", OwnerUsername = "******"
                },
            }.AsQueryable();

            mockedData.Setup(x => x.Aims.All).Returns(aims);

            AimService service = new AimService(mockedData.Object);

            // Act
            int count = service.GetAimsCount(null, null);

            // Assert
            Assert.AreEqual(aims.Count(), count);
        }
        public void ReturnCorrectCount_WhenFilteringByCategoriesAndSearchWord()
        {
            // Arrange
            var    categoriesIds = new int[] { 2, 3 };
            string searchWord    = "juMP".ToLower();
            var    mockedData    = new Mock <IDearDiaryData>();

            var aims = new List <Aim>
            {
                new Aim()
                {
                    Name = "Jump with parachute", OwnerUsername = "******", AimCategoryId = 2
                },
                new Aim()
                {
                    Name = "build a spacecraft", OwnerUsername = "******", AimCategoryId = 1
                },
                new Aim()
                {
                    Name = "visit niagara falls", OwnerUsername = "******", AimCategoryId = 3
                },
                new Aim()
                {
                    Name = "visit china", OwnerUsername = "******", AimCategoryId = 2
                }
            }.AsQueryable();

            mockedData.Setup(x => x.Aims.All).Returns(aims);

            AimService service = new AimService(mockedData.Object);

            // Act
            int count = service.GetAimsCount(searchWord, categoriesIds);

            int expectedCount = aims
                                .Where(x => categoriesIds.Contains(x.AimCategoryId))
                                .Where(x => x.Name.ToLower().Contains(searchWord) || x.OwnerUsername.ToLower().Contains(searchWord))
                                .ToList().Count;

            // Assert
            Assert.AreEqual(expectedCount, count);
        }
        public void ReturnCorrectCount_WhenFilteringBySearchWord(string searchWord)
        {
            // Arrange
            var mockedData = new Mock <IDearDiaryData>();

            var aims = new List <Aim>
            {
                new Aim()
                {
                    Name = "Jump with parachute", OwnerUsername = "******"
                },
                new Aim()
                {
                    Name = "build a spacecraft", OwnerUsername = "******"
                },
                new Aim()
                {
                    Name = "visit niagara falls", OwnerUsername = "******"
                },
                new Aim()
                {
                    Name = "visit china", OwnerUsername = "******"
                },
            }.AsQueryable();

            mockedData.Setup(x => x.Aims.All).Returns(aims);

            AimService service = new AimService(mockedData.Object);

            // Act
            int count = service.GetAimsCount(searchWord, null);

            int expectedCount = aims.Where(x => x.Name.Contains(searchWord) || x.OwnerUsername.Contains(searchWord)).ToList().Count;

            // Assert
            Assert.AreEqual(expectedCount, count);
        }