public void GroupByTitleAndStaff_given_two_classes_with_same_title_and_staff_joins_them() { var items = new[] { new Item { Id = "1", Title = "Danish", Location = new[] { "Room 4" }, StaffName = "Ole", Start = DateTime.Parse("2017-11-29 08:00:00"), End = DateTime.Parse("2017-11-29 08:45:00"), }, new Item { Id = "2", Title = "Danish", Location = new[] { "Room 4" }, StaffName = "Ole", Start = DateTime.Parse("2017-11-29 09:00:00"), End = DateTime.Parse("2017-11-29 09:45:00"), }, new Item { Id = "3", Title = "Danish", Location = new[] { "Room 4" }, StaffName = "Ole", Start = DateTime.Parse("2017-11-30 08:00:00"), End = DateTime.Parse("2017-11-30 08:45:00"), }, new Item { Id = "4", Title = "Danish", Location = new[] { "Room 4" }, StaffName = "Peter", Start = DateTime.Parse("2017-11-30 09:00:00"), End = DateTime.Parse("2017-11-30 09:45:00"), } }; var expected = new[] { new Item { Id = "1", Title = "Danish", Location = new[] { "Room 4" }, StaffName = "Ole", Start = DateTime.Parse("2017-11-29 08:00:00"), End = DateTime.Parse("2017-11-29 09:45:00"), }, new Item { Id = "3", Title = "Danish", Location = new[] { "Room 4" }, StaffName = "Ole", Start = DateTime.Parse("2017-11-30 08:00:00"), End = DateTime.Parse("2017-11-30 08:45:00"), }, new Item { Id = "4", Title = "Danish", Location = new[] { "Room 4" }, StaffName = "Peter", Start = DateTime.Parse("2017-11-30 09:00:00"), End = DateTime.Parse("2017-11-30 09:45:00"), } }; var converter = new CalendarConverter(); var group = converter.GroupByTitleAndStaff(items); Assert.Equal(expected, group); }