nuddles
Version:
Node.js wrapper for the Foursquare API
227 lines (171 loc) • 6.75 kB
JavaScript
const chai = require('chai')
const assert = chai.assert
const Venue = require('../../index').Venue
let client = require('../config').userlessClient
const venue = new Venue(client, "40a55d80f964a52020f31ee3")
describe('Test Venue.searchVenues', () => {
it('searches venues and returns results based on location',() => {
let params = {'near': 'Paris, France'}
let searchVenues = venue.search(params)
return searchVenues.then( (data) => {
let response = data.response
assert.equal(200, data.meta.code)
assert.property(response, 'venues')
assert.isArray(response.venues)
assert.include(response.geocode.where, 'paris france')
})
})
})
describe('Test Nuddles.exploreVenues', () => {
it('returns one or more groups of recommendations', () => {
let params = {near: 'Paris, France', limit: 3, radius: 1700}
let recommendations = venue.explore(params)
return recommendations.then( (data) => {
let response = data.response
assert.equal(200, data.meta.code)
assert.equal(params.near, response.geocode.displayString)
})
})
it('returns a 400 if no location attribute is passed', () => {
let params = {limit: 3}
let recommendations = venue.explore(params)
return recommendations.catch( (errorMsg) => {
assert.include(errorMsg, 400)
assert.include(errorMsg,'Must provide parameters (ll and radius) or (sw and ne) or (near and radius) or (nearVenueId and ll) or (superVenueId) or (polygon)')
})
})
})
describe(' Test Nuddles.getVenueCategories', (done) => {
it('returns a list of all categories', () => {
let venueCategories = venue.getCategories()
return venueCategories.then( (data) => {
let response = data.response
assert.equal(200, data.meta.code)
assert.property(response, 'categories')
assert.isArray(response.categories)
assert.isAtLeast(response.categories.length, 1)
})
})
})
describe('Test Nuddles.getTrendingVenues', () => {
it('returns a list of trending venues', () => {
let queryParams = {near: 'Paris, France', limit: 3, radius: 2000}
let trendingVenues = venue.getTrending(queryParams)
return trendingVenues.then( (data) => {
let response = data.response
assert.equal(200, data.meta.code)
assert.property(response, 'venues')
assert.isArray(response.venues)
assert.include(response.geocode.where, 'paris france')
})
})
it('returns a 400 if no location parameter is passed', () => {
let queryParams = {limit: 3, radius: 1700}
let trendingVenues = venue.getTrending(queryParams)
return trendingVenues.catch( (errorMsg) => {
assert.include(errorMsg, '400')
assert.include(errorMsg, 'Must provide parameter ll or userll or near')
})
})
})
describe('Test Venue.getDetails()', () => {
it('will return details about a venue based on id', () => {
let venueDetails = venue.getDetails()
return venueDetails.then( (data) => {
let response = data.response
assert.equal(200, data.meta.code)
assert.property(response, 'venue')
assert.equal(venue.venueId, response.venue.id)
})
})
it('will return a 400 bad request when given an invalid id', () => {
const someRandomVenue = new Venue(client, "someid")
let venueDetails = someRandomVenue.getDetails()
return venueDetails.catch( (errorMsg) => {
assert.include(errorMsg, '400')
assert.include(errorMsg, `Value ${someRandomVenue.venueId} is invalid for venue id`)
})
})
})
describe('Test Venue.getPhotos', () => {
it('returns a list of photos', () => {
let photosList = venue.getPhotos()
return photosList.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'photos')
})
})
})
describe('Test Venue.getEvents', () => {
it('returns a list of events for that venue', () => {
let photosList = venue.getEvents()
return photosList.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'events')
})
})
})
describe('Test Venue.getLikes', () => {
it('returns the number of likes for that venue', () => {
let likes = venue.getLikes()
return likes.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'likes')
})
})
})
describe('Test Venue.getNextVenues', () => {
it('returns a list of the most visited venues after this one', () => {
let nextVenues = venue.getNextVenues()
return nextVenues.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'nextVenues')
})
})
})
describe('Test Venue.getOpeningHours', () => {
it('returns opening hours for a venue', () => {
let openingHours = venue.getOpeningHours()
return openingHours.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'hours')
assert.property(data.response, 'popular')
})
})
})
describe('Test Venue.getThirdPartyLinks', () => {
it('returns third party links for a venue', () => {
let links = venue.getThirdPartyLinks()
return links.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'links')
})
})
})
describe('Test Venue.getMenu', () => {
it('returns a menu for a venue', () => {
let menu = venue.getMenu()
return menu.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'menu')
})
})
})
describe('Test Venue.getTips', () => {
it('returns tips for a venue', () => {
let tips = venue.getTips()
return tips.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'tips')
})
})
})
describe('Test Venue.getLists', () => {
it('returns a list of lists the venue is part of', () => {
let lists = venue.getLists()
return lists.then( (data) => {
assert.equal(200, data.meta.code)
assert.property(data.response, 'lists')
})
})
})