Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added UnitTests for APIs #53

Open
wants to merge 66 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
6322624
Changing contributors
ArpithaVijayakumar Oct 19, 2021
cb36b77
very rough database flow
Oct 21, 2021
8f0b54d
Fixing user tables
Oct 28, 2021
b1a5bc1
Update README.md
ArpithaVijayakumar Oct 29, 2021
39727f6
adding the login and signup flow
Oct 29, 2021
da76e45
Merge pull request #11 from ArpithaVijayakumar/arpitha-dev
Krishika510 Oct 31, 2021
867ca72
Fixing login module
Oct 31, 2021
120d27e
Adding the DOV and release tags
ArpithaVijayakumar Oct 31, 2021
ddcd3c8
Merge pull request #13 from ArpithaVijayakumar/arpitha-dev
ArpithaVijayakumar Oct 31, 2021
1bf0dd6
adding rubric for project 2
Oct 31, 2021
5ca4873
Merge pull request #14 from ArpithaVijayakumar/arpitha-dev
ArpithaVijayakumar Oct 31, 2021
18a3a4c
Created API for Adding Application
Oct 31, 2021
84862ad
Merge pull request #15 from ArpithaVijayakumar/feature/add_Application
Krishika510 Oct 31, 2021
d3a261f
making name dynamic on landing page
Nov 2, 2021
657d996
adding thMaking user full name dynamic
ArpithaVijayakumar Nov 2, 2021
a98abb6
Merge pull request #17 from ArpithaVijayakumar/arpitha-dev
ArpithaVijayakumar Nov 2, 2021
b013db5
fixing error while loading name
ArpithaVijayakumar Nov 2, 2021
beed3bc
adding signup stored procedure
ArpithaVijayakumar Nov 2, 2021
54bc62b
Merge pull request #18 from ArpithaVijayakumar/arpitha-dev
ArpithaVijayakumar Nov 2, 2021
e8a7be1
Changes to DDL and pending API
Nov 3, 2021
be7aba7
Merge pull request #19 from ArpithaVijayakumar/feature/add_Application
Krishika510 Nov 3, 2021
f1b025d
Minor bug
Nov 3, 2021
38d60a9
Minor bug 2
Nov 3, 2021
fc6a26b
Finalized Add Application
Nov 3, 2021
c3bb9de
fixing signup issue
ArpithaVijayakumar Nov 3, 2021
c37a26d
Merge branch 'main' of github.com:ArpithaVijayakumar/WolfTrack into main
ArpithaVijayakumar Nov 3, 2021
1bf3060
Add Application Changes
Nov 3, 2021
ee76d4d
Update ddl.sql
apurva-s Nov 3, 2021
bb53353
displaying error messages in red
ArpithaVijayakumar Nov 3, 2021
1cc592e
fixing login and signup error messages issues
ArpithaVijayakumar Nov 3, 2021
fd6512f
fixing issue #20
ArpithaVijayakumar Nov 4, 2021
ca19c46
correcting signup spelling
ArpithaVijayakumar Nov 4, 2021
ae61e14
Tested API
Nov 4, 2021
db1e36c
Merge pull request #22 from ArpithaVijayakumar/feature/bug_fixing
ArpithaVijayakumar Nov 4, 2021
30d0936
Updated project2 Rubric
Krishika510 Nov 4, 2021
808fda0
Added pylint
Nov 4, 2021
a4ffa0c
Updated pylint link
Krishika510 Nov 4, 2021
2850849
Updates to Rubric
Krishika510 Nov 4, 2021
f1f34ae
Created Github WF
Krishika510 Nov 4, 2021
f74ef2c
Removed unnecessary lines
Krishika510 Nov 4, 2021
4d7a9a6
Merge branch 'main' of https://github.com/ArpithaVijayakumar/WolfTrack
Krishika510 Nov 4, 2021
2ee84ab
Adding changes.md
ArpithaVijayakumar Nov 4, 2021
24ce6fc
adding changes.md
ArpithaVijayakumar Nov 4, 2021
603a93c
Update README.md
ivbhatt Nov 4, 2021
73c34ff
Altering the format
ArpithaVijayakumar Nov 4, 2021
80dc9fc
Added v2 badges
Krishika510 Nov 4, 2021
ff77659
Minor README changes
Krishika510 Nov 4, 2021
c41d60d
Update login.html
apurva-s Nov 4, 2021
f9af9f0
all the view more buttons will show you the relevant tasklist
ivbhatt Nov 4, 2021
6a4dc94
Merge pull request #25 from ArpithaVijayakumar/addingViewMoreFunction…
ivbhatt Nov 4, 2021
2ad479f
Merge pull request #24 from ArpithaVijayakumar/feature/login-page-cha…
ivbhatt Nov 4, 2021
5ca37eb
polishes
ivbhatt Nov 4, 2021
a1b3285
Changes made to document
Krishika510 Nov 5, 2021
df2ddf5
Updated Rubric
Krishika510 Nov 5, 2021
d5150e5
login user testing
UnnatiPrema Nov 5, 2021
ff055c8
saving and updating gender and location
ArpithaVijayakumar Nov 5, 2021
b817d8c
Testing Applications API
UnnatiPrema Nov 5, 2021
f23d7af
altering ddl and dml for gender and location
ArpithaVijayakumar Nov 5, 2021
da52553
Phase 2 enhancements updated in README
Krishika510 Nov 5, 2021
087b5a3
README small spelling mistake
Krishika510 Nov 5, 2021
c13aad0
Testing for 3 apis
UnnatiPrema Nov 5, 2021
6edf690
Update README.md
UnnatiPrema Nov 5, 2021
a89ccf3
Update README.md
UnnatiPrema Nov 5, 2021
a5f33e6
fixed failing test
UnnatiPrema Nov 5, 2021
0b4ec76
Merge branch 'Testing' of https://github.com/ArpithaVijayakumar/WolfT…
UnnatiPrema Nov 5, 2021
34cfa82
added codecov yml
UnnatiPrema Nov 5, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Codecov
on: [push, pull_request]
jobs:
run:
runs-on: ubuntu-latest
steps:
- name: Fetch
uses: actions/checkout@main
- name: Test
run: |
gcc -ftest-coverage -fprofile-arcs -O0 -o test test.c lib.c
./test
gcov -abcfu lib.c
- name: Upload
uses: codecov/codecov-action@v1
with:
files: ./lib.c.gcov
36 changes: 36 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Python application

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
build:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pytest
22 changes: 12 additions & 10 deletions Controller/application_controller.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
from flask import render_template, request
from flask_restful import Resource
from flask_login import login_required

from DAO.application_dao import application_dao

class Application(Resource):
def __init__(self):
self.headers = {'Content-Type': 'text/html'}
self.application = application_dao()

@login_required
def get(self):
return {'about':"hello!"}
# @login_required
def get(self, email, application_category):
return self.application.get_application(email, application_category)

@login_required
def post(self):
some_json=request.get_json()
return {'you sent': some_json}, 201
# @login_required
def post(self, email, company_name, location, job_profile, salary, username, password, security_question, security_answer, notes,
date_applied):
return self.application.add_application(email, company_name, location, job_profile, salary, username, password, security_question, security_answer, notes,
date_applied)

@login_required
# @login_required
def put(self):
some_json=request.get_json()
return {'you sent': some_json}, 201

@login_required
# @login_required
def delete(self):
some_json=request.get_json()
return {'you sent': some_json}, 201
94 changes: 83 additions & 11 deletions Controller/home.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
from flask import Blueprint
from flask import Blueprint, flash, session
from flask import Flask, render_template, url_for, request
from flask_login import login_required, logout_user
from werkzeug.utils import redirect
from Controller.user_controller import User
from Controller.application_controller import Application
home_route = Blueprint('home_route', __name__)

user = User()
application = Application()

data = {
"wishlist": ["Microsoft", "Google", "Uber"],
Expand Down Expand Up @@ -41,20 +45,88 @@
}


@home_route.route('', methods=['GET'])
@login_required
def home():
return render_template('home.html', data=data, upcoming_events=upcoming_events)
# @home_route.route('', methods=['GET'])
# @login_required
# def home():
# return render_template('home.html', data=data, upcoming_events=upcoming_events)

@home_route.route('/', methods=['GET', 'POST'])
@home_route.route('/login', methods=['GET', 'POST'])
def login():
return render_template('login.html',loginError = "")

@home_route.route('/loginUser', methods=['GET', 'POST'])
def loginUser():
session['email'] = request.form["username"]
password = request.form["password"]
result = user.get(session['email'],password)
print(result)
error = ""
if(result == 0):
error = "Email does not exits. Please enter a valid email."
return render_template('login.html',loginError = error)
elif(result == 2):
error="Password incorrect."
return render_template('login.html',loginError = error)
else:
return render_template('home.html', data=result, upcoming_events=upcoming_events)


@home_route.route('/signup', methods=['POST'])
def signup():
name = request.form["name"]
session['email'] = request.form["email"]
password = request.form["password"]
result = user.post(name,session['email'],password)
print(name)
gender = request.form["gender"]
location = request.form["location"]
result = user.post(name,session['email'],password, gender, location)
if(result == 0):
error = "This email already exists. Please try with different email"
return render_template('login.html', emailError=error)
data["full_name"] = name
return render_template('home.html', data=data, upcoming_events=upcoming_events)

@home_route.route('/view', methods=['GET'])
@login_required
# @login_required
def view():
card_selected = request.args.get('user')
return render_template('view_list.html', data=data, upcoming_events=upcoming_events)
application_category = request.args.get('show')


result_data = application.get(session["email"], application_category)

print(result_data)


return render_template('view_list.html', data=result_data, upcoming_events=upcoming_events)

@home_route.route("/add_new_application", methods = ["GET","POST"])
# @login_required
def add_new_application():
company_name = request.form["companyName"]
location = request.form["location"]
job_profile = request.form["jobProfile"]
salary = request.form["salary"]
username = request.form["username"]
password = request.form["password"]
security_question = request.form["securityQuestion"]
security_answer = request.form["securityAnswer"]
notes = request.form["notes"]
date_applied = request.form["dateApplied"]
result = application.post(session['email'], company_name, location, job_profile, salary, username, password, security_question, security_answer, notes,
date_applied)
if (result==0):
error = "This job application could not be stored in the database. Please try again."
return render_template('home.html', jobAddError=error)
return render_template('home.html', data=data, upcoming_events=upcoming_events)


@home_route.route('/logout', methods=['GET'])
@login_required
# @login_required
def logout():
logout_user()
return redirect("/login")
# logout_user()
return redirect("/login")

# if __name__ == '__main__':
# app.run(debug=True)
13 changes: 5 additions & 8 deletions Controller/user_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,13 @@ def __init__(self):
self.user = user_dao()

#@login_required
def get(self):
self.user.get_user()
return make_response('Coming Soon!!')
# return make_response(render_template('home.html', data=data, upcoming_events=upcoming_events), 200, headers)
def get(self,email,password):
return self.user.get_user(email,password)

#@login_required
def post(self):
self.user.create_user()
some_json=request.get_json()
return {'you sent': some_json}, 200
def post(self, name, email,password,gender,location):
return self.user.create_user(name,email,password,gender,location)


#@login_required
def put(self):
Expand Down
27 changes: 22 additions & 5 deletions DAO/application_dao.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,28 @@
from sql_helper import sql_helper
from DAO.sql_helper import sql_helper

class application_dao:
def create_application(self):
pass
def __init__(self):
self.__db = sql_helper()

def get_application(self):
pass
def add_application(self, email, company_name, location, job_profile, salary, username, password, security_question, security_answer, notes,
date_applied):
status = "TO_DO"
userId = self.__db.run_query("SELECT user_id FROM user WHERE email='"+email+"'")[0][0]

self.__db.run_query("INSERT into company (company_name) values ('"+company_name+"');")
companyId = self.__db.run_query("SELECT company_id FROM company WHERE company_name='"+company_name+"'")[0][0]

self.__db.run_query("INSERT INTO roles (role) values ('"+job_profile+"');")
roleId = self.__db.run_query("SELECT role_id FROM roles WHERE role='"+job_profile+"'")[0][0]

return self.__db.run_query("INSERT INTO application (user_id, company_id, role_id, application_date, job_description, salary, location, status) values ("+str(userId)+", "+str(companyId)+", "+str(roleId)+", "+date_applied+", '"+job_profile+"', "+str(salary)+", '"+location+"', '"+status+"');")

def get_application(self, email, application_status):
userId = self.__db.run_query("SELECT user_id FROM user WHERE email='"+email+"'")[0][0]
res = self.__db.run_query("SELECT company_name, status, application_date FROM application JOIN company ON company.company_id = application.company_id WHERE user_id="+str(userId))

print(res)
return res

def update_application(self):
pass
Expand Down
6 changes: 3 additions & 3 deletions DAO/sql_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ def __init__(self):
def connect_database(self):
try:
self.connection_obj = pymysql.connect(
host= os.environ['aws_rds_host'],
host= 'wolftrack.c2msdsmdjmxj.us-east-2.rds.amazonaws.com',
port = 3306,
user = os.environ['aws_rds_user'],
password = os.environ['aws_rds_password'],
user = "admin",
password = "wolftrack123",
db = "wolftrack",
autocommit=True
)
Expand Down
30 changes: 23 additions & 7 deletions DAO/user_dao.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,30 @@

from DAO.sql_helper import sql_helper

class user_dao:
def __init__(self):
pass
self.__db = sql_helper()

def create_user(self):
pass

def get_user(self):
pass
def create_user(self, name, email, password,gender,location):
if(self.__db.run_query("SELECT count(*) FROM user WHERE email='"+email+"'")[0][0]==1):
return 0
return self.__db.run_query("CALL CreateUser('"+email+"','"+name+"','"+password+"','"+gender+"','"+location+"');")

def get_user(self, email, password):
data = {}
result = self.__db.run_query("SELECT count(*),user_id,email,full_name,gender,location FROM user WHERE email='"+email+"'")
if(result[0][0]==0):
return 0
if(email == result[0][2]):
if(password == self.__db.run_query("SELECT password FROM user_login WHERE user_id="+str(result[0][1]))[0][0]):
data["full_name"] = str(result[0][3])
data["gender"] = str(result[0][4])
data["location"] = str(result[0][5])
return data
else:
return 2

def get_user_id(self, email):
pass

def update_details(self):
pass
Expand Down
Empty file removed Login/__init__.py
Empty file.
Loading