Esempio n. 1
0
 def setUp(self):
     data = {
         "name": "Emily",
         "registration_id": "0",
         "email": "*****@*****.**"
     }
     self.client.post(get_url("job_seeking:create_account"), data)
     self.client.get(get_url("job_seeking:logout"))
Esempio n. 2
0
    def test_get_prospective_jobs(self):
        bob = JobPoster.objects.get(name="Bob")
        emily = Contractor.objects.get(name="Emily")

        posting = new_job_posting(poster=bob)
        prospective1 = new_job_posting(poster=bob)
        prospective2 = new_job_posting(poster=bob)
        current = new_job_posting(poster=bob, contractor=emily)
        completed1 = new_job_posting(poster=bob,
                                     contractor=emily,
                                     completed=True)
        completed2 = new_job_posting(poster=bob,
                                     contractor=emily,
                                     marked_completed_by_contractor=True)

        posting.save()
        prospective1.save()
        prospective2.save()
        current.save()
        completed1.save()
        completed2.save()

        Bid(job=prospective1, contractor=emily).save()
        Bid(job=prospective2, contractor=emily).save()

        response = self.client.get(get_url("job_seeking:prospective_jobs"))

        self.assertEquals(200, response.status_code)
        self.assertEquals({prospective1.id, prospective2.id},
                          {data['id']
                           for data in loads(response.content)})
Esempio n. 3
0
    def test_get_job_poster(self):
        bob = JobPoster.objects.get(name="Bob")
        response = self.client.get(
            get_url("job_seeking:job_poster", kwargs={'poster_id': bob.id}))
        data = loads(response.content)

        self.assertEquals(bob.id, data['id'])
        self.assertEquals("Bob", data['name'])
Esempio n. 4
0
    def test_get_profile(self):
        emily = Contractor.objects.get(name="Emily")
        response = self.client.get(get_url("job_seeking:profile"))
        data = loads(response.content)

        self.assertEquals(emily.id, data['id'])
        self.assertEquals(emily.name, data['name'])
        self.assertEquals(emily.email, data['email'])
Esempio n. 5
0
    def test_get_job_poster_rating_no_ratings(self):
        bob = JobPoster.objects.get(name="Bob")
        emily = Contractor.objects.get(name="Emily")

        response = self.client.get(
            get_url("job_seeking:job_poster_rating",
                    kwargs={'poster_id': bob.id}))

        self.assertEquals("", response.content)
Esempio n. 6
0
    def test_rate_job_poster_does_not_exist(self):
        response = self.client.post(
            get_url("job_seeking:rate_job_poster",
                    kwargs={
                        "poster_id": 100,
                        "rating": 4
                    }))

        # TODO: Consider if this should be 404
        self.assertEquals(403, response.status_code)
Esempio n. 7
0
    def test_place_bid_job_does_not_exist(self):
        emily = Contractor.objects.get(name="Emily")
        bid_data = {"job": 0, "contractor": emily.id}

        response = self.client.post(get_url("job_seeking:bid"), bid_data)
        print(response.content)

        # TODO: Here we have more inconsistency with the backend -
        # The serializer validation will return a 400 before it gets to the
        # backend, but the backend wants to throw a 404.
        self.assertEquals(400, response.status_code)
Esempio n. 8
0
    def test_rate_job_poster_no_jobs(self):
        bob = JobPoster.objects.get(name="Bob")

        response = self.client.post(
            get_url("job_seeking:rate_job_poster",
                    kwargs={
                        "poster_id": bob.id,
                        "rating": 4
                    }))

        self.assertEquals(403, response.status_code)
Esempio n. 9
0
    def test_get_jobs(self):
        bob = JobPoster.objects.get(name="Bob")
        posting = new_job_posting(poster=bob)
        posting.save()

        response = self.client.get(get_url("job_seeking:jobs"))
        data = loads(response.content)

        self.assertEquals(200, response.status_code)
        self.assertEquals(1, len(data))
        self.assertEquals(posting.id, data[0]['id'])
Esempio n. 10
0
 def setUp(self):
     JobPoster(name="Bob", openid="0", region="Calgary").save()
     JobPoster(name="Frank", openid="1", region="Edmonton").save()
     Contractor(name="Joseph",
                registration_id="1",
                email="*****@*****.**").save()
     # Create and login as Emily
     self.client.post(get_url("job_seeking:create_account"), {
         "name": "Emily",
         "registration_id": "0",
         "email": "*****@*****.**"
     })
Esempio n. 11
0
    def test_mark_complete_permission_denied(self):
        bob = JobPoster.objects.get(name="Bob")
        joseph = Contractor.objects.get(name="Joseph")

        posting = new_job_posting(poster=bob, contractor=joseph)
        posting.save()

        response = self.client.post(
            get_url("job_seeking:mark_complete",
                    kwargs={"posting_id": posting.id}))

        self.assertEquals(403, response.status_code)
Esempio n. 12
0
    def test_login(self):
        emily = Contractor.objects.get(name="Emily")
        response = self.client.get(get_url("job_seeking:login"),
                                   HTTP_AUTHORIZATION="Basic {}".format(
                                       b64encode("[email protected]:")))
        data = loads(response.content)

        self.assertEquals(200, response.status_code)
        self.assertEquals(Contractor.objects.get(),
                          self.client.session["authenticated_contractor"])
        self.assertEquals(emily.id, data['id'])
        self.assertEquals(emily.name, data['name'])
        self.assertEquals(emily.email, data['email'])
Esempio n. 13
0
    def test_get_job_poster_rating(self):
        emily = Contractor.objects.get(name="Emily")
        joseph = Contractor.objects.get(name="Joseph")
        bob = JobPoster.objects.get(name="Bob")

        JobPosterRating(contractor=emily, poster=bob, rating=3).save()
        JobPosterRating(contractor=joseph, poster=bob, rating=4).save()

        response = self.client.get(
            get_url("job_seeking:job_poster_rating",
                    kwargs={'poster_id': bob.id}))
        rating = float(response.content)

        self.assertAlmostEquals(3.5, rating)
Esempio n. 14
0
    def test_mark_complete(self):
        bob = JobPoster.objects.get(name="Bob")
        emily = Contractor.objects.get(name="Emily")

        posting = new_job_posting(poster=bob, contractor=emily)
        posting.save()

        response = self.client.post(
            get_url("job_seeking:mark_complete",
                    kwargs={"posting_id": posting.id}))

        self.assertEquals(201, response.status_code)
        self.assertTrue(
            emily.jobposting_set.get().marked_completed_by_contractor)
Esempio n. 15
0
    def test_create_account_duplicate_email(self):
        data = {
            "name": "Emily",
            "registration_id": "0",
            "email": "*****@*****.**"
        }
        response = self.client.post(get_url("job_seeking:create_account"),
                                    data)
        self.assertEquals(201, response.status_code)

        response = self.client.post(get_url("job_seeking:create_account"),
                                    data)
        self.assertEquals(400, response.status_code)

        data['name'] = 'Not Emily'
        response = self.client.post(get_url("job_seeking:create_account"),
                                    data)
        self.assertEquals(400, response.status_code)

        data['name'] = "Not Emily"
        data['email'] = "*****@*****.**"
        response = self.client.post(get_url("job_seeking:create_account"),
                                    data)
        self.assertEquals(201, response.status_code)
Esempio n. 16
0
    def test_place_bid_invalid_completion_date(self):
        bob = JobPoster.objects.get(name="Bob")
        posting = new_job_posting(poster=bob)
        posting.save()

        emily = Contractor.objects.get(name="Emily")
        bid_data = {
            "job": posting.id,
            "contractor": emily.id,
            "completion_date": "invalid"
        }

        response = self.client.post(get_url("job_seeking:bid"), bid_data)

        self.assertEquals(400, response.status_code)
Esempio n. 17
0
    def test_rate_job_poster(self):
        bob = JobPoster.objects.get(name="Bob")
        emily = Contractor.objects.get(name="Emily")

        posting = new_job_posting(poster=bob, contractor=emily, completed=True)
        posting.save()

        response = self.client.post(
            get_url("job_seeking:rate_job_poster",
                    kwargs={
                        "poster_id": bob.id,
                        "rating": 4
                    }))

        self.assertEquals(201, response.status_code)
        self.assertEquals(bob.id, emily.jobposterrating_set.get().poster_id)
Esempio n. 18
0
    def test_place_bid(self):
        bob = JobPoster.objects.get(name="Bob")
        posting = new_job_posting(poster=bob)
        posting.save()

        # TODO: There is inconsistency between this test and the
        # backend API test, since the backend API does not require
        # the contractor.  For consistency, it may be better for the
        # backend to require the contractor id to be part of the bid,
        # and raise PermissionDenied if it does not match the current user.
        emily = Contractor.objects.get(name="Emily")
        bid_data = {"job": posting.id, "contractor": emily.id}

        response = self.client.post(get_url("job_seeking:bid"), bid_data)

        self.assertEquals(201, response.status_code)
        self.assertEquals(posting.id, emily.bid_set.get().job.id)
Esempio n. 19
0
    def test_update_profile(self):
        emily = Contractor.objects.get(name="Emily")
        update_data = {
            "name": "Emily Durkheim",
            "registration_id": "1",
            "email": "*****@*****.**"
        }

        response = self.client.post(get_url("job_seeking:profile"),
                                    update_data)
        self.assertEquals(201, response.status_code)

        new_emily = Contractor.objects.get(id=emily.id)
        self.assertEquals(update_data["name"], new_emily.name)
        self.assertEquals(update_data["registration_id"],
                          new_emily.registration_id)
        self.assertEquals(update_data["email"], new_emily.email)
Esempio n. 20
0
    def test_get_jobs_with_region(self):
        bob = JobPoster.objects.get(name="Bob")
        frank = JobPoster.objects.get(name="Frank")

        calgary_posting = new_job_posting(poster=bob)
        calgary_posting.save()

        edmonton_posting = new_job_posting(poster=frank)
        edmonton_posting.save()

        response = self.client.get(get_url("job_seeking:jobs"),
                                   {"region": "Calgary"})
        data = loads(response.content)

        self.assertEquals(200, response.status_code)
        self.assertEquals(1, len(data))
        self.assertEquals(calgary_posting.id, data[0]["id"])
Esempio n. 21
0
    def test_create_account(self):
        data = {
            "name": "Emily",
            "registration_id": "0",
            "email": "*****@*****.**",
            "description": "Recent Graduate",
            "phone_number": "555-555-5555"
        }
        response = self.client.post(get_url("job_seeking:create_account"),
                                    data)
        self.assertEquals(201, response.status_code)

        emily = self.client.session["authenticated_contractor"]
        emilys_data = {
            field.name: getattr(emily, field.name)
            for field in Contractor._meta.fields
        }
        response_data = loads(response.content)
        self.assertEquals(emilys_data, response_data)

        del emilys_data["id"]
        self.assertEquals(data, emilys_data)
        self.assertEquals(emily, Contractor.objects.get())
Esempio n. 22
0
    def test_get_jobs_with_skill(self):
        bob = JobPoster.objects.get(name="Bob")

        python_posting = new_job_posting(poster=bob)
        python_posting.save()
        python_posting.jobskill_set.add(JobSkill(skill="python"))

        django_posting = new_job_posting(poster=bob)
        django_posting.save()
        django_posting.jobskill_set.add(JobSkill(skill="django"))

        java_posting = new_job_posting(poster=bob)
        java_posting.save()
        java_posting.jobskill_set.add(JobSkill(skill="java"))

        response = self.client.get(get_url("job_seeking:jobs"),
                                   {"skill": ["python", "django"]})
        data = loads(response.content)

        self.assertEquals(200, response.status_code)
        self.assertEquals(2, len(data))
        self.assertEquals({python_posting.id, django_posting.id},
                          {posting["id"]
                           for posting in data})
Esempio n. 23
0
    def test_create_account_no_email(self):
        data = {"name": "Emily"}
        response = self.client.post(get_url("job_seeking:create_account"),
                                    data)

        self.assertEquals(400, response.status_code)
Esempio n. 24
0
    def test_create_account_no_name(self):
        data = {"email": "*****@*****.**"}
        response = self.client.post(get_url("job_seeking:create_account"),
                                    data)

        self.assertEquals(400, response.status_code)
Esempio n. 25
0
 def test_login_user_does_not_exist(self):
     response = self.client.get(get_url("job_seeking:login"),
                                HTTP_AUTHORIZATION="Basic {}".format(
                                    b64encode("[email protected]:")))
     self.assertEquals(403, response.status_code)
Esempio n. 26
0
    def test_mark_complete_no_such_job(self):
        response = self.client.post(
            get_url("job_seeking:mark_complete", kwargs={"posting_id": 1}))

        self.assertEquals(404, response.status_code)
Esempio n. 27
0
    def test_get_jobs_no_jobs(self):
        response = self.client.get(get_url("job_seeking:jobs"))
        data = loads(response.content)

        self.assertEquals(0, len(data))
Esempio n. 28
0
    def test_get_prospective_jobs_no_prospective_jobs(self):
        emily = Contractor.objects.get(name="Emily")

        response = self.client.get(get_url("job_seeking:completed_jobs"))
        self.assertEquals(200, response.status_code)
        self.assertEquals(0, len(loads(response.content)))
Esempio n. 29
0
 def test_get_job_poster_does_not_exist(self):
     bob = JobPoster.objects.get(name="Bob")
     response = self.client.get(
         get_url("job_seeking:job_poster", kwargs={'poster_id':
                                                   bob.id - 1}))
     self.assertEquals(404, response.status_code)
Esempio n. 30
0
 def test_get_job_poster_rating_does_not_exist(self):
     response = self.client.get(
         get_url("job_seeking:job_poster_rating", kwargs={'poster_id':
                                                          100}))
     self.assertEquals(404, response.status_code)