public void AddStudentToTeam_StudentAndTeamExistsStudentNotYetAssigned() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; var s1 = new Student() { Id = 1 }; var s2 = new Student() { Id = 2 }; var s3 = new Student() { Id = 3 }; var s4 = new Student() { Id = 4 }; // all students exists in studentRepo studentRepo.Add(s1); studentRepo.Add(s2); studentRepo.Add(s3); studentRepo.Add(s4); var t = new Team() { Id = 1, Students = new List <Student>() { s1, s2, s3 } }; // team t exists in teamRepo teamRepo.Add(t); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act service.AddStudentToTeam(t, s4); // assert // student is now in the team Assert.NotNull(teamRepo.GetById(t.Id).Students.Where <Student>(s => s == s4)); // team object har been updated in the team repository teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(team => team == t)), Times.Once); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void RemoveStudentFromTeam_StudentIsNull_ExpectArgumentException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; // team t exists var t = new Team() { Id = 1, Students = new List <Student>() }; teamRepo.Add(t); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act + assert var ex = Assert.Throws <ArgumentException>(() => service.RemoveStudentFromTeam(t, null)); // assert Assert.Equal("Student is missing", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(team => team == t)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void AddStudentToTeam_TeamDoesNotExist_ExpectArgumentException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; var student = new Student() { Id = 1 }; // student exists in student repository studentRepo.Add(student); // team not in team repository var team = new Team() { Id = 1, Students = new List <Student>() }; var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepoMock.Object, teamRepoMock.Object); // act + assert var ex = Assert.Throws <ArgumentException>(() => service.AddStudentToTeam(team, student)); Assert.Equal("Team not found", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == null)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void AddStudentToTeam_TeamIsNull_ExpectArgumentException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; var student = new Student() { Id = 1 }; studentRepo.Add(student); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act + assert var ex = Assert.Throws <ArgumentException>(() => service.AddStudentToTeam(null, student)); Assert.Equal("Team is missing", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == null)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void MoveStudentToNewTeam_LegalMove() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; var s1 = new Student() { Id = 1 }; var s2 = new Student() { Id = 2 }; // all students exists in studentRepo studentRepo.Add(s1); studentRepo.Add(s2); var t1 = new Team() { Id = 1, Students = new List <Student>() { s1, s2 } }; var t2 = new Team() { Id = 2, Students = new List <Student>() { } }; // team t exists in teamRepo teamRepo.Add(t1); teamRepo.Add(t2); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act service.MoveStudentToNewTeam(t1, t2, s2); // assert Assert.True(t1.Students.Count == 1); Assert.Contains(s1, t1.Students); Assert.True(t2.Students.Count == 1); Assert.Contains(s2, t2.Students); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == t1)), Times.Once); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == t2)), Times.Once); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void CreateStudentTeamService_ValidRepositories() { // act var service = new StudentTeamService(studentRepoMock.Object, teamRepoMock.Object); // assert Assert.NotNull(service); Assert.True(service is StudentTeamService); }
public void AddStudentToTeam_StudentIsAlreadyAssigned_ExpectInvalidOperationException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; var s1 = new Student() { Id = 1 }; var s2 = new Student() { Id = 2 }; // all students exists in studentRepo studentRepo.Add(s1); studentRepo.Add(s2); var t1 = new Team() { Id = 1, Students = new List <Student>() { s1 } }; var t2 = new Team() { Id = 2, Students = new List <Student>() { s2 } }; // all teams exists in teamRepo teamRepo.Add(t1); teamRepo.Add(t2); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act + assert var ex = Assert.Throws <InvalidOperationException>(() => service.AddStudentToTeam(t1, s2)); Assert.Equal("Student is already assigned to a team", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == t1)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void CreateStudentTeamService_TeamRepositoryIsNull_ExpectArgumentException() { // arrange StudentTeamService service = null; // act + assert var ex = Assert.Throws <ArgumentException>(() => { service = new StudentTeamService(studentRepoMock.Object, null); }); Assert.Equal("TeamRepository is missing", ex.Message); Assert.Null(service); }
public void MoveStudentToNewTeam_StudentNotMemberOfFromTeam_ExpectInvalidOperationException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; // student exists in student repository var student = new Student() { Id = 1 }; studentRepo.Add(student); // both teams exist in team repository // student is not a member of fromTeam var fromTeam = new Team() { Id = 1, Students = new List <Student>() }; var toTeam = new Team() { Id = 2, Students = new List <Student>() }; teamRepo.Add(fromTeam); teamRepo.Add(toTeam); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act + assert var ex = Assert.Throws <InvalidOperationException>(() => service.MoveStudentToNewTeam(fromTeam, toTeam, student)); Assert.Equal("Student is not a member of From Team", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == fromTeam)), Times.Never); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == toTeam)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void RemoveStudentFromTeam_LegalRemove() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; // student s exists var s = new Student() { Id = 1 }; studentRepo.Add(s); // team t exists with student s as a member var t = new Team() { Id = 1, Students = new List <Student>() { s } }; teamRepo.Add(t); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act service.RemoveStudentFromTeam(t, s); // assert Assert.True(!teamRepo.GetById(t.Id).Students.Contains(s)); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(team => team == t)), Times.Once); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void RemoveStudentFromTeam_StudentNotMemberOfTeam_ExpectInvalidOperationException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; // student s exists var s = new Student() { Id = 1 }; studentRepo.Add(s); // team t exists, but student s is not a member var t = new Team() { Id = 1, Students = new List <Student>() }; teamRepo.Add(t); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act + assert var ex = Assert.Throws <InvalidOperationException>(() => service.RemoveStudentFromTeam(t, s)); // assert Assert.Equal("Student is not a member of the team", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(team => team == t)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void MoveStudentToNewTeam_ToTeamIsFull_ExpectInvalidOperationException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; // students exists in student repository var s1 = new Student() { Id = 1 }; var s2 = new Student() { Id = 2 }; var s3 = new Student() { Id = 3 }; var s4 = new Student() { Id = 4 }; var s5 = new Student() { Id = 5 }; studentRepo.Add(s1); studentRepo.Add(s2); studentRepo.Add(s3); studentRepo.Add(s4); studentRepo.Add(s5); // both teams exist in team repository // student is not a member of fromTeam var fromTeam = new Team() { Id = 1, Students = new List <Student>() { s5 } }; var toTeam = new Team() { Id = 2, Students = new List <Student>() { s1, s2, s3, s4 } }; teamRepo.Add(fromTeam); teamRepo.Add(toTeam); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act + assert var ex = Assert.Throws <InvalidOperationException>(() => service.MoveStudentToNewTeam(fromTeam, toTeam, s5)); Assert.Equal("To Team is full", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == fromTeam)), Times.Never); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(t => t == toTeam)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }
public void AddStudentToTeam_ToManyStudents_ExpectInvalidOperationException() { // arrange var studentRepo = studentRepoMock.Object; var teamRepo = teamRepoMock.Object; var s1 = new Student() { Id = 1 }; var s2 = new Student() { Id = 2 }; var s3 = new Student() { Id = 3 }; var s4 = new Student() { Id = 4 }; var s5 = new Student() { Id = 5 }; // all students exists in studentRepo studentRepo.Add(s1); studentRepo.Add(s2); studentRepo.Add(s3); studentRepo.Add(s4); studentRepo.Add(s5); // team t is full var t = new Team() { Id = 1, Students = new List <Student>() { s1, s2, s3, s4 } }; // team t exists in teamRepo teamRepo.Add(t); var studentsBeforeTest = new List <Student>(studentRepo.GetAll()); var teamsBeforeTest = new List <Team>(teamRepo.GetAll()); var service = new StudentTeamService(studentRepo, teamRepo); // act + assert var ex = Assert.Throws <InvalidOperationException>(() => service.AddStudentToTeam(t, s5)); Assert.Equal("Team is full", ex.Message); teamRepoMock.Verify(repo => repo.Update(It.Is <Team>(team => team == t)), Times.Never); // verify that repositories contains same objects as before act. Assert.Equal(studentsBeforeTest, studentRepoMock.Object.GetAll()); Assert.Equal(teamsBeforeTest, teamRepoMock.Object.GetAll()); }