public void A_Corner_Admin_does_not_increase_the_visitor_count()
        {
            var model = new CornersIndexViewModel {
                Corner = 1
            };

            var sut = CreateController();

            sut.Index(model);

            var corner = _corners.Single(c => c.Id == 1);

            Assert.Equal(3, corner.NumberOfVisitors);
            _cornerRepository.Verify(x => x.Save(), Times.Once());
        }
        public void A_new_visitor_increases_the_visitor_count()
        {
            var model = new CornersIndexViewModel {
                Corner = 2
            };

            var sut = CreateController("127.0.0.1");

            sut.Index(model);

            var corner = _corners.Single(c => c.Id == 2);

            Assert.Equal(4, corner.NumberOfVisitors);
            Assert.Equal(4, corner.CornerVisitors.Count);
            Assert.Equal("127.0.0.1", corner.CornerVisitors.Last().IpAddress);

            _cornerRepository.Verify(x => x.Save(), Times.Once());
        }
        public void An_visitor_returning_after_an_hour_increases_the_visitor_count()
        {
            var model = new CornersIndexViewModel {
                Corner = 2
            };
            var ip  = "127.0.0.1";
            var sut = CreateController(ip);

            AddCornerVisitor(2, ip, DateTime.Now.AddMinutes(-61));

            sut.Index(model);

            var corner = _corners.Single(c => c.Id == 2);

            Assert.Equal(5, corner.NumberOfVisitors);
            Assert.Equal(5, corner.CornerVisitors.Count);

            _cornerRepository.Verify(x => x.Save(), Times.Once());
        }
        public void An_immediate_returning_visitor_does_not_increase_the_visitor_count()
        {
            var model = new CornersIndexViewModel {
                Corner = 2
            };
            var ip  = "127.0.0.1";
            var sut = CreateController(ip);

            AddCornerVisitor(2, ip, DateTime.Now.AddMinutes(-5));

            sut.Index(model);

            var corner = _corners.Single(c => c.Id == 2);

            Assert.Equal(4, corner.NumberOfVisitors);
            Assert.Equal(4, corner.CornerVisitors.Count);
            Assert.Equal("127.0.0.1", corner.CornerVisitors.Last().IpAddress);

            _cornerRepository.Verify(x => x.Save(), Times.Once());
        }