예제 #1
0
        public async Task FindTopicCategoriesUsesDataCorrectly()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("TopicCategory")
            };

            var meetup = MeetupClient.WithApiToken("TestToken", options);
            var topics = await meetup.Topics.FindCategories();

            Assert.NotNull(topics.Data);
            Assert.Equal(3, topics.Data.Length);

            var topic = topics.Data.Skip(1).First();

            Assert.Equal("Tech", topic.Name);
            Assert.Equal("tech", topic.ShortName);
            Assert.Equal("Tech", topic.SortName);
            Assert.Equal(292, topic.Id);
            Assert.Single(topic.CategoryIds);
            Assert.NotNull(topic.Photo);

            Assert.Equal(450131949, topic.Photo.Id);
            Assert.Equal(MeetupPhotoType.Event, topic.Photo.Type);
            Assert.Equal("https://secure.meetupstatic.com/", topic.Photo.BaseUrl.ToString());
            Assert.Equal("https://secure.meetupstatic.com/photos/event/2/e/a/d/highres_450131949.jpeg", topic.Photo.HighRes.ToString());
            Assert.Equal("https://secure.meetupstatic.com/photos/event/2/e/a/d/600_450131949.jpeg", topic.Photo.Photo.ToString());
            Assert.Equal("https://secure.meetupstatic.com/photos/event/2/e/a/d/thumb_450131949.jpeg", topic.Photo.Thumb.ToString());
        }
예제 #2
0
 public async Task GetGeneratesCorrectUrl()
 {
     var options = new MeetupClientOptions
     {
         Client = FakeHttpClient.AssertUrl("/tech-nottingham")
     };
     var meetup = MeetupClient.WithApiToken("testToken", options);
     await meetup.Groups.Get("tech-nottingham");
 }
예제 #3
0
 public async Task GetWithFieldsGeneratesCorrectUrl()
 {
     var options = new MeetupClientOptions
     {
         Client = FakeHttpClient.AssertUrl("/tech-nottingham?fields=plain_text_no_images_description")
     };
     var meetup = MeetupClient.WithApiToken("testToken", options);
     await meetup.Groups.Get("tech-nottingham", new [] { "plain_text_no_images_description" });
 }
예제 #4
0
        public async Task FindTopicUsesCorrectUrl()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/topics?photo-host=public&query=tech")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Topics.Find("tech");
        }
예제 #5
0
        public async Task FindTopicCategoriesUsesCorrectUrl()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/topic_categories?photo-host=public")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Topics.FindCategories();
        }
예제 #6
0
        public async Task FindTopicThrowsIfQueryIsEmpty()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/topics?photo-host=public&query=tech")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await Assert.ThrowsAsync <ArgumentNullException>(() => meetup.Topics.Find(string.Empty));
        }
예제 #7
0
        public async Task CreateForGeneratesCorrectUrl()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/tech-nottingham/venues?fields=taglist", System.Net.Http.HttpMethod.Post)
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Venues.CreateFor("tech-nottingham", new Venue());
        }
예제 #8
0
        public async Task RecommendedVenueEmptyGeneratesCorrectUrl()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/recommended/venues?fields=taglist")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Venues.Recommended();
        }
예제 #9
0
 public async Task StatusCreatesCorrectCall()
 {
     var client   = FakeHttpClient.AssertUrl("/status");
     var defaults = new MeetupClientOptions
     {
         Client = client
     };
     var meetup = new MeetupClient(defaults);
     await meetup.Meta.Status();
 }
예제 #10
0
        public async Task ForGroupGeneratesCorrectUrl()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/tech-nottingham/venues?fields=taglist")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Venues.For("tech-nottingham");
        }
예제 #11
0
        public void CustomSerializerWithOAuthTokenSetCorrectly()
        {
            var defaults = new MeetupClientOptions
            {
                CustomSerializer = new JsonSerializer()
            };
            var meetupClient = MeetupClient.WithOAuthToken(TestToken, defaults);

            Assert.Equal(defaults, meetupClient.Options);
        }
예제 #12
0
        public async Task FindVenueOrderedNameGeneratesCorrectUrl()
        {
            var request = new FindVenuesRequest("rock city");

            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/venues?text=rock+city&fields=taglist&order=rating")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Venues.Find("rock city", VenueOrderBy.Rating);
        }
예제 #13
0
        public async Task RecommendedTopicThrowsIfGroupsListIsEmpty()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/topics?photo-host=public&query=tech")
            };

            var meetup    = MeetupClient.WithApiToken("testToken", options);
            var exception = await Assert.ThrowsAsync <ArgumentNullException>(() => meetup.Topics.RecommendedGroupTopic(new int[] {}));

            Assert.Equal("basedOnTopics", exception.ParamName);
        }
예제 #14
0
        public async Task LocationFindGeneratesCorrectResponse()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("FindLocation")
            };

            var meetup   = MeetupClient.WithApiToken("testToken", options);
            var response = await meetup.Geo.FindLocation(string.Empty);

            Assert.Equal(5, response.Data.Length);
        }
예제 #15
0
        public async Task CreateForGeneratesCorrectBodyContent()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertContent <Venue>(v => {
                    Assert.NotNull(v);
                    Assert.Equal("random place", v.Name);
                })
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Venues.CreateFor("tech-nottingham", new Venue { Name = "random place" });
        }
예제 #16
0
        public async Task SetQuerystringAppearsInUrl()
        {
            var defaults = new MeetupClientOptions
            {
                Client = new FakeHttpClient(req =>
                {
                    Assert.Equal("/test?test=test", req.RequestUri.PathAndQuery);
                    return(new HttpResponseMessage());
                })
            };

            await MeetupRequestMethods.GetAsync("/test", defaults, new FakeMeetupRequest());
        }
예제 #17
0
        public async Task StatusDeserialisesCorrectly()
        {
            var defaults = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("StatusResponse")
            };
            var meetup         = new MeetupClient(defaults);
            var meetupResponse = await meetup.Meta.Status();

            var statusResponse = meetupResponse.Data;

            Assert.Equal("test message", statusResponse.Message);
            Assert.Equal("test title", statusResponse.Title);
            Assert.Equal(ApiStatus.Unavailable, statusResponse.ApiStatus);
        }
예제 #18
0
        public async Task FindTopicCategoriesUsesRequest()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/topic_categories?photo-host=public&lat=45.3&lon=-1.18&radius=23.4")
            };

            var request = new FindTopicCategoriesRequest
            {
                Latitude    = 45.3,
                Longitude   = -1.18,
                MilesRadius = 23.4
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Topics.FindCategories(request);
        }
예제 #19
0
        public async Task GetGeneratesCorrectData()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("Group")
            };
            var meetup   = MeetupClient.WithApiToken("testToken", options);
            var response = await meetup.Groups.Get("tech-nottingham");

            var data = response.Data;

            Assert.Equal(14171002, data.Id);
            Assert.Equal("Tech Nottingham", data.Name);
            Assert.Equal(MeetupVisibility.Public, data.Visibility);
            Assert.NotNull(data.Organizer);
            Assert.Equal(202648061, data.Organizer.Id);
        }
예제 #20
0
        public async Task RsvpParsesDataCorrectly()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("Rsvps")
            };

            var meetup   = MeetupClient.WithApiToken("testToken", options);
            var response = await meetup.Rsvps.For("tech-nottingham", "258091947");

            Assert.Single(response.Data);

            var rsvpData = response.Data.First();

            Assert.Equal("yes", rsvpData.Response);
            Assert.Equal("coorganizer", rsvpData.Member.Role);
        }
예제 #21
0
        public async Task RsvpForUsesCorrectUrl()
        {
            var request = new GetRsvpsRequest("tech-nottingham", "258091947")
            {
                Response   = RsvpStatus.YesAndNo,
                OrderBy    = RsvpOrderBy.Social,
                Descending = true
            };

            var querystring = "response=yes%2Cno&order=social&desc=true";
            var options     = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/tech-nottingham/events/258091947/rsvps?photo-host=public&" + querystring)
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Rsvps.For(request);
        }
예제 #22
0
        public async Task RecommendedTopicGeneratesCorrectUrl()
        {
            var request = new RecommendedGroupTopicRequest("tech")
            {
                LanguageCode    = "en_US",
                OtherTopics     = new [] { 45 },
                ExcludeTopics   = new[] { 123 },
                NumberOfResults = 20
            };

            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/recommended/group_topics?photo-host=public&text=tech&other_topics=45&exclude_topics=123&lang=en_US&page=20")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Topics.RecommendedGroupTopic(request);
        }
예제 #23
0
        public async Task ContextHeadersWork()
        {
            var defaults = new MeetupClientOptions
            {
                Client = new FakeHttpClient(req =>
                {
                    Assert.Equal("test%25group", req.Headers.GetValues("X-Meta-Visit").First());
                    Assert.Equal("12345", req.Headers.GetValues("X-Meta-Visit-Event").First());
                    Assert.Equal("/test?test=test", req.RequestUri.PathAndQuery);
                    return(new HttpResponseMessage());
                })
            };

            await MeetupRequestMethods.GetAsync("/test", defaults, new FakeMeetupRequest {
                ContextEventId   = "12345",
                ContextGroupName = "test%group"
            });
        }
예제 #24
0
        public async Task FindVenueParsesData()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("FindVenues")
            };

            var meetup   = MeetupClient.WithApiToken("testToken", options);
            var response = await meetup.Venues.Find("test");

            Assert.Equal(3, response.Data.Length);

            var sample = response.Data.First();

            Assert.Equal(10, sample.Tags.Length);
            Assert.Equal(VenueVisibility.Public, sample.Visibility);
            Assert.Equal("Quartet statue", sample.Name);
        }
예제 #25
0
        public async Task LocationFindGeneratesCorrectUrl()
        {
            var request = new FindLocationRequest
            {
                Name      = "bas",
                Longitude = 57.2,
                Latitude  = -1.18,
                Page      = 1,
                PageSize  = 2
            };

            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/location?query=bas&lon=57.2&lat=-1.18&page=2&offset=1")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Geo.FindLocation(request);
        }
예제 #26
0
        public async Task LocationPropertiesAreAccurate()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("FindLocation")
            };

            var meetup   = MeetupClient.WithApiToken("testToken", options);
            var response = await meetup.Geo.FindLocation(string.Empty);

            var location = response.Data[2];

            Assert.Equal("Stratford ", location.City);
            Assert.Equal("gb", location.Country);
            Assert.Equal("United Kingdom", location.LocalizedCountryName);
            Assert.Equal("Stratford , England, United Kingdom", location.FullName);
            Assert.Equal("E15", location.Zip);
            Assert.Equal(51.54, location.Latitude);
            Assert.Equal(0.01, location.Longitude);
        }
예제 #27
0
        public async Task FindTopicUsesDataCorrectly()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("Topics")
            };

            var meetup   = MeetupClient.WithApiToken("testToken", options);
            var response = await meetup.Topics.Find("tech");

            Assert.Equal(3, response.Data.Length);
            var topic = response.Data.Skip(1).First();

            Assert.Equal(10579, topic.Id);
            Assert.Equal("Technology", topic.Name);
            Assert.Equal("technology", topic.UrlKey);
            Assert.Equal("Meetup with other people interested in the internet and technology!", topic.Description);
            Assert.Equal(6981, topic.GroupCount);
            Assert.Equal(4927597, topic.MemberCount);
            Assert.Equal("en_US", topic.LanguageCode);
        }
예제 #28
0
        public async Task EventForUsesCorrectUrl()
        {
            var request = new GetEventsRequest("tech-nottingham")
            {
                NoLaterThan   = new DateTime(2018, 01, 01).AddMonths(1),
                NoEarlierThan = new DateTime(2018, 01, 01).AddDays(1),
                PageSize      = 20,
                ScrollTo      = EventScrollTo.recent_past,
                Status        = EventStatus.Past | EventStatus.Upcoming,
                Descending    = true
            };

            var querystring = "no_earlier_than=2018-01-02T00%3A00%3A00&no_later_than=2018-02-01T00%3A00%3A00&page=20&scroll=recent_past&status=past%2Cupcoming&desc=true";
            var options     = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/tech-nottingham/events?photo-host=public&" + querystring)
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Events.For(request);
        }
예제 #29
0
        public async Task FindVenueRequestGeneratesCorrectUrl()
        {
            var request = new FindVenuesRequest("rock city")
            {
                Country     = "UK",
                Latitude    = 2.3,
                Longitude   = 20.5,
                Location    = "nottingham",
                MilesRadius = 25.6,
                Zip         = "NG6",
                Descending  = true,
                OrderBy     = VenueOrderBy.Rating_Count
            };

            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertUrl("/find/venues?text=rock+city&fields=taglist&country=UK&lat=2.3&lon=20.5&location=nottingham&radius=25.6&zip=NG6&order=rating_count&desc=true")
            };

            var meetup = MeetupClient.WithApiToken("testToken", options);
            await meetup.Venues.Find(request);
        }
예제 #30
0
        public async Task EventParsesDataCorrectly()
        {
            var options = new MeetupClientOptions
            {
                Client = FakeHttpClient.AssertResponse("Events")
            };

            var meetup   = MeetupClient.WithApiToken("testToken", options);
            var response = await meetup.Events.For("tech-nottingham");

            Assert.Single(response.Data);

            var eventData = response.Data.First();

            Assert.Equal("Tech Nottingham August 2018: Secure Signups and Visual Testing", eventData.Name);
            Assert.Equal(84, eventData.RSVPYesCount);
            Assert.NotNull(eventData.Venue);
            Assert.Equal("Beck Street", eventData.Venue.Address1);
            Assert.False(eventData.Venue.Repinned);
            Assert.Equal(9000000, eventData.DurationMilliseconds);
            Assert.NotNull(eventData.Group);
            Assert.Equal("Techies", eventData.Group.Who);
            Assert.Equal(MeetupVisibility.Public, eventData.Visibility);
        }