Example #1
0
        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]);
            }
        }
Example #2
0
 public IActionResult ProcessDraw(FunctionDescription[] functionDescriptions)
 {
     try
     {
         return(View("Graph", drawer.Draw(functionDescriptions)));
     }
     catch (DrawingException e)
     {
         return(Error(e.Message));
     }
 }
Example #3
0
        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);
        }
Example #4
0
        public void Draw_matches_everybody_up()
        {
            // Arrange
            var service = new DrawingService();

            // Act
            var results = service.Draw(TestParticipants);

            // Assert
            results.All(r => r.PersonDrawn != null);
        }
Example #5
0
        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);
            }
        }
Example #6
0
        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}");
            }
        }