public void AddLakeToDbContext()
        {
            // Arrange
            var lake = new Lake()
            {
                Name = "Test lake"
            };
            var mockedCollection = new List <Lake>();
            var mockedDbSet      = MockDbSet.Mock(mockedCollection.AsQueryable());

            mockedDbSet.Setup(d => d.Add(It.IsAny <Lake>())).Callback <Lake>((l) => mockedCollection.Add(l));

            var mockedDbContext = new Mock <IDatabaseContext>();

            mockedDbContext.Setup(c => c.Lakes).Returns(mockedDbSet.Object);

            var lakeService = new LakeService(mockedDbContext.Object);

            // Act
            lakeService.Add(lake);

            // Assert
            Assert.IsTrue(mockedCollection.Count == 1);
            Assert.AreEqual(lake, mockedCollection[0]);
        }
        public void ReturnCorrectResult()
        {
            // Arrange
            var mockedCollection = Utils.GetLakesCollection();
            var mockedDbSet      = MockDbSet.Mock(mockedCollection.AsQueryable());

            var mockedDbContext = new Mock <IDatabaseContext>();

            mockedDbContext.Setup(c => c.Lakes).Returns(mockedDbSet.Object);

            var lakeService = new LakeService(mockedDbContext.Object);

            // Act
            var result = lakeService.GetAll();

            // Assert
            Assert.IsTrue(result.Count() == mockedCollection.Count);
            var index = 0;

            foreach (var lake in result)
            {
                Assert.AreEqual(mockedCollection[index].Name, lake.Name);
                Assert.AreEqual(mockedCollection[index].Id, lake.Id);
                index++;
            }
        }
        public void CallSaveMethod_FromDbContext()
        {
            // Arrange
            var mockedDbContext = new Mock <IDatabaseContext>();

            mockedDbContext.Setup(c => c.Save()).Verifiable();

            var lakeService = new LakeService(mockedDbContext.Object);

            // Act
            lakeService.Save();

            // Assert
            mockedDbContext.Verify(c => c.Save(), Times.Once);
        }
        public void ReturnCorrectResult_IfNameNotMatch()
        {
            // Arrange
            var mockedCollection = Utils.GetLakesCollection();
            var mockedDbSet      = MockDbSet.Mock(mockedCollection.AsQueryable());

            var mockedDbContext = new Mock <IDatabaseContext>();

            mockedDbContext.Setup(c => c.Lakes).Returns(mockedDbSet.Object);

            var lakeService = new LakeService(mockedDbContext.Object);

            // Act
            var result = lakeService.FindByName("Invalid name");

            // Assert
            Assert.IsNull(result);
        }
        public void ReturnCorrectResult_IfLocationNotMatch()
        {
            // Arrange
            var mockedCollection = Utils.GetLakesCollection();
            var mockedDbSet      = MockDbSet.Mock(mockedCollection.AsQueryable());

            var mockedDbContext = new Mock <IDatabaseContext>();

            mockedDbContext.Setup(c => c.Lakes).Returns(mockedDbSet.Object);

            var lakeService = new LakeService(mockedDbContext.Object);

            // Act
            var result = lakeService.FindByLocation("Not Valid");

            // Assert
            Assert.IsTrue(result.Count() == 0);
        }
        public void ReturnCorrectResult_IfNameMatch()
        {
            // Arrange
            var mockedCollection = Utils.GetLakesCollection();
            var mockedDbSet      = MockDbSet.Mock(mockedCollection.AsQueryable());

            var mockedDbContext = new Mock <IDatabaseContext>();

            mockedDbContext.Setup(c => c.Lakes).Returns(mockedDbSet.Object);

            var lakeService  = new LakeService(mockedDbContext.Object);
            var searchedLake = mockedCollection[1];

            // Act
            var result = lakeService.FindByName(searchedLake.Name);

            // Assert
            Assert.AreEqual(searchedLake, result);
        }
        public void ReturnCorrectValue_IfIdMatch()
        {
            // Arrange
            var mockedCollection = Utils.GetLakesCollection();
            var mockedDbSet      = MockDbSet.Mock(mockedCollection.AsQueryable());

            mockedDbSet.Setup(d => d.Find(It.IsAny <object[]>())).Returns <object[]>(ids => mockedCollection.FirstOrDefault(d => d.Id == ids[0].ToString()));

            var mockedDbContext = new Mock <IDatabaseContext>();

            mockedDbContext.Setup(c => c.Lakes).Returns(mockedDbSet.Object);

            var lakeService  = new LakeService(mockedDbContext.Object);
            var searchedLake = mockedCollection[1];

            // Act
            var result = lakeService.GetLakeName(searchedLake.Id);

            // Assert
            Assert.AreEqual(searchedLake.Name, result);
        }