def city(state_id): """Handle GET and POST requests to /states/<state_id>/cities route. Return a list of all cities in state (according to database) in the case of a GET request. Create a new city record in the given state in the database in the case of a POST request. """ # handle GET requests: # -------------------------------------------------------------------------- if request.method == 'GET': list = [] for record in City.select().where(City.state == state_id): hash = record.to_hash() list.append(hash) return jsonify(list) # handle POST requests: # -------------------------------------------------------------------------- elif request.method == 'POST': try: record = City(name=request.form["name"], state=state_id) record.save() return jsonify(record.to_hash()) # return 409 if city with given name already exists except IntegrityError: return json_response(add_status_=False, status_=409, code=10002, msg="City already exists in this state")
def setUp(self): # disabling logs logging.disable(logging.CRITICAL) self.app = app.test_client() # connecting to the database db.connect() # creating tables db.create_tables([User], safe=True) db.create_tables([State], safe=True) db.create_tables([City], safe=True) db.create_tables([Place], safe=True) db.create_tables([PlaceBook], safe=True) # Creating a setUp new_state = State(name='California') new_state.save() new_city = City(name='San Francisco', state=1) new_city.save() # Creating a new users user1 = User(first_name='Jon', last_name='Snow', email='jon@snow', password='******') user1.save() new_place = Place(owner=1, city=1, name="Steven", description="house", number_rooms=3, number_bathrooms=2, max_guest=3, price_by_night=100, latitude=37.774929, longitude=-122.419416) new_place.save()
def test_city_state(self): new_state = State(name="California") new_state.save() new_city = City(name="San Francisco", state=1) new_city.save() get_cities = self.app.get('/states/1/cities/1') assert get_cities.status_code == 200
def cities(state_id): if request.method == 'GET': try: query = City.select().where(City.state == state_id) return ListStyle.list(query, request), 200 except City.DoesNotExist: return json_response(status_=404, msg="not found") elif request.method == 'POST': if "name" not in request.form: return json_response(status_=400, msg="missing parameters", code=40000) city_test = City.select().where(City.name == str(request.form["name"]), City.state == state_id) if city_test.wrapped_count() > 0: return json_response(status_=409, code=10002, msg="city already exists in this state") city = City(name=str(request.form["name"]), state=str(state_id)) city.save() return jsonify(city.to_dict()), 201
def test_review_place2(self): # Creating a setUp new_state = State(name='California') new_state.save() new_city = City(name='San Francisco', state=1) new_city.save() new_place = Place(owner=1, city=1, name="Steven", description="house", number_rooms=3, number_bathrooms=2, max_guest=3, price_by_night=100, latitude=37.774929, longitude=-122.419416) new_place.save() # Creating a review for a place that exist new_review = self.app.post('/places/1/reviews', data=dict(message="I like it", stars=5)) assert new_review.status_code == 200 # checking the review id, should be 1 assert json.loads(new_review.data)["id"] == 1 # Creating a review for a place that does not exist new_review = self.app.post('/places/3/reviews', data=dict(message="I like it", user_id=1, stars=5)) assert new_review.status_code == 404
def test_review_place3(self): # Creating a setUp new_state = State(name='California') new_state.save() new_city = City(name='San Francisco', state=1) new_city.save() new_place = Place(owner=1, city=1, name="Steven", description="house", number_rooms=3, number_bathrooms=2, max_guest=3, price_by_night=100, latitude=37.774929, longitude=-122.419416) new_place.save() # Creating a review for a place that exist new_review = self.app.post('/places/1/reviews', data=dict(message="I like it", stars=5)) assert new_review.status_code == 200 # Checking for a review that does not exist new_review_get = self.app.get('/places/1/reviews/5') assert new_review_get.status_code == 404 # Checking for a place that does not exist new_review_get = self.app.get('/places/2/reviews/2') assert new_review_get.status_code == 404 # Checking for a review that does exist new_review_get = self.app.get('/places/1/reviews/1') assert new_review_get.status_code == 200
def city(state_id): """Handle GET and POST requests to /states/<state_id>/cities route. Return a list of all cities in state (according to database) in the case of a GET request. Create a new city record in the given state in the database in the case of a POST request. """ # handle GET requests: # -------------------------------------------------------------------------- if request.method == 'GET': list = ListStyle.list(City.select().where(City.state == state_id), request) return jsonify(list) # handle POST requests: # -------------------------------------------------------------------------- elif request.method == 'POST': try: record = City(name=request.form["name"], state=state_id) record.save() return jsonify(record.to_hash()) # return 409 if city with given name already exists except IntegrityError: return json_response( add_status_=False, status_=409, code=10002, msg="City already exists in this state" )
def createCityViaPeewee(self): """ Create a city record using the API's database/Peewee models. createCityViaPeewee returns the Peewee object for the record. This method will not work if the database models are not written correctly. """ record = City(name='namestring', state=1) record.save() return record
def setUp(self): """ Overload def setUp(self): to create a test client of airbnb app, and create placebook table in airbnb_test database. """ self.app = app.test_client() # set up test client self.app.testing = True # set testing to True logging.disable(logging.CRITICAL) # disable logs # connect to airbnb_test database and create tables database.connect() database.create_tables([User, State, City, Place, PlaceBook], safe=True) # create user record for route user_record = User(email='anystring', password='******', first_name='anystring2', last_name='anystring3') user_record.save() # create state record for route state_record = State(name="foo-state") state_record.save() # create city record for route city_record = City(name="foo-city", state="1") city_record.save() # create place records for route place_record = Place(owner=1, city=1, name="foo", description="foo description", number_rooms=1, number_bathrooms=1, max_guest=1, price_by_night=1, latitude=20.0, longitude=22.0) place_record.save() place_record2 = Place(owner=1, city=1, name="foo", description="foo description", number_rooms=1, number_bathrooms=1, max_guest=1, price_by_night=1, latitude=20.0, longitude=22.0) place_record2.save()
def create_city(id): data = request.form city_check = City.select().join(State).where(State.id == id, City.name == data['name']) if city_check: return {'code': 10002, 'msg': 'City already exists in this state'},409 city = City( name = data['name'], state = id ) city.save() return {'code': 201, 'msg': 'City created successfully'}, 201
def create_city(state_id): """ Create an city Creates an city based on post parameters. --- tags: - city parameters: - name: name in: query type: string description: name of the city to create responses: 200: description: Success message schema: id: success_message properties: status: type: number description: status code default: 200 msg: type: string description: Status message default: 'Success' 400: description: Error message schema: id: error_message properties: status: type: number description: status code default: 40000 msg: type: string description: Status message default: 'Missing parameters' """ content = request.get_json(force=True) if not all(param in content.keys() for param in ["name"]): #ERROR return error_msg(400, 40000, "Missing parameters") try: city = City() city.name = content["name"] city.state = state_id city.save() except Exception as e: return error_msg(400, 400, "Error") return error_msg(200, 200, "Success")
def setUp(self): """ Overload def setUp(self): to create a test client of airbnb app, and create placebook table in airbnb_test database. """ self.app = app.test_client() # set up test client self.app.testing = True # set testing to True logging.disable(logging.CRITICAL) # disable logs # connect to airbnb_test database and create tables database.connect() database.create_tables([User, State, City, Place, PlaceBook], safe=True) # create user record for route user_record = User( email='anystring', password='******', first_name='anystring2', last_name='anystring3' ) user_record.save() # create state record for route state_record = State(name="foo-state") state_record.save() # create city record for route city_record = City(name="foo-city", state="1") city_record.save() # create place records for route place_record = Place( owner=1, city=1, name="foo", description="foo description", number_rooms=1, number_bathrooms=1, max_guest=1, price_by_night=1, latitude=20.0, longitude=22.0 ) place_record.save() place_record2 = Place( owner=1, city=1, name="foo", description="foo description", number_rooms=1, number_bathrooms=1, max_guest=1, price_by_night=1, latitude=20.0, longitude=22.0 ) place_record2.save()
def setUp(self): """ Overload def setUp(self): to create a test client of airbnb app, and create review table in airbnb_test database. """ self.app = app.test_client() # set up test client self.app.testing = True # set testing to True logging.disable(logging.CRITICAL) # disable logs database.connect() # connect to airbnb_test db database.create_tables( # create tables [User, State, City, Place, Review, ReviewUser, ReviewPlace], safe=True ) # create user record for routes user_record = User( email='anystring', password='******', first_name='anystring2', last_name='anystring3' ) user_record.save() user_record2 = User( email='anystring-2', password='******', first_name='anystring2', last_name='anystring3' ) user_record2.save() # create place records (and dependencies) for routes state_record = State(name='foo-statee') state_record.save() city_record = City(name='foo-city', state=1) city_record.save() place_record = Place( owner_id=1, city_id=1, name="foo", description="foo description", number_rooms=1, number_bathrooms=1, max_guest=1, price_by_night=1, latitude=20.0, longitude=22.0 ) place_record.save()
def test_delete2(self): # Creating a setUp new_state = State(name='California') new_state.save() new_city = City(name='San Francisco', state=1) new_city.save() new_place = Place(owner=1, city=1, name="Steven", description="house", number_rooms=3, number_bathrooms=2, max_guest=3, price_by_night=100, latitude=37.774929, longitude=-122.419416) new_place.save() # creating a review by an user that exist new_review = self.app.post('/places/1/reviews', data=dict(message="I like it", stars=5)) assert new_review.status_code == 200 # checking how many reviews there are before deleting get_review = self.app.get('/places/1/reviews/1') assert get_review.status_code == 200 # delition of a review that does not exist deleting_review = self.app.delete('/places/1/reviews/3') assert deleting_review.status_code == 404 # delition of a review that does not exist deleting_review = self.app.delete('/places/13/reviews/1') assert deleting_review.status_code == 404 # delition of a review that does not exist deleting_review = self.app.delete('/places/1/reviews/1') assert deleting_review.status_code == 200 # checking how many reviews there are after deleting get_review = self.app.get('/places/1/reviews/1') assert get_review.status_code == 404
def list_cities(state_id): id_state = state_id # returns a json with the cities associated to a state if request.method == 'GET': list = ListStyle.list(City.select() .where(City.state == id_state), request) return jsonify(list) # creates a new city elif request.method == 'POST': # checks if the city already exist in the state for city in City.select(): if str(city.state_id) == id_state and city.name == request.form['name']: return make_response(jsonify({'code': '10001', 'msg': 'City already exists in this state'}), 409) city_name = request.form['name'] new_city = City(name=city_name, state_id=id_state) new_city.save() return "New city saved %s\n" % (new_city.name)
def setUp(self): """ Overload def setUp(self): to create a test client of airbnb app, and create place table in airbnb_test database. """ self.app = app.test_client() self.app.testing = True logging.disable(logging.CRITICAL) # disable logs # connect to airbnb_test database and create Place table database.connect() database.create_tables([User, State, City, Place], safe=True) user_record = User(email='anystring', password='******', first_name='anystring2', last_name='anystring3') user_record.save() state_record = State(name='foo-state') state_record.save() city_record = City(name='foo-city', state=1) city_record.save() city_record2 = City(name='foo-city2', state=1) city_record2.save()
def setUp(self): """ Overload def setUp(self): to create a test client of airbnb app, and create place table in airbnb_test database. """ self.app = app.test_client() self.app.testing = True logging.disable(logging.CRITICAL) # disable logs # connect to airbnb_test database and create Place table database.connect() database.create_tables([User, State, City, Place], safe=True) user_record = User( email='anystring', password='******', first_name='anystring2', last_name='anystring3' ) user_record.save() state_record = State(name='foo-state') state_record.save() city_record = City(name='foo-city', state=1) city_record.save() city_record2 = City(name='foo-city2', state=1) city_record2.save()
def list_cities(state_id): id_state = state_id # returns a json with the cities associated to a state if request.method == 'GET': list = ListStyle.list(City.select().where(City.state == id_state), request) return jsonify(list) # creates a new city elif request.method == 'POST': # checks if the city already exist in the state for city in City.select(): if str(city.state_id ) == id_state and city.name == request.form['name']: return make_response( jsonify({ 'code': '10001', 'msg': 'City already exists in this state' }), 409) city_name = request.form['name'] new_city = City(name=city_name, state_id=id_state) new_city.save() return "New city saved %s\n" % (new_city.name)
def test_Place_amenities(self): new_state = State(name='California') new_state.save() new_city = City(name='San Francisco', state=1) new_city.save() # Creating a new users user1 = User(first_name='Jon', last_name='Snow', email='jon@snow', password='******') user1.save() # Creating Place new_place = Place(owner=1, city=1, name="Steven", description="house", number_rooms=3, number_bathrooms=2, max_guest=3, price_by_night=100, latitude=37.774929, longitude=-122.419416) new_place.save() # Creating an amenity new_amenity = Amenity(name="amenity1") new_amenity.save() # Creating a place amenity new_place_amenity = PlaceAmenities(place=1, amenity=1) new_place_amenity.save() # Creating amenity test for different user new_state = State(name='Oregon') new_state.save() new_city = City(name='San Francisco', state=1) new_city.save() # Creating a new users 2 user1 = User(first_name='Jon', last_name='Snow', email='jon+1c@snow', password='******') user1.save() # Creating Place 2 new_place = Place(owner=2, city=2, name="Steven", description="house", number_rooms=3, number_bathrooms=2, max_guest=3, price_by_night=100, latitude=37.774929, longitude=-122.419416) new_place.save() # Creating an amenity 2 new_amenity = Amenity(name="amenity2") new_amenity.save() # Creating a place amenity 1 new_place_amenity = PlaceAmenities(place=1, amenity=2) new_place_amenity.save() # Creating a place amenity 2 new_place_amenity = PlaceAmenities(place=2, amenity=2) new_place_amenity.save() # testing amenities for a different place get_place_amenity = self.app.get('/places/1/amenities') # assert get_place_amenity.status_code == 200 print get_place_amenity.data # testing amenities for a different place get_place_amenity = self.app.get('/places/2/amenities') assert get_place_amenity.status_code == 200 # testing amenities for a different place that does not exist get_place_amenity = self.app.get('/places/3/amenities') assert get_place_amenity.status_code == 404 # creating a new amenity to a place add_amenity = self.app.post('/places/1/amenities/1') assert add_amenity.status_code == 200 # creating a new amenity to a place that does not exist add_amenity = self.app.post('/places/3/amenities/1') assert add_amenity.status_code == 404 # creating a new amenity that does not exist for a place add_amenity = self.app.post('/places/1/amenities/3') assert add_amenity.status_code == 404 # deleting amenities from a place delete_amenity = self.app.delete('/places/1/amenities/1') assert delete_amenity.status_code == 200