public async Task CalculateWordsPerSession()
        {
            // Arrange
            var handler = new Service.Handlers.SubmitWordsHandler(_context, _mapper);
            var message = new SubmitWords
            {
                SessionId = _existingSession.Id,
                Words     = new List <string>
                {
                    "chocolate",
                    "vanilla",
                },
                DateModified = DateTime.UtcNow
            };
            await handler.Handle(message, new TestsMessageHandlerContext());

            // Act
            await new Worker.Handlers.RefreshCalculationsHandler(Common.GetDbContext(_connectionString), Common.GetMapper())
            .Handle(new RefreshCalculations(), new TestsMessageHandlerContext());

            // Assert
            _context = Common.GetDbContext(_connectionString);
            var vanillaCounts = await _context.SessionWordCounts.SingleAsync(s => s.Word == "vanilla");

            var chocolateCounts = await _context.SessionWordCounts.SingleAsync(s => s.Word == "chocolate");

            Assert.Equal(2, vanillaCounts.Count);
            Assert.Equal(1, chocolateCounts.Count);
        }
Ejemplo n.º 2
0
        public LogRequestHandler()
        {
            _connectionString = Environment.GetEnvironmentVariable("CONNECTION_STRING");

            _context = Common.GetDbContext(_connectionString);

            PopulateDatabase();
        }
        public RefreshCalculationsHandler()
        {
            _mapper = Common.GetMapper();

            _connectionString = Environment.GetEnvironmentVariable("CONNECTION_STRING");

            _context = Common.GetDbContext(_connectionString);

            PopulateDatabase();
        }
        public CloseSessionHandler()
        {
            _mapper = Common.GetMapper();

            _connectionString = Environment.GetEnvironmentVariable("CONNECTION_STRING");

            _context = Common.GetDbContext(_connectionString);

            _existingSession = new Session()
            {
                Id          = Guid.NewGuid(),
                DateCreated = DateTime.UtcNow,
                Status      = 1
            };

            PopulateDatabase();
        }
 public CloseSessionHandler(CountingStringsContext db, IMapper mapper)
 {
     _db     = db;
     _mapper = mapper;
 }
Ejemplo n.º 6
0
 public LogRequestHandler(CountingStringsContext db)
 {
     _db = db;
 }
Ejemplo n.º 7
0
 public SubmitWordsHandler(CountingStringsContext db, IMapper mapper)
 {
     _db     = db;
     _mapper = mapper;
 }
Ejemplo n.º 8
0
 public RefreshCalculationsHandler(CountingStringsContext db, IMapper mapper)
 {
     _db     = db;
     _mapper = mapper;
 }
        public async Task CalculateWordFrequency()
        {
            // Arrange
            var handler = new Service.Handlers.SubmitWordsHandler(Common.GetDbContext(_connectionString), Common.GetMapper());
            var worker  =
                new Worker.Handlers.RefreshCalculationsHandler(Common.GetDbContext(_connectionString),
                                                               Common.GetMapper());

            var messageOld = new SubmitWords
            {
                SessionId = _existingSession.Id,
                Words     = new List <string>
                {
                    "chocolate",    // new
                    "vanilla",      // existing
                },
                DateModified = DateTime.UtcNow
            };

            await handler.Handle(messageOld, new TestsMessageHandlerContext());

            // Act
            await worker.Handle(new RefreshCalculations(), new TestsMessageHandlerContext());

            //Assert
            var refreshedContext = Common.GetDbContext(_connectionString);
            var vanillaData      = await refreshedContext.WordDateCounts.Where(s => s.Word == "vanilla").ToListAsync();

            var chocolateData = await _context.WordDateCounts.Where(s => s.Word == "chocolate").ToListAsync();

            Assert.True(vanillaData.Count == 2);
            Assert.Contains(vanillaData, d => d.Date.Date == DateTime.UtcNow.Date);
            Assert.Contains(vanillaData, d => d.Date.Date == DateTime.UtcNow.AddDays(-1).Date);
            Assert.True(vanillaData.All(d => d.Count == 1));
            Assert.True(chocolateData.Count == 1);
            Assert.Contains(chocolateData, d => d.Date.Date == DateTime.UtcNow.Date);
            Assert.True(vanillaData.All(d => d.Count == 1));

            // Submit new words and recalculate counts.

            // Arrange
            handler = new Service.Handlers.SubmitWordsHandler(Common.GetDbContext(_connectionString), Common.GetMapper());
            var messageNew = new SubmitWords
            {
                SessionId = _existingSession.Id,
                Words     = new List <string>
                {
                    "chocolate",    // existing
                    "vanilla",      // existing
                },
                DateModified = DateTime.UtcNow
            };

            await handler.Handle(messageNew, new TestsMessageHandlerContext());

            // Act
            await new Worker.Handlers.RefreshCalculationsHandler(Common.GetDbContext(_connectionString), Common.GetMapper())
            .Handle(new RefreshCalculations(), new TestsMessageHandlerContext());

            //Assert
            _context    = Common.GetDbContext(_connectionString);
            vanillaData = await _context.WordDateCounts.Where(s => s.Word == "vanilla").ToListAsync();

            chocolateData = await _context.WordDateCounts.Where(s => s.Word == "chocolate").ToListAsync();

            Assert.True(vanillaData.Count == 2);
            Assert.NotNull(vanillaData.SingleOrDefault(v => v.Date.Date == DateTime.UtcNow.Date && v.Count == 2));
            Assert.NotNull(vanillaData.SingleOrDefault(v => v.Date.Date == DateTime.UtcNow.AddDays(-1).Date&& v.Count == 1));
            Assert.True(chocolateData.Count == 1);
            Assert.NotNull(chocolateData.SingleOrDefault(v => v.Date.Date == DateTime.UtcNow.Date && v.Count == 2));
        }