Skip to content

Commit

Permalink
Complete MILESTONE5
Browse files Browse the repository at this point in the history
  • Loading branch information
eoa21004 committed Nov 4, 2024
1 parent 73a2381 commit 7dd29ad
Show file tree
Hide file tree
Showing 4 changed files with 272 additions and 0 deletions.
54 changes: 54 additions & 0 deletions Backend/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
"""
This module provides functions for HTTP communication and
route functions
"""
from flask import Flask, request, jsonify
from petfuc import get_random_pet
from userfuc import add_user_faviorte, remove_user_faviorte, replace_user_location

app = Flask(__name__)

#Get Random Pet information - For homepage
@app.route("/Get_Random_pet", methods=["GET"])
def random_pet():
"""
Function to extract random pet information
"""
return get_random_pet(), 200 # Return dog information

# Faviortes route. add user faviorte pet to database
@app.route("/Add_User_Faviorte", methods=["POST"])
def adduserfaviorte():
"""
Function to add user from database
"""
json_data = request.get_json()

# Api accesses database and append post json in database
#Retrun database with succses code
return jsonify(add_user_faviorte(json_data)), 200

# Un Faviote Route. remove user faviorte pet from there database
@app.route("/Remove_User_Faviorte", methods=["DELETE"])
def removeuserfaviorte():
"""
Function to remove user from database
"""
json_data = request.get_json()

# Api accesses database and append post json in database
#Retrun database with succses code
return jsonify(remove_user_faviorte(json_data)), 200 # return new user database

# Change a Users account location
@app.route("/Change_User_Location", methods=["PUT"])
def replace_user_information():
"""
Function to change the location associated with
an account
"""
newlocation = request.get_json() # Get new location from post request
return jsonify(replace_user_location(newlocation)) # retrun user account info

if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
22 changes: 22 additions & 0 deletions Backend/petfuc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
"""
This module provides functions for HTTP communication and
route functions
"""
from flask import jsonify


def get_random_pet():
"""
Function to generate random ID and return pet
asscoieted with that ID
"""
randomint = "9" # APi generates random interger that represents a PET ID
# Api accesses database and return information in data base
#Retrun information such as profile picture on the pet accosiated with the random ID
data = {"id": randomint,
"name":"sam",
"sex":"male",
"Age":"8",
"location":"Connecticwut",
"Breed": "Pug"}
return jsonify(data) # Return dog information
157 changes: 157 additions & 0 deletions Backend/test_main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
"""
Pytest for fake API
"""

import requests

def test_get_random_pet():
"""
Test for http://localhost:5000/Get_Random_pet
"""

url = "http://localhost:5000"

response = requests.get((url + "/Get_Random_pet"), timeout=10)

expected_response = {
"id": "9",
"name": "sam",
"sex": "male",
"Age": "8",
"location": "Connecticwut",
"Breed": "Pug"
}

assert response.json() == expected_response

# -----------------------------------------------------------------------------

def test_add_user_faviorte():
"""
Test for http://localhost:5000/Add_User_Faviorte
"""

url = "http://localhost:5000"

faviortepet1 = {
"id": "9",
"name": "sam",
"sex": "male",
"Age": "8",
"location": "Connecticut",
"Breed": "Pug"
}


response = requests.post((url + "/Add_User_Faviorte"), json=faviortepet1, timeout=10)

assert response.json() == [{'Age': '8',
'Breed': 'Pug',
'id': '9',
'location':
'Connecticut',
'name': 'sam',
'sex': 'male'}]

faviortepet2 = {
"id": "90",
"name": "ben",
"sex": "male",
"Age": "2",
"location": "New York",
"Breed": "Husky"
}

response = requests.post((url + "/Add_User_Faviorte"), json=faviortepet2, timeout=10)

assert response.json() == [{'Age': '8',
'Breed': 'Pug',
'id': '9',
'location': 'Connecticut',
'name': 'sam',
'sex': 'male'},
{'Age': '2',
'Breed': 'Husky',
'id': '90',
'location': 'New York',
'name': 'ben',
'sex': 'male'}]

# ----------------------------------------------------------------------------------

def test_remove_user_faviorte():
"""
Test for http://localhost:5000/Remove_User_Faviorte
"""

url = "http://localhost:5000"

faviortepet1 = {
"id": "9",
"name": "sam",
"sex": "male",
"Age": "8",
"location": "Connecticut",
"Breed": "Pug"
}


response = requests.delete((url + "/Remove_User_Faviorte"), json=faviortepet1, timeout=10)

assert response.json() == [{'Age': '2',
'Breed': 'Husky',
'id': '90',
'location': 'New York',
'name': 'ben',
'sex': 'male'}]

faviortepet2 = {
"id": "90",
"name": "ben",
"sex": "male",
"Age": "2",
"location": "New York",
"Breed": "Husky"
}

response = requests.delete((url + "/Remove_User_Faviorte"), json=faviortepet2, timeout=10)

assert response.json() == []
# ----------------------------------------------------------------------------------



def test_change_user_location():
"""
Test for http://localhost:5000/Change_User_Location
"""

url = "http://localhost:5000"

response = requests.put((url + "/Change_User_Location"),
json={"Location":"New York"},
timeout=10)

assert response.json() == {"Location": "New York",
"Name": "eric",
"Occupation": "Student",
"Password": "2020"}


response = requests.put((url + "/Change_User_Location"),
json={"Location":"Chicago"},
timeout=10)

assert response.json() == {"Location": "Chicago",
"Name": "eric",
"Occupation": "Student",
"Password": "2020"}

response = requests.put((url + "/Change_User_Location"),
json={"Location":"Massachusetts"},
timeout=10)

assert response.json() == {"Location": "Massachusetts",
"Name": "eric",
"Occupation": "Student",
"Password": "2020"}
39 changes: 39 additions & 0 deletions Backend/userfuc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
"""
This module provides functions for HTTP communication and
route functions
"""
UserFaviorteDataBase = [] # pretend this is a database

UserAccInfo = {"Name":"eric",
"Password":"2020",
"Location":"connecticut",
"Occupation":"Student"} # example user information

# add user faviorte pet to database
def add_user_faviorte(jsondata):
"""
add user to database and return database elements
"""
UserFaviorteDataBase.append(jsondata)
# accesses database and append post json in database
return UserFaviorteDataBase # return new user database


# Remove user faviorte pet to database
def remove_user_faviorte(jsondata):
"""
remove user from database and return database elements
"""
UserFaviorteDataBase.remove(jsondata)
# accesses database and append post json in database
return UserFaviorteDataBase # return new user database


# Change a Users account location
def replace_user_location(newlocation):
"""
Replace location associated with a user account
"""
newlocation = newlocation.get('Location')
UserAccInfo["Location"] = newlocation # Set location accosiated with user to new location
return UserAccInfo # retrun user account info

0 comments on commit 7dd29ad

Please sign in to comment.