public void Latest()
        {
            var settings = new BeatSaverFeedSettings(BeatSaverFeedName.Latest);
            var feed     = new BeatSaverFeed(settings);

            feed.EnsureValidSettings();
            Assert.IsTrue(feed.HasValidSettings);
        }
        public void Search_HasQuery()
        {
            var settings     = new BeatSaverFeedSettings(BeatSaverFeedName.Search);
            var queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.all, "test");

            settings.SearchQuery = queryBuilder.GetQuery();
            var feed = new BeatSaverFeed(settings);

            feed.EnsureValidSettings();
            Assert.IsTrue(feed.HasValidSettings);
        }
        public void Author_EmptyCriteria()
        {
            var settings     = new BeatSaverFeedSettings(BeatSaverFeedName.Author);
            var queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.author, "");

            settings.SearchQuery = queryBuilder.GetQuery();
            var feed = new BeatSaverFeed(settings);
            var ex   = Assert.ThrowsException <InvalidFeedSettingsException>(() => feed.EnsureValidSettings());

            Console.WriteLine(ex.Message);
            Assert.IsFalse(feed.HasValidSettings);
        }
        public void UnusedQuery()
        {
            var querylessFeeds = new BeatSaverFeedName[] { BeatSaverFeedName.Latest, BeatSaverFeedName.Plays };
            var queryBuilder   = new SearchQueryBuilder(BeatSaverSearchType.all, "test");

            foreach (var feedType in querylessFeeds)
            {
                var settings = new BeatSaverFeedSettings(feedType);
                settings.SearchQuery = queryBuilder.GetQuery();
                var feed = new BeatSaverFeed(settings);
                feed.EnsureValidSettings();
                Assert.IsTrue(feed.HasValidSettings);
            }
        }
        public void GetUriForDate_Before()
        {
            string dateStr = "2021-08-02T20:36:22.804Z";

            DateTime.Parse(dateStr);
            DateTime dateTime = DateTime.Parse(dateStr);
            FeedDate feedDate = new FeedDate(dateTime, DateDirection.Before);
            BeatSaverFeedSettings settings = new BeatSaverFeedSettings(BeatSaverFeedName.Latest);
            BeatSaverFeed         feed     = new BeatSaverFeed(settings);
            string expectedUrl             = $"https://api.beatsaver.com/maps/latest?automapper=false&before={dateStr}";

            string actualUrl = feed.GetUriForDate(feedDate).ToString();

            Assert.AreEqual(expectedUrl, actualUrl);
        }