public void FindEntityAsync_EntityNotFoundInDataStore_ThrowsObjectNotFoundException()
        {
            // Arrange
            var repository = new TeamSeasonRepository();

            var dbContext = A.Fake <ProFootballEntities>();
            var teamName  = "Team";
            var seasonID  = 2017;

            TeamSeason teamSeason = null;

            A.CallTo(() => dbContext.TeamSeasons.FindAsync(A <string> .Ignored, A <int> .Ignored)).Returns(teamSeason);

            // Act
            TeamSeason result = null;

            Assert.ThrowsAsync <ObjectNotFoundException>(async() =>
            {
                result = await repository.FindEntityAsync(dbContext, teamName, seasonID);
            });

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.FindAsync(teamName, seasonID)).MustHaveHappenedOnceExactly();
            Assert.IsNull(result);
        }
        public void AddTeamSeasons()
        {
            // Arrange
            var repository = new TeamSeasonRepository();

            var dbContext   = A.Fake <ProFootballEntities>();
            var teamSeasons = new List <TeamSeason>();

            for (int i = 1; i <= 3; i++)
            {
                var teamSeason = new TeamSeason
                {
                    TeamName = "Team " + i,
                    SeasonID = 2017
                };
                teamSeasons.Add(teamSeason);
            }
            A.CallTo(() => dbContext.TeamSeasons.AddRange(A <IEnumerable <TeamSeason> > .Ignored)).Returns(teamSeasons);

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

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.AddRange(teamSeasons)).MustHaveHappenedOnceExactly();
            Assert.AreSame(teamSeasons, result);
        }
        //[TestCase]
        public void TestCase1()
        {
            // Arrange
            var repository = new TeamSeasonRepository();

            // Act

            // Assert
        }
        public void GetEntities_HappyPath()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            // Act
            var result = repository.GetEntities();

            // Assert
            Assert.IsInstanceOf <IEnumerable <TeamSeason> >(result);
        }
        public void EditTeamSeason_ExceptionCaught_LogsAndRethrowsException()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamSeason = new TeamSeason();

            A.CallTo(() => dbContext.SetModified(A <TeamSeason> .Ignored)).Throws <Exception>();

            // Act & Assert
            Assert.Throws <Exception>(() => repository.EditEntity(teamSeason));
        }
        public void EditTeamSeason_HappyPath()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamSeason = new TeamSeason();

            // Act
            repository.EditEntity(teamSeason);

            // Assert
            A.CallTo(() => dbContext.SetModified(teamSeason)).MustHaveHappenedOnceExactly();
        }
        public async Task GetEntitiesAsync()
        {
            // Arrange
            var repository = new TeamSeasonRepository();

            var dbContext = A.Fake <ProFootballEntities>();

            dbContext.SetUpFakeTeamSeasonsAsync();

            // Act
            var result = await repository.GetEntitiesAsync(dbContext);

            // Assert
            Assert.IsInstanceOf <IEnumerable <TeamSeason> >(result);
        }
        public void CreateTeamSeason_HappyPath()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            A.CallTo(() => dbContext.TeamSeasons.Create()).Returns(new TeamSeason());

            // Act
            var result = repository.CreateEntity();

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.Create()).MustHaveHappenedOnceExactly();
            Assert.IsInstanceOf <TeamSeason>(result);
        }
        //[TestCase]
        public void TestCase1()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            // TODO: Define argument variables of method under test.

            // TODO: Set up needed infrastructure of class under test.

            // Act
            // TODO: Call method under test.

            // Assert
            // TODO: Assert results of call to method under test.
        }
        public void GetEntities_ExceptionCaught_LogsAndRethrowsException()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            A.CallTo(() => dbContext.TeamSeasons).Throws <Exception>();

            // Act
            IEnumerable <TeamSeason> result = null;

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

            // Assert
            Assert.IsNull(result);
        }
        public void CreateTeamSeason_ExceptionCaught_LogsAndRethrowsException()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            A.CallTo(() => dbContext.TeamSeasons.Create()).Throws <Exception>();

            // Act
            TeamSeason result = null;

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

            // Assert
            Assert.IsNull(result);
        }
        public void RemoveTeamSeason_HappyPath()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamSeason = new TeamSeason();

            A.CallTo(() => dbContext.TeamSeasons.Remove(A <TeamSeason> .Ignored)).Returns(teamSeason);

            // Act
            var result = repository.RemoveEntity(teamSeason);

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.Remove(teamSeason)).MustHaveHappenedOnceExactly();
            Assert.AreSame(teamSeason, result);
        }
        public void AddTeamSeasons_HappyPath()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamSeasons = new List <TeamSeason>();

            A.CallTo(() => dbContext.TeamSeasons.AddRange(A <IEnumerable <TeamSeason> > .Ignored)).Returns(teamSeasons);

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

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.AddRange(teamSeasons)).MustHaveHappenedOnceExactly();
            Assert.AreSame(teamSeasons, result);
        }
        public void AddTeamSeasons_ExceptionCaught_LogsAndRethrowsException()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamSeasons = new List <TeamSeason>();

            A.CallTo(() => dbContext.TeamSeasons.AddRange(A <IEnumerable <TeamSeason> > .Ignored)).Throws <Exception>();

            // Act
            IEnumerable <TeamSeason> result = null;

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

            // Assert
            Assert.IsNull(result);
        }
        public void FindEntity_InvalidOperationExceptionCaught_ThrowsObjectNotFoundException()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamName = "Team";
            var seasonID = 2017;

            A.CallTo(() => dbContext.TeamSeasons.Find(A <string> .Ignored, A <int> .Ignored)).Throws <InvalidOperationException>();

            // Act
            TeamSeason result = null;

            Assert.Throws <ObjectNotFoundException>(() => { result = repository.FindEntity(teamName, seasonID); });

            // Assert
            Assert.IsNull(result);
        }
        public void FindEntity_GenericExceptionCaught_LogsAndRethrowsException()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamName = "Team";
            var seasonID = 2017;

            A.CallTo(() => dbContext.TeamSeasons.Find(A <string> .Ignored, A <int> .Ignored)).Throws <Exception>();

            // Act
            TeamSeason result = null;

            Assert.Throws <Exception>(() => result = repository.FindEntity(teamName, seasonID));

            // Assert
            Assert.IsNull(result);
        }
        public void FindEntity_HappyPath()
        {
            // Arrange
            var dbContext  = A.Fake <ProFootballEntities>();
            var repository = new TeamSeasonRepository(dbContext);

            var teamName = "Team";
            var seasonID = 2017;

            var teamSeason = new TeamSeason();

            A.CallTo(() => dbContext.TeamSeasons.Find(A <string> .Ignored, A <int> .Ignored)).Returns(teamSeason);

            // Act
            var result = repository.FindEntity(teamName, seasonID);

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.Find(teamName, seasonID)).MustHaveHappenedOnceExactly();
            Assert.AreSame(teamSeason, result);
        }
        public async Task FindEntityAsync_EntityFoundInDataStore_ReturnsEntity()
        {
            // Arrange
            var repository = new TeamSeasonRepository();

            var dbContext = A.Fake <ProFootballEntities>();
            var teamName  = "Team";
            var seasonID  = 2017;

            TeamSeason teamSeason = new TeamSeason();

            A.CallTo(() => dbContext.TeamSeasons.FindAsync(A <string> .Ignored, A <int> .Ignored)).Returns(teamSeason);

            // Act
            var result = await repository.FindEntityAsync(dbContext, teamName, seasonID);

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.FindAsync(teamName, seasonID)).MustHaveHappenedOnceExactly();
            Assert.AreSame(teamSeason, result);
        }
        public void EditTeamSeason()
        {
            // Arrange
            var repository = new TeamSeasonRepository();

            var dbContext = A.Fake <ProFootballEntities>();

            A.CallTo(() => dbContext.SetModified(A <TeamSeason> .Ignored)).DoesNothing();

            var teamSeason = new TeamSeason
            {
                TeamName = "Team",
                SeasonID = 2017
            };

            // Act
            repository.EditEntity(dbContext, teamSeason);

            // Assert
            A.CallTo(() => dbContext.SetModified(teamSeason)).MustHaveHappenedOnceExactly();
        }
        public void AddTeamSeason()
        {
            // Arrange
            var repository = new TeamSeasonRepository();

            var dbContext  = A.Fake <ProFootballEntities>();
            var teamSeason = new TeamSeason
            {
                TeamName = "Team",
                SeasonID = 2017
            };

            A.CallTo(() => dbContext.TeamSeasons.Add(A <TeamSeason> .Ignored)).Returns(teamSeason);

            // Act
            var result = repository.AddEntity(dbContext, teamSeason);

            // Assert
            A.CallTo(() => dbContext.TeamSeasons.Add(teamSeason)).MustHaveHappenedOnceExactly();
            Assert.AreSame(teamSeason, result);
        }