public EventsController(
     IRepository repository,
     IProcessedContentRepository processedContentRepository,
     EventEmailBuilder emailBuilder,
     IRssFeedFactory rssFeedFactory,
     ILogger <EventsController> logger,
     IApplicationConfiguration config,
     BusinessId businessId,
     IFilteredUrl filteredUrl,
     CalendarHelper helper,
     ITimeProvider timeProvider,
     IDateCalculator dateCalculator,
     IStockportApiEventsService stockportApiEventsService)
 {
     _repository = repository;
     _processedContentRepository = processedContentRepository;
     _emailBuilder              = emailBuilder;
     _rssFeedFactory            = rssFeedFactory;
     _logger                    = logger;
     _config                    = config;
     _businessId                = businessId;
     _filteredUrl               = filteredUrl;
     _helper                    = helper;
     _dateCalculator            = dateCalculator;
     _stockportApiEventsService = stockportApiEventsService;
 }
        public EventEmailBuilderTests()
        {
            _logger      = new Mock <ILogger <EventEmailBuilder> >();
            _emailClient = new Mock <IHttpEmailClient>();
            var applicationConfiguration = new Mock <IApplicationConfiguration>();

            applicationConfiguration.Setup(a => a.GetEventSubmissionEmail(It.IsAny <string>()))
            .Returns(AppSetting.GetAppSetting("EventSubmissionEmail"));
            applicationConfiguration.Setup(a => a.GetEmailEmailFrom(It.IsAny <string>()))
            .Returns(AppSetting.GetAppSetting("EventSubmissionEmail"));

            _eventEmailBuilder = new EventEmailBuilder(_logger.Object, _emailClient.Object, applicationConfiguration.Object, new BusinessId("businessId"));
        }
        public EventsControllerTest()
        {
            _eventsItem = new Event {
                Title    = "title", Slug = "slug", Teaser = "teaser", ImageUrl = "image.png", ThumbnailImageUrl = "image.png", Description = "description", Fee = "fee",
                Location = "location", SubmittedBy = "submittedBy", EventDate = new DateTime(2016, 12, 30, 00, 00, 00), StartTime = "startTime", EndTime = "endTime", Breadcrumbs = new List <Crumb>(), Group = _group, Alerts = _alerts
            };
            _categories = new List <string> {
                "Category 1", "Category 2"
            };

            var mockTime = new Mock <ITimeProvider>();

            _datetimeCalculator = new DateCalculator(mockTime.Object);

            var eventsCalendar = new EventResponse(new List <Event> {
                _eventsItem
            }, _categories);
            var eventItem = new ProcessedEvents("title", "slug", "teaser", "image.png", "image.png", "description",
                                                "fee", "location", "submittedBy", new DateTime(2016, 12, 30, 00, 00, 00), "startTime", "endTime",
                                                new List <Crumb>(), _categories, new MapDetails(), "booking information", _group, _alerts, string.Empty, string.Empty);

            var eventHomepage = new EventHomepage {
                Categories = new List <EventCategory>(), Rows = new List <EventHomepageRow>()
            };

            // setup responses (with mock data)
            responseListing = new HttpResponse(200, eventsCalendar, "");
            _responseDetail = new HttpResponse(200, eventItem, "");
            var responseHomepage = new HttpResponse(200, eventHomepage, "");
            var response404      = new HttpResponse(404, null, "not found");

            // setup mocks
            _repository.Setup(o => o.Get <EventHomepage>(It.IsAny <string>(), It.IsAny <List <Query> >()))
            .ReturnsAsync(responseHomepage);

            _repository.Setup(o => o.Get <EventResponse>(It.IsAny <string>(), It.IsAny <List <Query> >()))
            .ReturnsAsync(responseListing);

            _processedContentRepository.Setup(o => o.Get <Event>("event-of-the-century", It.Is <List <Query> >(l => l.Count == 0)))
            .ReturnsAsync(_responseDetail);

            _processedContentRepository.Setup(o => o.Get <Event>("404-event", It.Is <List <Query> >(l => l.Count == 0)))
            .ReturnsAsync(response404);

            _emailClient = new Mock <IHttpEmailClient>();
            _applicationConfiguration = new Mock <IApplicationConfiguration>();
            _logger      = new Mock <ILogger <EventsController> >();
            _emaillogger = new Mock <ILogger <EventEmailBuilder> >();

            _applicationConfiguration.Setup(a => a.GetEmailEmailFrom(It.IsAny <string>()))
            .Returns(AppSetting.GetAppSetting("GroupSubmissionEmail"));

            _eventEmailBuilder = new EventEmailBuilder(_emaillogger.Object, _emailClient.Object, _applicationConfiguration.Object, new BusinessId("businessId"));

            _mockRssFeedFactory = new Mock <IRssFeedFactory>();
            _config             = new Mock <IApplicationConfiguration>();
            _filteredUrl        = new Mock <IFilteredUrl>();

            _config.Setup(o => o.GetRssEmail(BusinessId)).Returns(AppSetting.GetAppSetting("rss-email"));
            _config.Setup(o => o.GetEmailAlertsNewSubscriberUrl(BusinessId)).Returns(AppSetting.GetAppSetting("email-alerts-url"));

            _controller = new EventsController(
                _repository.Object,
                _processedContentRepository.Object,
                _eventEmailBuilder,
                _mockRssFeedFactory.Object,
                _logger.Object,
                _config.Object,
                new BusinessId(BusinessId),
                _filteredUrl.Object,
                null,
                null,
                _datetimeCalculator,
                null
                );
        }