public void AddLeagues()
        {
            // Arrange
            var repository = new LeagueRepository();

            var dbContext = A.Fake <ProFootballEntities>();
            var leagues   = new List <League>();

            for (int i = 1; i <= 3; i++)
            {
                var league = new League
                {
                    Name = "League " + i
                };
                leagues.Add(league);
            }
            A.CallTo(() => dbContext.Leagues.AddRange(A <IEnumerable <League> > .Ignored)).Returns(leagues);

            // Act
            var result = repository.AddEntities(dbContext, leagues);

            // Assert
            A.CallTo(() => dbContext.Leagues.AddRange(leagues)).MustHaveHappenedOnceExactly();
            Assert.AreSame(leagues, result);
        }
        public void AddLeagues_HappyPath()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new LeagueRepository(dbContext);

            var leagues = new List <League>();

            A.CallTo(() => dbContext.Leagues.AddRange(A <IEnumerable <League> > .Ignored)).Returns(leagues);

            // Act
            var result = repository.AddEntities(leagues);

            // Assert
            A.CallTo(() => dbContext.Leagues.AddRange(leagues)).MustHaveHappenedOnceExactly();
            Assert.AreSame(leagues, result);
        }
        public void AddLeagues_ExceptionCaught_LogsAndRethrowsException()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new LeagueRepository(dbContext);

            var leagues = new List <League>();

            A.CallTo(() => dbContext.Leagues.AddRange(A <IEnumerable <League> > .Ignored)).Throws <Exception>();

            // Act
            IEnumerable <League> result = null;

            Assert.Throws <Exception>(() => result = repository.AddEntities(leagues));

            // Assert
            Assert.IsNull(result);
        }