public StreamState(StreamStatus streamStatus, DateTime latestStreamOnTime, DateTime latestStreamOffTime, TwitchStreamStatus.RootObject rawStatus) { StreamStatus = streamStatus; LatestStreamOnTime = latestStreamOnTime; LatestStreamOffTime = latestStreamOffTime; Viewers = rawStatus.stream?.viewers ?? 0; Title = rawStatus.stream?.channel.status; Game = rawStatus.stream?.game; Delay = rawStatus.stream?.delay ?? 0; AverageFps = rawStatus.stream?.average_fps ?? 0; CreatedAt = rawStatus.stream?.Parsed_created_at ?? DateTime.MaxValue; }
private Container _getContainer(DateTime now, DateTime onTime, DateTime offTime, TwitchStreamStatus.RootObject current, StreamStatus previous) { var timeService = Substitute.For <ITimeService>(); timeService.UtcNow.Returns(now); var urlJsonParser = Substitute.For <IGenericClassFactory <string, string, string> >(); urlJsonParser.Create <TwitchStreamStatus.RootObject>(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <string>()).Returns(current); var container = new TestContainerManager(c => { var timeServiceRegistration = Lifestyle.Singleton.CreateRegistration(() => timeService, c); c.RegisterConditional(typeof(ITimeService), timeServiceRegistration, pc => !pc.Handled); var urlJsonParserRegistration = Lifestyle.Singleton.CreateRegistration(() => urlJsonParser, c); c.RegisterConditional(typeof(IGenericClassFactory <string, string, string>), urlJsonParserRegistration, _ => true); }, s => s.OnOffTimeTolerance = TimeSpan.FromMinutes(2)) .InitializeAndIsolateRepository(); var unitOfWork = container.GetInstance <IQueryCommandService <IUnitOfWork> >(); unitOfWork.Command(u => { u.StateIntegers.StreamStatus = previous; u.StateIntegers.LatestStreamOnTime = onTime; u.StateIntegers.LatestStreamOffTime = offTime; }); return(container); }