Beispiel #1
0
def postJob(dbCursor, dbConnection):
    if db.getNumJobs(dbCursor) >= constants.MAX_POSTED_JOBS:  # checks if number of jobs in database is at max limit
        print("All permitted jobs have been created, please come back later.")
        settings.currentState = states.jobMenu
        return

    # Take input from user and create job in DB
    User = namedtuple('User', 'uname pword firstname lastname plusMember date_created')
    currentUser = User._make(db.getUserByName(dbCursor, settings.signedInUname))

    first = currentUser.firstname
    last = currentUser.lastname
    author = first + " " + last
    title = input("Enter job title: ")
    desc = input("Enter job description: ")
    emp = input("Enter employer name: ")
    loc = input("Enter job location: ")
    sal = input("Enter salary: ")

    db.insertJob(dbCursor, title, desc, emp, loc, sal, author)

    # add notification to let other users know a job has been posted
    other_users = db.getAllOtherUsers(dbCursor, settings.signedInUname)
    if len(other_users) > 0:
        for user in other_users:
            db.insertNotification(dbCursor, "new_job", title, user[0])

    dbConnection.commit()
    # call API functions to modify output files 
    API.outputJobs(dbCursor)
    API.outputAppliedJobs(dbCursor)
    print("Job has been posted.")
    settings.currentState = states.jobMenu  # returns to main() w/ currentState = jobMenu
Beispiel #2
0
def inputAPIJobs(dbCursor, dbConnection):
    job_count = db.getNumJobs(dbCursor)
    new_jobs = API.createJobs()
    if new_jobs:
        for obj in new_jobs:
            # job limit is 10, don't recreate jobs
            if job_count < 10 and db.getJobByTitle(dbCursor,
                                                   obj.title) is None:
                # ADDING UNKNOWN AUTHOR FOR NOW
                db.insertJob(dbCursor, obj.title, obj.description,
                             obj.employer_name, obj.location, obj.salary,
                             "Unknown Author")
    dbConnection.commit()
def testFavoriteAJob(monkeypatch):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS favorited_jobs")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "2020-01-01 12:30:00")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "2020-01-01 12:30:00")
    db.insertJob(cursor, "title1", "desc1", "emp1", "loc1", "sal1", "first1 last1")
    selectedJob = db.getAllJobs(cursor)[0]
    settings.signedInUname = "username2"
    monkeypatch.setattr("sys.stdin", StringIO("b\nz\n"))
    jobs.viewJobDetails(cursor, connection, selectedJob)
    assert len(db.getFavoriteJobsByUser(cursor, "username2")) == 1
def testApplyForJob(monkeypatch):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS user_job_applications")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "01/01/2020")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "01/01/2020")
    db.insertJob(cursor, "title1", "desc1", "emp1", "loc1", "sal1", "first1 last1")
    selectedJob = db.getAllJobs(cursor)[0]
    settings.signedInUname = "username2"
    monkeypatch.setattr("sys.stdin", StringIO("1\n01/01/1234\n01/02/1234\ncredentials\n"))
    jobs.applyForJob(cursor, connection, selectedJob)
    assert len(db.getAppliedJobs(cursor, "username2")) == 1
def testCreateMaxJobPosts(capfd):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    cursor.execute("DROP TABLE IF EXISTS jobs")
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "01/01/2020")
    for _ in range(10):
        db.insertJob(cursor, "title", "desc", "emp", "loc", "sal", "username1")
    jobs.postJob(cursor, connection)
    out, err = capfd.readouterr()
    assert "All permitted jobs have been created, please come back later.\n" in out
    assert db.getNumJobs(cursor) == 10
    assert settings.currentState == states.jobMenu
def testDeleteJobPost(monkeypatch):
    connection = sqlite3.connect("incollege_test.db")
    cursor = connection.cursor()
    cursor.execute("DROP TABLE IF EXISTS Users") #delete tables to make sure no conflicts when running test multiple times
    db.initTables(cursor)
    db.insertUser(cursor, "username1", "password", "first1", "last1", 0, "2020-01-01 12:30:00")
    db.insertUser(cursor, "username2", "password", "first2", "last2", 0, "2020-01-01 12:30:00")
    settings.signedInUname = "username1"
    db.insertJob(cursor, "title1", "desc1", "emp1", "loc1", "sal1", "first1 last1")
    db.insertJob(cursor, "title2", "desc2", "emp2", "loc2", "sal2", "first1 last1")
    assert db.getNumJobs(cursor) == 2
    db.insertUserJobApplication(cursor, "username2", "title1", "01/01/1243", "01/02/1243", "credentials", "2020-01-01 12:30:00")
    monkeypatch.setattr("sys.stdin", StringIO("1\nN\n"))
    jobs.enterDeleteAJobMenu(cursor, connection)
    assert db.getNumJobs(cursor) == 1
    assert len(db.getAppliedJobs(cursor, "username2")) == 0