void Update_WithThreeSoccerEvents_ReturnsTrue() { // Arrange IEnumerable <SoccerEvent> threeSoccerEvents = new SoccerEvent[] { new SoccerEvent(eventId: 1, homeScore: 2, awayScore: 0, homeTeam: "Bayern Munich", awayTeam: "Arsenal F.C."), new SoccerEvent(eventId: 2, homeScore: 1, awayScore: 1, homeTeam: "Manchester United", awayTeam: "Juventus"), new SoccerEvent(eventId: 3, homeScore: 3, awayScore: 3, homeTeam: "Porto F.C.", awayTeam: "Barcelona") }; Mock <ISoccerEventsProvider> mockProvider = new Mock <ISoccerEventsProvider>(); mockProvider.Setup(m => m.GetAll()).Returns(threeSoccerEvents); Mock <ISoccerEventsStore> mockStore = new Mock <ISoccerEventsStore>(); Mock <INotifier> mockNotifier = new Mock <INotifier>(); string infoEmailAddress = "*****@*****.**", infoMessage = "Soccer events processed successfully", alertEmailAddress = "*****@*****.**", alertSmsNumber = "6999999999", alertMessage = "ALERT! No soccer events!"; SoccerEventsTask sut = new SoccerEventsTask(mockProvider.Object, mockStore.Object, mockNotifier.Object, infoEmailAddress, infoMessage, alertEmailAddress, alertSmsNumber, alertMessage); bool expected = true; // Act bool actual = sut.Update(); // Assert Assert.Equal(expected, actual); }
/// <summary> /// Builds the <see cref="ISportEvent" /> derived class based on specified id /// </summary> /// <typeparam name="T">A <see cref="ISportEvent" /> derived type</typeparam> /// <param name="eventId">The identifier</param> /// <param name="sportId">The sport identifier</param> /// <param name="cultures">The cultures used for returned instance</param> /// <param name="exceptionStrategy">A <see cref="ExceptionHandlingStrategy"/> enum member specifying how the build instance will handle potential exceptions</param> /// <returns>The constructed <see cref="ICompetition"/> derived instance</returns> public T BuildSportEvent <T>(URN eventId, URN sportId, IEnumerable <CultureInfo> cultures, ExceptionHandlingStrategy exceptionStrategy) where T : ISportEvent { ISportEvent sportEvent; switch (eventId.TypeGroup) { case ResourceTypeGroup.MATCH: { if (sportId != null && _soccerSportUrns.Contains(sportId)) { sportEvent = new SoccerEvent(eventId, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy); } else { sportEvent = new Match(eventId, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy); } break; } case ResourceTypeGroup.STAGE: { sportEvent = new Stage(eventId, sportId, this, _sportEventCache, _sportDataCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.BASIC_TOURNAMENT: { sportEvent = new BasicTournament(eventId, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.TOURNAMENT: { sportEvent = new Tournament(eventId, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.SEASON: { sportEvent = new Season(eventId, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.DRAW: { sportEvent = new Draw(eventId, sportId, _sportEventCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.LOTTERY: { sportEvent = new Lottery(eventId, sportId, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.UNKNOWN: { ExecutionLog.Warn($"Received entity with unknown resource type group: id={eventId}, sportId={sportId}"); sportEvent = new SportEvent(eventId, sportId, null, _sportEventCache, cultures, exceptionStrategy); break; } default: throw new ArgumentException($"ResourceTypeGroup:{eventId.TypeGroup} is not supported", nameof(eventId)); } return((T)sportEvent); }
/// <summary> /// Builds the <see cref="ISportEvent" /> derived class based on specified id /// </summary> /// <typeparam name="T">A <see cref="ISportEvent" /> derived type</typeparam> /// <param name="id">The identifier</param> /// <param name="sportId">The sport identifier</param> /// <param name="cultures">The cultures used for returned instance</param> /// <param name="exceptionStrategy">A <see cref="ExceptionHandlingStrategy"/> enum member specifying how the build instance will handle potential exceptions</param> /// <returns>The constructed <see cref="ICompetition"/> derived instance</returns> public T BuildSportEvent <T>(URN id, URN sportId, IEnumerable <CultureInfo> cultures, ExceptionHandlingStrategy exceptionStrategy) where T : ISportEvent { ISportEvent sportEvent; switch (id.TypeGroup) { case ResourceTypeGroup.MATCH: { if (sportId != null && sportId.Equals(URN.Parse("sr:sport:1"))) { sportEvent = new SoccerEvent(id, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy); } else { sportEvent = new Match(id, sportId, this, _sportEventCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy); } break; } case ResourceTypeGroup.STAGE: { sportEvent = new Stage(id, sportId, this, _sportEventCache, _sportDataCache, _eventStatusCache, _matchStatusCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.BASIC_TOURNAMENT: { sportEvent = new BasicTournament(id, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.TOURNAMENT: { sportEvent = new Tournament(id, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.SEASON: { sportEvent = new Season(id, sportId, this, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.DRAW: { sportEvent = new Draw(id, sportId, _sportEventCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.LOTTERY: { sportEvent = new Lottery(id, sportId, _sportEventCache, _sportDataCache, cultures, exceptionStrategy); break; } case ResourceTypeGroup.UNKNOWN: { sportEvent = new SportEvent(id, sportId, null, _sportEventCache, cultures, exceptionStrategy); break; } default: throw new ArgumentException($"ResourceTypeGroup:{id.TypeGroup} is not supported", nameof(id)); } return((T)sportEvent); }