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);
        }
Beispiel #3
0
        /// <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);
        }