static void Main(string[] args) { var path = args[0]; if (string.IsNullOrEmpty(path)) { Console.WriteLine("Import file path required"); return; } IParticipantImporter importer = new ParticipantImporter(); IDrawingService drawingService = new DrawingService(); ISMSSender textMessageSender = new AwsSMSSender(); var participants = importer.Read(path); var assignments = drawingService.Draw(participants); foreach (var assignment in assignments) { var message = $"{assignment.Name}, welcome to the Highland Gift Exchange. You drew {assignment.PersonDrawn.Name}. $10 limit, white elephant gift."; textMessageSender.Send(assignment.Phone, message); Console.WriteLine($"Text sent to {assignment.Name}"); } if (!string.IsNullOrEmpty(args[1])) { IExchangeLogger logger = new ExchangeLogger(); logger.Write(assignments, args[1]); } }
public IActionResult ProcessDraw(FunctionDescription[] functionDescriptions) { try { return(View("Graph", drawer.Draw(functionDescriptions))); } catch (DrawingException e) { return(Error(e.Message)); } }
public void Draw_returns_the_same_number_of_participants_as_was_passed_in_args() { // Arrange var service = new DrawingService(); // Act var results = service.Draw(TestParticipants); // Assert results.Count.ShouldBe(TestParticipants.Count); }
public void Draw_matches_everybody_up() { // Arrange var service = new DrawingService(); // Act var results = service.Draw(TestParticipants); // Assert results.All(r => r.PersonDrawn != null); }
public void Draw_doesnt_assign_anybody_to_themselves() { // Arrange var service = new DrawingService(); // Act var results = service.Draw(TestParticipants); // Assert foreach (var result in results) { result.Name.ShouldNotBe(result.PersonDrawn.Name); } }
public void Draw_doesnt_match_somebody_up_twice() { // Arrange var service = new DrawingService(); // Act var results = service.Draw(TestParticipants); // Assert results.Select(r => r.PersonDrawn.Name).Distinct().Count().ShouldBe(TestParticipants.Count); foreach (var result in results) { Debug.WriteLine($"{result.Name} was assigned to {result.PersonDrawn.Name}"); } }