public void Parse_WithTwoValidLines_ShouldReturnBothItemsWithCorrectIp()
        {
            var logItems = parser.Parse(twoLines);

            logItems.Should().NotBeNullOrEmpty();
            logItems.Should().Contain(item => item.Ip == "212.120.32.82")
            .And.Contain(item => item.Ip == "83.150.38.202")
            .And.HaveCount(2);
        }
        public ActionResult Upload(HttpPostedFileBase file)
        {
            AnalysisResult result;

            try
            {
                var lines         = reader.ReadLog(file.InputStream);
                var logItems      = parser.Parse(lines);
                var clientResults = logItems.GroupBy(item => item.Ip)
                                    .Select(group => new ClientResult(@group.Key, @group.Count()))
                                    .ToList();
                result = new AnalysisResult(clientResults, "Successfully analyzed the log file.");
            }
            catch (InvalidOperationException exception)
            {
                result = new AnalysisResult(new List <ClientResult>(), exception.Message);
            }

            ViewResult view = View("Result", result);

            return(view);
        }