def test_increment_slots_remaining(self): j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j1.save() s1 = Shift(date = "2012-10-23", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 0, job = j1) s1.save() self.assertEqual(s1.slots_remaining, 0) increment_slots_remaining(s1) self.assertEqual(s1.slots_remaining, 1) increment_slots_remaining(s1) self.assertEqual(s1.slots_remaining, 2) increment_slots_remaining(s1) self.assertEqual(s1.slots_remaining, 3) increment_slots_remaining(s1) self.assertEqual(s1.slots_remaining, 4)
def test__when_slug_name_duplicate__should_raise_error(self): slug = Job(slug='peace-maker-c57fe949') slug1 = Job(slug='peace-maker-c57fe949') with self.assertRaises(IntegrityError): slug.save() slug1.save()
def create(request, project_id): project = get_object_or_404( Project, id=project_id, is_active=True, author=request.user ) if request.method == 'POST': form = JobForm(request.POST) if form.is_valid(): job = Job( project=project, title=form.cleaned_data['title'], area=form.cleaned_data['area'], description=form.cleaned_data['description'] ) job.save() return redirect( request, 'project-read', [project.id], {request.url_name: 'True'} ) else: form = JobForm() params = {'project': project, 'form': form} params.update(csrf(request)) return response(request, params)
def test_get_shift_slots_remaining(self): """ Test get_shift_slots_remaining(s_id) """ e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j1.save() s1 = Shift(date="2012-12-10", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-6-25", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-1-9", start_time="12:00", end_time="6:00", max_volunteers=4, job=j1) s1.save() s2.save() s3.save() self.assertIsNotNone(get_shift_slots_remaining(s1.id)) self.assertIsNotNone(get_shift_slots_remaining(s2.id)) self.assertIsNotNone(get_shift_slots_remaining(s3.id))
def test_get_event_by_shift_id(self): e1 = Event( name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23" ) e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1 ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1 ) j1.save() j2.save() s1 = Shift( date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1 ) s2 = Shift( date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1 ) s3 = Shift( date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2 ) s1.save() s2.save() s3.save() self.assertIsNotNone(get_event_by_shift_id(s1.id)) self.assertIsNotNone(get_event_by_shift_id(s2.id)) self.assertIsNotNone(get_event_by_shift_id(s3.id))
def postjob(request): if request.method == 'POST': obj2 = Job(jtitle=request.POST['jtitle'], jcname=request.POST['jcompany'], jobtype=request.POST['job-type'], jstate=request.POST['jstate'], jdistrict=request.POST['jdistrict'], jdesc=request.POST['jdesc']) obj2.save() return render(request, 'adminpanel/postjob.html')
def test_get_shifts_with_open_slots(self): """ Test get_shifts_with_open_slots(j_id) """ u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() self.assertIsNotNone(get_shifts_with_open_slots(j1.id)) self.assertIsNotNone(get_shifts_with_open_slots(j2.id))
def create_job_with_details(job): """ Creates and returns job with passed name and dates """ j1 = Job(name=job['name'], start_date=job['start_date'], end_date=job['end_date'], description=job['description'], event=job['event']) j1.save() return j1
def create_job_with_details(job): """ Creates and returns job with passed name and dates """ j1 = Job(name=job[0], start_date=job[1], end_date=job[2], description=job[3], event=job[4]) j1.save() return j1
def run(self): counter = 0 for job in self.jobs: new_job = Job( title=job.title, description=job.description, employer=self.profile, availability=job.availability, experience=job.experience, education=job.education, employment_type=job.employment_type, overtime=job.overtime, latitude=job.latitude, longitude=job.longitude, ) new_job.save() new_job.workday = job.workday.all() new_job.industry = job.industry.all() new_job.save() new_location = JobLocation( business_name=job.location.business_name, business_address1=job.location.business_address1, business_address2=job.location.business_address2, city=job.location.city, zip_code=job.location.zip_code, latitude=job.location.latitude, longitude=job.location.longitude, job=new_job, ) new_location.save() for existing_profile in self.profiles: rec = JobRecommendation( job=new_job, applicant=existing_profile, state=(JobRecommendation.NEW_REC_SENT if counter > 2 else JobRecommendation.APPLIED_REC), ) rec.save() if counter <= 2: application = ApplicantJob(job=new_job, applicant=existing_profile, send_email=False) application.save() if existing_profile.id == 24 and job.id == 12: application = ApplicantJob(job=new_job, applicant=existing_profile, send_email=False) application.save() counter = counter + 1 counter = 0
def get_shifts_ordered_by_date(self): e1 = Event(name = "Open Source Event", start_date = "2012-10-22", end_date = "2012-10-23") e1.save() j1 = Job(name = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job", event = e1) j1.save() s1 = Shift(date = "2012-1-10", start_time = "9:00", end_time = "3:00", max_volunteers = 1, job = j1) s2 = Shift(date = "2012-6-25", start_time = "10:00", end_time = "4:00", max_volunteers = 2, job = j1) s3 = Shift(date = "2012-12-9", start_time = "12:00", end_time = "6:00", max_volunteers = 4, job = j1) s1.save() s2.save() s3.save() #test typical case shift_list = get_shifts_ordered_by_date(j1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list) #test order self.assertEqual(shift_list[0].date, s1.date) self.assertEqual(shift_list[1].date, s2.date) self.assertEqual(shift_list[2].date, s3.date)
def get_shifts_ordered_by_date(self): e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j1.save() s1 = Shift(date="2012-1-10", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-6-25", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-12-9", start_time="12:00", end_time="6:00", max_volunteers=4, job=j1) s1.save() s2.save() s3.save() #test typical case shift_list = get_shifts_ordered_by_date(j1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list) #test order self.assertEqual(shift_list[0].date, s1.date) self.assertEqual(shift_list[1].date, s2.date) self.assertEqual(shift_list[2].date, s3.date)
def test_get_shift_by_id(self): e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j1.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j1) s1.save() s2.save() s3.save() # test typical cases self.assertIsNotNone(get_shift_by_id(s1.id)) self.assertIsNotNone(get_shift_by_id(s2.id)) self.assertIsNotNone(get_shift_by_id(s3.id)) self.assertEqual(get_shift_by_id(s1.id), s1) self.assertEqual(get_shift_by_id(s2.id), s2) self.assertEqual(get_shift_by_id(s3.id), s3) # test non-existant cases self.assertIsNone(get_shift_by_id(100)) self.assertIsNone(get_shift_by_id(200)) self.assertIsNone(get_shift_by_id(300)) self.assertIsNone(get_shift_by_id(400)) self.assertNotEqual(get_shift_by_id(100), s1) self.assertNotEqual(get_shift_by_id(100), s2) self.assertNotEqual(get_shift_by_id(100), s3) self.assertNotEqual(get_shift_by_id(200), s1) self.assertNotEqual(get_shift_by_id(200), s2) self.assertNotEqual(get_shift_by_id(200), s3) self.assertNotEqual(get_shift_by_id(300), s1) self.assertNotEqual(get_shift_by_id(300), s2) self.assertNotEqual(get_shift_by_id(300), s3)
def get_shifts_by_date(self): j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j1.save() s1 = Shift(date = "2012-1-10", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 1, job = j1) s2 = Shift(date = "2012-6-25", location = "Infinite Loop", start_time = "10:00", end_time = "4:00", max_volunteers = 2, slots_remaining = 2, job = j1) s3 = Shift(date = "2012-12-9", location = "Loopy Loop Road", start_time = "12:00", end_time = "6:00", max_volunteers = 4, slots_remaining = 4, job = j1) s1.save() s2.save() s3.save() #test typical case shift_list = get_shifts_by_date(j1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list) #test order self.assertEqual(shift_list[0].date, s1.date) self.assertEqual(shift_list[1].date, s2.date) self.assertEqual(shift_list[2].date, s3.date)
def create_job_with_details(job): """ Creates and returns job with passed name and dates """ j1 = Job( name=job[0], start_date=job[1], end_date=job[2], description=job[3], event=job[4]) j1.save() return j1
def post(self, request, *args, **kwargs): job_data = json.loads(request.body) if 'company_id' in job_data or 'company' in job_data: raise serializers.ValidationError('Unexpected Company/Company Id.') if 'title' not in job_data or not job_data['title']: raise serializers.ValidationError('Title is required.') if 'vacancy' not in job_data or not job_data['vacancy']: raise serializers.ValidationError('Vacancy is required.') if 'address' not in job_data or not job_data['address']: raise serializers.ValidationError('Address is required.') if 'job_site' not in job_data or not job_data['job_site']: raise serializers.ValidationError('Job site is required.') if 'job_nature' not in job_data or not job_data['job_nature']: raise serializers.ValidationError('Job nature is required.') if 'job_type' not in job_data or not job_data['job_type']: raise serializers.ValidationError('Job type is required.') if 'status' in job_data: if job_data['status'] != 'DRAFT' and job_data[ 'status'] != 'POSTED' and job_data['status'] != '': raise serializers.ValidationError('Invalid status.') if 'salary_min' in job_data and job_data[ 'salary_min'] and 'salary_max' in job_data and job_data[ 'salary_max']: if int(job_data['salary_min']) > int(job_data['salary_max']): raise serializers.ValidationError( 'Minimum salary cannot be greater than maximum salary') company = Company.objects.get(user_id=request.user.id) job_data['company'] = company try: skills = job_data['skills'] del job_data['skills'] except KeyError: skills = None job_obj = Job(**job_data) populate_user_info(request, job_obj, False, False) job_obj.save() if skills: skill_list = skills.split(',') for skill in skill_list: try: skill_obj = Skill.objects.get(name=skill) except Skill.DoesNotExist: skill_obj = None if skill_obj: job_obj.job_skills.add(skill_obj) return Response(HTTP_200_OK)
class ReadTest(TestCase): def setUp(self): self.client = Client() self.username = '******' self.email = '*****@*****.**' self.passwd = 'passwd' self.title = 'Test' self.area = 'DESIGN' self.description = 'Testing...' user = User.objects.create_user(self.username, self.email, self.passwd) self.project = Project(author=user) self.project.save() self.job = Job(project=self.project, title=self.title, area=self.area, description=self.description) self.job.save() self.client.login(username=self.username, password=self.passwd) def test_login_required(self): self.client.logout() response = self.client.get(READ_URL % self.job.id) self.assertRedirects(response, LOGIN_URL + '?next=' + READ_URL % self.job.id) def test_get(self): response = self.client.get(READ_URL % self.job.id) self.assertEqual(response.status_code, 200) def test_invalid_id(self): response = self.client.get(READ_URL % '2') self.assertEqual(response.status_code, 404) def test_deactivated_project(self): self.project.is_active = False self.project.save() response = self.client.get(READ_URL % self.job.id) self.assertEqual(response.status_code, 404) def test_deactivated_project_author(self): username = '******' email = '*****@*****.**' passwd = 'abc' user = User.objects.create_user(username, email, passwd) self.client.logout() self.client.login(username=username, password=passwd) self.project.author.is_active = False self.project.author.save() response = self.client.get(READ_URL % self.job.id) self.assertEqual(response.status_code, 404)
def test_delete_shift(self): """ Test delete_shift(shift_id) """ u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j1.save() s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1) s2 = Shift(date="2011-11-11", start_time="11:00", end_time="12:00", max_volunteers=3, job=j1) s1.save() s2.save() self.assertTrue(delete_shift(s1.id)) self.assertFalse(delete_shift(100)) register(v1.id, s2.id) self.assertFalse(delete_shift(s2.id))
def post(self, request, *args, **kwargs): job_name = request.POST.get('job_name') job_desc = request.POST.get('job_desc') job_type = request.POST.get('job_type') job_content = request.POST.get('job_content') extra_vars = request.POST.get('extra_vars') if job_type == 'python': job_name = job_name + ".py" elif job_type == "shell": job_name = job_name + ".sh" elif job_type == "playbook": job_name = job_name job = Job(job_name=job_name, job_desc=job_desc, job_type=job_type, job_content=job_content, extra_vars=extra_vars) job.save() return JsonResponse({'message': 'add job {} success'.format(job_name)})
def add_job(job_db_id, user): job_db_obj = get_job_db_by_id(job_db_id) try: new_job_seen = Job( company=job_db_obj.company, location=job_db_obj.location, position=job_db_obj.position, description=job_db_obj.description, html_description=job_db_obj.html_description, link=job_db_obj.link, user=user ) print("error 1") new_job_seen.save() print("error 2") return new_job_seen except Exception as e: print("Error during creating Job object, error is: ", e) return None
def save(self, data, element_object=None): if element_object == None: job = Job() uid = self.generateUID() job.uid = uid else: job = element_object uid_env = self.parseData(data, "environnement") environnement = self.getEnv(uid_env) if not environnement == None: job.name = self.parseData(data, "name") job.command = self.parseData(data, "command") job.type = self.parseData(data, "type") job.schedule = self.parseData(data, "schedule") job.restart_policy = self.parseData(data, "restart_policy") job.back_off_limit = self.parseData(data, "back_off_limit") job.container_image = self.parseData(data, "container_image") job.environnement = environnement #job.config = self.parseData(data, "config") job.save() uid_container = self.parseData(data, "container") container_item = self.getContainer(uid_container) if not container_item == None: job.container.add(container_item) return { "status": "success", "message": "Saved", "element": "job", "uid": job.uid } else: return { "status": "error", "message": "Environnement Not exist", "element": "job" }
def JobAdd(request): data = {"added": False, "message": "", "job": None} if request.method == "POST": input_data = request.POST.copy() print(input_data) if "id" in request.GET: if request.GET["id"] != "": pass else: # Add job = Job.objects.filter(title=input_data["title"]) if job: data["message"] = "The job already exists" else: input_data["experience_year"] = int( input_data["experience_year"]) input_data["salary"] = int(input_data["salary"]) print(input_data) job = Job(title=input_data["title"], description=input_data["description"], category=input_data["category"], location=input_data["location"], qualification=input_data["qualification"], experience_year=input_data["experience_year"], salary=input_data["salary"], job_type=input_data["job_type"], deadline=input_data["deadline"], skills=input_data["skills"]) job.save() data["added"] = True pass if "id" in request.GET: try: data["job"] = Job.objects.get(id=request.GET["id"]) except: pass return render(request, "job-add.html", data)
def setUp(self): company = Company(name='Ishraak Solutions', web_address='www.ishraak.com') company.save() self.company = company job_gender = JobGender(name='Male') job_gender.save() self.job_gender = job_gender experience = Experience(name='Part Time') experience.save() self.experience = experience qualification = Qualification(name='Graduate') qualification.save() self.qualification = qualification job = Job( title='Software Engineer', experience=1, salary_min=5000.00, salary_max=10000.00, qualification=self.qualification, job_gender=self.job_gender, application_deadline='2020-03-29', description='Test job', responsibilities='Web developer', education='Computer Science', other_benefits='Apple Watch', company=self.company, latitude=3.00, longitude=4.00, ) job.save() self.jb = job user = User(username='******', password='******') user.save() self.usr = user
def test_get_jobs_ordered_by_title(self): j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j2 = Job(job_title = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job") j3 = Job(job_title = "Project Manager", start_date = "2012-1-2", end_date = "2012-2-2", description = "A management job") j1.save() j2.save() j3.save() #test typical case job_list = get_jobs_ordered_by_title() self.assertIsNotNone(job_list) self.assertNotEqual(job_list, False) self.assertEqual(len(job_list), 3) self.assertIn(j1, job_list) self.assertIn(j2, job_list) self.assertIn(j3, job_list) #test order self.assertEqual(job_list[0].job_title, j3.job_title) self.assertEqual(job_list[1].job_title, j1.job_title) self.assertEqual(job_list[2].job_title, j2.job_title)
def _do_import_entries_v2(job: Job): user: User = job.user entity: Entity = Entity.objects.get(id=job.target.id) import_serializer = EntryImportEntitySerializer(data=json.loads(job.params)) import_serializer.is_valid() context = {"request": DRFRequest(user)} total_count = len(import_serializer.validated_data["entries"]) err_msg = [] for index, entry_data in enumerate(import_serializer.validated_data["entries"]): job.text = "Now importing... (progress: [%5d/%5d])" % (index + 1, total_count) job.save(update_fields=["text"]) # abort processing when job is canceled if job.is_canceled(): job.status = Job.STATUS["CANCELED"] job.save(update_fields=["status"]) return entry_data["schema"] = entity entry = Entry.objects.filter(name=entry_data["name"], schema=entity, is_active=True).first() if entry: serializer = EntryUpdateSerializer(instance=entry, data=entry_data, context=context) else: serializer = EntryCreateSerializer(data=entry_data, context=context) try: serializer.is_valid(raise_exception=True) serializer.save() except ValidationError: err_msg.append(entry_data["name"]) if err_msg: text = "Imported Entry count: %d, Failed import Entry: %s" % (total_count, err_msg) job.update(status=Job.STATUS["WARNING"], text=text) else: text = "Imported Entry count: %d" % total_count job.update(status=Job.STATUS["DONE"], text=text)
def test_get_job_by_id(self): e1 = Event(name = "Software Conference", start_date = "2012-10-22", end_date = "2012-10-25") e1.save() j1 = Job(name = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job", event = e1) j2 = Job(name = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job", event = e1) j3 = Job(name = "Project Manager", start_date = "2012-1-2", end_date = "2012-2-2", description = "A management job", event = e1) j1.save() j2.save() j3.save() #test typical cases self.assertIsNotNone(get_job_by_id(j1.id)) self.assertIsNotNone(get_job_by_id(j2.id)) self.assertIsNotNone(get_job_by_id(j3.id)) self.assertEqual(get_job_by_id(j1.id), j1) self.assertEqual(get_job_by_id(j2.id), j2) self.assertEqual(get_job_by_id(j3.id), j3) #test non-existant cases self.assertIsNone(get_job_by_id(100)) self.assertIsNone(get_job_by_id(200)) self.assertIsNone(get_job_by_id(300)) self.assertIsNone(get_job_by_id(400)) self.assertNotEqual(get_job_by_id(100), j1) self.assertNotEqual(get_job_by_id(100), j2) self.assertNotEqual(get_job_by_id(100), j3) self.assertNotEqual(get_job_by_id(200), j1) self.assertNotEqual(get_job_by_id(200), j2) self.assertNotEqual(get_job_by_id(200), j3) self.assertNotEqual(get_job_by_id(300), j1) self.assertNotEqual(get_job_by_id(300), j2) self.assertNotEqual(get_job_by_id(300), j3)
def test_get_jobs_by_event_id(self): """ Test get_jobs_by_event_id(e_id) """ e1 = Event( name="Software Conference", start_date="2012-10-22", end_date="2012-10-25" ) e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1 ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1 ) j3 = Job( name="Project Manager", start_date="2012-1-2", end_date="2012-2-2", description="A management job", event=e1 ) j1.save() j2.save() j3.save() # test typical case job_list = get_jobs_by_event_id(e1.id) self.assertIsNotNone(job_list) self.assertNotEqual(job_list, False) self.assertEqual(len(job_list), 3) self.assertIn(j1, job_list) self.assertIn(j2, job_list) self.assertIn(j3, job_list)
def test_delete_job(self): """ Test delete_job(job_id) """ e1 = Event( name="Software Conference", start_date="2012-10-22", end_date="2012-10-25" ) e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1 ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1 ) j3 = Job( name="Project Manager", start_date="2012-1-2", end_date="2012-2-2", description="A management job", event=e1 ) j1.save() j2.save() j3.save() # test typical cases self.assertTrue(delete_job(j1.id)) self.assertTrue(delete_job(j2.id)) self.assertTrue(delete_job(j3.id)) self.assertFalse(delete_job(100)) self.assertFalse(delete_job(200)) self.assertFalse(delete_job(300))
def test_get_jobs_ordered_by_title(self): e1 = Event(name = "Software Conference", start_date = "2012-10-22", end_date = "2012-10-25") e1.save() j1 = Job(name = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job", event = e1) j2 = Job(name = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job", event = e1) j3 = Job(name = "Project Manager", start_date = "2012-1-2", end_date = "2012-2-2", description = "A management job", event = e1) j1.save() j2.save() j3.save() #test typical case job_list = get_jobs_ordered_by_title() self.assertIsNotNone(job_list) self.assertNotEqual(job_list, False) self.assertEqual(len(job_list), 3) self.assertIn(j1, job_list) self.assertIn(j2, job_list) self.assertIn(j3, job_list) #test order self.assertEqual(job_list[0].name, j3.name) self.assertEqual(job_list[1].name, j1.name) self.assertEqual(job_list[2].name, j2.name)
def test_edit_shift_hours(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j1.save() s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1) s1.save() register(v1.id, s1.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=11, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=1, minute=0) end_time = datetime.time(hour=4, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=4, minute=15) end_time = datetime.time(hour=12, minute=35) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=2, minute=5) end_time = datetime.time(hour=4, minute=15) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=5, minute=30) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time)
def test_cancel_shift_registration(self): u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test cases when try to cancel when they aren't signed up for a shift with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s3.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s3.id) # register volunteers to shifts register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) # test typical cases cancel_shift_registration(v1.id, s1.id) cancel_shift_registration(v1.id, s2.id) cancel_shift_registration(v1.id, s3.id) # cancel_shift_registration(v2.id, s1.id) # why is this throwing ObjectDoesNotExist? cancel_shift_registration(v2.id, s2.id) cancel_shift_registration(v2.id, s3.id)
def test_is_signed_up(self): u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test cases where not signed up yet self.assertFalse(is_signed_up(v1.id, s1.id)) self.assertFalse(is_signed_up(v1.id, s2.id)) self.assertFalse(is_signed_up(v1.id, s3.id)) # test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) self.assertTrue(is_signed_up(v1.id, s1.id)) self.assertTrue(is_signed_up(v1.id, s2.id)) self.assertTrue(is_signed_up(v1.id, s3.id)) # test case where more than one volunteer signs up for the same shift self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertFalse(is_signed_up(v2.id, s2.id)) self.assertFalse(is_signed_up(v2.id, s3.id)) register(v2.id, s2.id) register(v2.id, s3.id) self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertTrue(is_signed_up(v2.id, s2.id)) self.assertTrue(is_signed_up(v2.id, s3.id))
def test_edit_shift_hours(self): u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j1.save() s1 = Shift(date="2012-10-23", start_time="1:00", end_time="12:00", max_volunteers=1, job=j1) s1.save() register(v1.id, s1.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=11, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=1, minute=0) end_time = datetime.time(hour=4, minute=0) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=4, minute=15) end_time = datetime.time(hour=12, minute=35) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=2, minute=5) end_time = datetime.time(hour=4, minute=15) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=5, minute=30) edit_shift_hours(v1.id, s1.id, start_time, end_time) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift.start_time) self.assertIsNotNone(volunteer_shift.end_time) self.assertEqual(volunteer_shift.start_time, start_time) self.assertEqual(volunteer_shift.end_time, end_time)
class UpdateTest(TestCase): def setUp(self): self.client = Client() self.username = '******' self.email = '*****@*****.**' self.passwd = 'passwd' self.title = 'Test' self.new_title = 'Testing' self.area = 'DESIGN' self.new_area = 'ADM' self.description = 'Testing...' self.new_description = 'Test...' user = User.objects.create_user(self.username, self.email, self.passwd) self.project = Project(author=user) self.project.save() self.job = Job(project=self.project, title=self.title, area=self.area, description=self.description) self.job.save() self.client.login(username=self.username, password=self.passwd) def test_login_required(self): self.client.logout() response = self.client.get(UPDATE_URL % self.job.id) self.assertRedirects(response, LOGIN_URL + '?next=' + \ UPDATE_URL % self.job.id) def test_get(self): response = self.client.get(UPDATE_URL % self.job.id) self.assertEqual(response.status_code, 200) def test_post(self): self.client.post(UPDATE_URL % self.job.id, { 'title': self.new_title, 'area': self.new_area, 'description': self.new_description, }) job = Job.objects.get(id=self.job.id) self.assertEqual(job.is_active, True) self.assertEqual(job.created, date.today()) self.assertEqual(job.title, self.new_title) self.assertEqual(job.area, self.new_area) self.assertEqual(job.description, self.new_description) def test_next(self): response = self.client.post(UPDATE_URL % self.job.id + \ '?next=' + LOGIN_URL, { 'title': self.new_title, 'area': self.new_area, 'description': self.new_description, }) self.assertRedirects(response, LOGIN_URL + '?job-update=True') def test_invalid_id(self): response = self.client.get(UPDATE_URL % '2') self.assertEqual(response.status_code, 404) def test_invalid_author(self): self.client.logout() User.objects.create_user('*****@*****.**', '*****@*****.**', 'abc') self.client.login(username='******', password='******') response = self.client.get(UPDATE_URL % self.job.id) self.assertEqual(response.status_code, 404) def test_deactivated_project(self): self.project.is_active = False self.project.save() response = self.client.get(UPDATE_URL % self.job.id) self.assertEqual(response.status_code, 404) def test_deactivated_project_author(self): username = '******' email = '*****@*****.**' passwd = 'abc' user = User.objects.create_user(username, email, passwd) self.client.logout() self.client.login(username=username, password=passwd) self.project.author.is_active = False self.project.author.save() response = self.client.get(UPDATE_URL % self.job.id) self.assertEqual(response.status_code, 404)
def _do_import_entries(job: Job): user: User = job.user entity: Entity = Entity.objects.get(id=job.target.id) import_data = json.loads(job.params) # get custom_view method to prevent executing check method in every loop processing custom_view_handler = None if custom_view.is_custom("after_import_entry", entity.name): custom_view_handler = "after_import_entry" total_count = len(import_data) # create or update entry for (index, entry_data) in enumerate(import_data): job.text = "Now importing... (progress: [%5d/%5d] for %s)" % ( index + 1, total_count, entity.name, ) job.save(update_fields=["text"]) # abort processing when job is canceled if job.is_canceled(): return entry: Entry = Entry.objects.filter(name=entry_data["name"], schema=entity).first() if not entry: entry = Entry.objects.create(name=entry_data["name"], schema=entity, created_user=user) # create job to notify create event to the WebHook URL job_notify: Job = Job.new_notify_create_entry(user, entry) elif not user.has_permission(entry, ACLType.Writable): continue else: # create job to notify edit event to the WebHook URL job_notify = Job.new_notify_update_entry(user, entry) entry.complement_attrs(user) for attr_name, value in entry_data["attrs"].items(): # If user doesn't have readable permission for target Attribute, # it won't be created. if not entry.attrs.filter(schema__name=attr_name).exists(): continue # There should be only one EntityAttr that is specified by name and Entity. # Once there are multiple EntityAttrs, it must be an abnormal situation. # In that case, this aborts import processing for this entry and reports it # as an error. attr_query = entry.attrs.filter( schema__name=attr_name, is_active=True, schema__parent_entity=entry.schema, ) if attr_query.count() > 1: Logger.error( "[task.import_entry] Abnormal entry was detected(%s:%d)" % (entry.name, entry.id) ) break attr: Attribute = attr_query.last() if not user.has_permission(attr.schema, ACLType.Writable) or not user.has_permission( attr, ACLType.Writable ): continue input_value = attr.convert_value_to_register(value) if user.has_permission(attr.schema, ACLType.Writable) and attr.is_updated(input_value): attr.add_value(user, input_value) # call custom-view processing corresponding to import entry if custom_view_handler: custom_view.call_custom(custom_view_handler, entity.name, user, entry, attr, value) # register entry to the Elasticsearch entry.register_es() # run notification job job_notify.run() job.update(status=Job.STATUS["DONE"], text="")
def test_get_shifts_signed_up_for(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name = "Yoshi", last_name = "Turtle", address = "Mario Land", city = "Nintendo Land", state = "Nintendo State", country = "Nintendo Nation", phone_number = "2374983247", email = "*****@*****.**", user = u1) v1.save() j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j2 = Job(job_title = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job") j1.save() j2.save() s1 = Shift(date = "2012-10-23", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 1, job = j1) s2 = Shift(date = "2012-10-23", location = "Infinite Loop", start_time = "10:00", end_time = "4:00", max_volunteers = 2, slots_remaining = 2, job = j1) s3 = Shift(date = "2012-10-23", location = "Loopy Loop Road", start_time = "12:00", end_time = "6:00", max_volunteers = 4, slots_remaining = 4, job = j2) s1.save() s2.save() s3.save() #sign up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) #test typical case shift_list = get_shifts_signed_up_for(v1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list)
def test_get_shift_by_id(self): j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j1.save() s1 = Shift(date = "2012-10-23", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 1, job = j1) s2 = Shift(date = "2012-10-23", location = "Infinite Loop", start_time = "10:00", end_time = "4:00", max_volunteers = 2, slots_remaining = 2, job = j1) s3 = Shift(date = "2012-10-23", location = "Loopy Loop Road", start_time = "12:00", end_time = "6:00", max_volunteers = 4, slots_remaining = 4, job = j1) s1.save() s2.save() s3.save() #test typical cases self.assertIsNotNone(get_shift_by_id(s1.id)) self.assertIsNotNone(get_shift_by_id(s2.id)) self.assertIsNotNone(get_shift_by_id(s3.id)) self.assertEqual(get_shift_by_id(s1.id), s1) self.assertEqual(get_shift_by_id(s2.id), s2) self.assertEqual(get_shift_by_id(s3.id), s3) #test non-existant cases self.assertIsNone(get_shift_by_id(100)) self.assertIsNone(get_shift_by_id(200)) self.assertIsNone(get_shift_by_id(300)) self.assertIsNone(get_shift_by_id(400)) self.assertNotEqual(get_shift_by_id(100), s1) self.assertNotEqual(get_shift_by_id(100), s2) self.assertNotEqual(get_shift_by_id(100), s3) self.assertNotEqual(get_shift_by_id(200), s1) self.assertNotEqual(get_shift_by_id(200), s2) self.assertNotEqual(get_shift_by_id(200), s3) self.assertNotEqual(get_shift_by_id(300), s1) self.assertNotEqual(get_shift_by_id(300), s2) self.assertNotEqual(get_shift_by_id(300), s3)
def test_get_volunteer_shift_by_id(self): u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) self.assertEqual( get_volunteer_shift_by_id(v1.id, s1.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) ) self.assertEqual( get_volunteer_shift_by_id(v1.id, s2.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) ) self.assertEqual( get_volunteer_shift_by_id(v1.id, s3.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) ) # self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id), # VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id)) # why does this throw DoesNotExist? self.assertEqual( get_volunteer_shift_by_id(v2.id, s2.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id) ) self.assertEqual( get_volunteer_shift_by_id(v2.id, s3.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id) )
def test_clear_shift_hours(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() register(v1.id, s1.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=12, minute=0) add_shift_hours(v1.id, s2.id, start_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=6, minute=0) add_shift_hours(v1.id, s3.id, start_time, end_time) clear_shift_hours(v1.id, s1.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s2.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s3.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time)
def write_db(fields, entry): j = Job() for key in fields: if entry[key] is not None and entry[key] != "": j.__setattr__(key, entry[key]) j.save()
def test_get_shift_by_id(self): e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j1.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j1) s1.save() s2.save() s3.save() #test typical cases self.assertIsNotNone(get_shift_by_id(s1.id)) self.assertIsNotNone(get_shift_by_id(s2.id)) self.assertIsNotNone(get_shift_by_id(s3.id)) self.assertEqual(get_shift_by_id(s1.id), s1) self.assertEqual(get_shift_by_id(s2.id), s2) self.assertEqual(get_shift_by_id(s3.id), s3) #test non-existant cases self.assertIsNone(get_shift_by_id(100)) self.assertIsNone(get_shift_by_id(200)) self.assertIsNone(get_shift_by_id(300)) self.assertIsNone(get_shift_by_id(400)) self.assertNotEqual(get_shift_by_id(100), s1) self.assertNotEqual(get_shift_by_id(100), s2) self.assertNotEqual(get_shift_by_id(100), s3) self.assertNotEqual(get_shift_by_id(200), s1) self.assertNotEqual(get_shift_by_id(200), s2) self.assertNotEqual(get_shift_by_id(200), s3) self.assertNotEqual(get_shift_by_id(300), s1) self.assertNotEqual(get_shift_by_id(300), s2) self.assertNotEqual(get_shift_by_id(300), s3)
def create(self, validated_data): validated_data['job_slug'] = slug_helper(validated_data['name']) job = Job(**validated_data) job.save() return job
def test_generate_report(self): """ Tests test_generate_report(volunteer_shift_list) """ u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() shift_list = [s1, s2, s3] self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list) # register will return an exception on error # (such as when invalid parameters are passed) # if an exception does get raised, this test will automatically fail register(v1.id, s1.id) volunteer_shift_1 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNotNone(volunteer_shift_1) register(v1.id, s2.id) volunteer_shift_2 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) self.assertIsNotNone(volunteer_shift_2) register(v1.id, s3.id) volunteer_shift_3 = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) self.assertIsNotNone(volunteer_shift_3) volunteer_shift_list = [volunteer_shift_1, volunteer_shift_2, volunteer_shift_3] self.assertIsNotNone(generate_report(volunteer_shift_list))
def test_clear_shift_hours(self): u1 = User.objects.create_user("Yoshi") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() register(v1.id, s1.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) start_time = datetime.time(hour=9, minute=0) end_time = datetime.time(hour=10, minute=0) add_shift_hours(v1.id, s1.id, start_time, end_time) start_time = datetime.time(hour=10, minute=0) end_time = datetime.time(hour=12, minute=0) add_shift_hours(v1.id, s2.id, start_time, end_time) start_time = datetime.time(hour=5, minute=0) end_time = datetime.time(hour=6, minute=0) add_shift_hours(v1.id, s3.id, start_time, end_time) clear_shift_hours(v1.id, s1.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s2.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time) clear_shift_hours(v1.id, s3.id) volunteer_shift = VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id) self.assertIsNone(volunteer_shift.start_time) self.assertIsNone(volunteer_shift.end_time)
def test_has_slots_remaining(self): j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j1.save() s1 = Shift(date = "2012-10-23", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 1, job = j1) s2 = Shift(date = "2012-10-23", location = "Infinite Loop", start_time = "10:00", end_time = "4:00", max_volunteers = 2, slots_remaining = 2, job = j1) s3 = Shift(date = "2012-10-23", location = "Loopy Loop Road", start_time = "12:00", end_time = "6:00", max_volunteers = 4, slots_remaining = 4, job = j1) s1.save() s2.save() s3.save() self.assertTrue(has_slots_remaining(s1)) self.assertTrue(has_slots_remaining(s2)) self.assertTrue(has_slots_remaining(s3)) decrement_slots_remaining(s1) self.assertFalse(has_slots_remaining(s1)) decrement_slots_remaining(s2) self.assertTrue(has_slots_remaining(s2)) decrement_slots_remaining(s2) self.assertFalse(has_slots_remaining(s2)) decrement_slots_remaining(s3) self.assertTrue(has_slots_remaining(s3)) decrement_slots_remaining(s3) self.assertTrue(has_slots_remaining(s3)) decrement_slots_remaining(s3) self.assertTrue(has_slots_remaining(s3)) decrement_slots_remaining(s3) self.assertFalse(has_slots_remaining(s3)) self.assertEqual(s1.slots_remaining, 0) self.assertEqual(s2.slots_remaining, 0) self.assertEqual(s3.slots_remaining, 0)
def test_get_volunteer_shift_by_id(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) self.assertEqual( get_volunteer_shift_by_id(v1.id, s1.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) self.assertEqual( get_volunteer_shift_by_id(v1.id, s2.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) self.assertEqual( get_volunteer_shift_by_id(v1.id, s3.id), VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) #self.assertEqual(get_volunteer_shift_by_id(v2.id, s1.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s1.id)) #why does this throw DoesNotExist? self.assertEqual( get_volunteer_shift_by_id(v2.id, s2.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) self.assertEqual( get_volunteer_shift_by_id(v2.id, s3.id), VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id))
def test_register(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name = "Yoshi", last_name = "Turtle", address = "Mario Land", city = "Nintendo Land", state = "Nintendo State", country = "Nintendo Nation", phone_number = "2374983247", email = "*****@*****.**", user = u1) v2 = Volunteer(first_name = "John", last_name = "Doe", address = "7 Alpine Street", city = "Maplegrove", state = "Wyoming", country = "USA", phone_number = "23454545", email = "*****@*****.**", user = u2) v1.save() v2.save() j1 = Job(job_title = "Software Developer", start_date = "2012-10-22", end_date = "2012-10-23", description = "A software job") j2 = Job(job_title = "Systems Administrator", start_date = "2012-9-1", end_date = "2012-10-26", description = "A systems administrator job") j1.save() j2.save() s1 = Shift(date = "2012-10-23", location = "Google Drive", start_time = "9:00", end_time = "3:00", max_volunteers = 1, slots_remaining = 1, job = j1) s2 = Shift(date = "2012-10-23", location = "Infinite Loop", start_time = "10:00", end_time = "4:00", max_volunteers = 2, slots_remaining = 2, job = j1) s3 = Shift(date = "2012-10-23", location = "Loopy Loop Road", start_time = "12:00", end_time = "6:00", max_volunteers = 4, slots_remaining = 4, job = j2) s1.save() s2.save() s3.save() #test typical cases self.assertTrue(register(v1.id, s1.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) self.assertTrue(register(v1.id, s2.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) self.assertTrue(register(v1.id, s3.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) #test cases where volunteer tries to sign up for a shift they are already signed up for self.assertFalse(register(v1.id, s1.id)) self.assertFalse(register(v1.id, s2.id)) self.assertFalse(register(v1.id, s3.id)) #test case where more than one volunteer signs up for the same shift #v2 can't sign up for s1 because there are no slots remaining self.assertFalse(register(v2.id, s1.id)) self.assertTrue(register(v2.id, s2.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) self.assertTrue(register(v2.id, s3.id)) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)) #test cases where a volunteer tries to sign up for a shift they are already signed up for self.assertFalse(register(v2.id, s2.id)) self.assertFalse(register(v2.id, s3.id))
def test_is_signed_up(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test cases where not signed up yet self.assertFalse(is_signed_up(v1.id, s1.id)) self.assertFalse(is_signed_up(v1.id, s2.id)) self.assertFalse(is_signed_up(v1.id, s3.id)) #test cases where signed up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) self.assertTrue(is_signed_up(v1.id, s1.id)) self.assertTrue(is_signed_up(v1.id, s2.id)) self.assertTrue(is_signed_up(v1.id, s3.id)) #test case where more than one volunteer signs up for the same shift self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertFalse(is_signed_up(v2.id, s2.id)) self.assertFalse(is_signed_up(v2.id, s3.id)) register(v2.id, s2.id) register(v2.id, s3.id) self.assertFalse(is_signed_up(v2.id, s1.id)) self.assertTrue(is_signed_up(v2.id, s2.id)) self.assertTrue(is_signed_up(v2.id, s3.id))
class DeleteTest(TestCase): def setUp(self): self.client = Client() self.username = '******' self.email = '*****@*****.**' self.passwd = 'passwd' self.title = 'Test' self.area = 'DESIGN' self.description = 'Testing...' user = User.objects.create_user(self.username, self.email, self.passwd) self.project = Project(author=user) self.project.save() self.job = Job(project=self.project, title=self.title, area=self.area, description=self.description) self.job.save() self.client.login(username=self.username, password=self.passwd) def test_login_required(self): self.client.logout() response = self.client.get(DELETE_URL % self.job.id) self.assertRedirects(response, LOGIN_URL + '?next=' + \ DELETE_URL % self.job.id) def test_get(self): response = self.client.get(DELETE_URL % self.job.id) self.assertEqual(response.status_code, 200) def test_post(self): self.client.post(DELETE_URL % self.job.id) self.assertEqual(Job.objects.filter(is_active=True).count(), 0) def test_next(self): response = self.client.post(DELETE_URL % self.job.id + '?next=' + LOGIN_URL) self.assertRedirects(response, LOGIN_URL + '?job-delete=True') def test_invalid_id(self): response = self.client.get(DELETE_URL % '2') self.assertEqual(response.status_code, 404) def test_invalid_author(self): self.client.logout() User.objects.create_user('*****@*****.**', '*****@*****.**', 'abc') self.client.login(username='******', password='******') response = self.client.get(DELETE_URL % self.job.id) self.assertEqual(response.status_code, 404) def test_deactivated_project(self): self.project.is_active = False self.project.save() response = self.client.get(DELETE_URL % self.job.id) self.assertEqual(response.status_code, 404) def test_deactivated_project_author(self): self.client.logout() user = User.objects.create_user('*****@*****.**', '*****@*****.**', 'abc') self.job.author = user self.job.save() self.project.author.is_active = False self.project.save() self.client.login(username='******', password='******') response = self.client.get(DELETE_URL % self.job.id) self.assertEqual(response.status_code, 404)
def test_register(self): RESULT_IS_VALID = "IS_VALID" ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP" ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING" u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test typical cases register(v1.id, s1.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) #test cases where volunteer tries to sign up for a shift they are already signed up for self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP) #test case where more than one volunteer signs up for the same shift #v2 can't sign up for s1 because there are no slots remaining self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING) register(v2.id, s2.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) register(v2.id, s3.id) self.assertIsNotNone( VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)) #test cases where a volunteer tries to sign up for a shift they are already signed up for self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
def test_get_unlogged_shifts_by_volunteer_id(self): u1 = User.objects.create_user('Yoshi') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v1.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #sign up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) #test typical case shift_list = get_unlogged_shifts_by_volunteer_id(v1.id) self.assertIsNotNone(shift_list) self.assertNotEqual(shift_list, False) self.assertEqual(len(shift_list), 3) self.assertIn(s1, shift_list) self.assertIn(s2, shift_list) self.assertIn(s3, shift_list)
def test_register(self): ERROR_CODE_ALREADY_SIGNED_UP = "ERROR_CODE_ALREADY_SIGNED_UP" ERROR_CODE_NO_SLOTS_REMAINING = "ERROR_CODE_NO_SLOTS_REMAINING" u1 = User.objects.create_user("Yoshi") u2 = User.objects.create_user("John") v1 = Volunteer( first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1, ) v2 = Volunteer( first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2, ) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job( name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1, ) j2 = Job( name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1, ) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() # test typical cases register(v1.id, s1.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s1.id)) register(v1.id, s2.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s2.id)) register(v1.id, s3.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v1.id, shift_id=s3.id)) # test cases where volunteer tries to sign up for a shift # they are already signed up for self.assertEqual(register(v1.id, s1.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v1.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP) # test case where more than one volunteer signs up for the same shift # v2 can't sign up for s1 because there are no slots remaining self.assertEqual(register(v2.id, s1.id), ERROR_CODE_NO_SLOTS_REMAINING) register(v2.id, s2.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s2.id)) register(v2.id, s3.id) self.assertIsNotNone(VolunteerShift.objects.get(volunteer_id=v2.id, shift_id=s3.id)) # test cases where a volunteer tries to sign up for a shift # they are already signed up for self.assertEqual(register(v2.id, s2.id), ERROR_CODE_ALREADY_SIGNED_UP) self.assertEqual(register(v2.id, s3.id), ERROR_CODE_ALREADY_SIGNED_UP)
def test_cancel_shift_registration(self): u1 = User.objects.create_user('Yoshi') u2 = User.objects.create_user('John') v1 = Volunteer(first_name="Yoshi", last_name="Turtle", address="Mario Land", city="Nintendo Land", state="Nintendo State", country="Nintendo Nation", phone_number="2374983247", email="*****@*****.**", user=u1) v2 = Volunteer(first_name="John", last_name="Doe", address="7 Alpine Street", city="Maplegrove", state="Wyoming", country="USA", phone_number="23454545", email="*****@*****.**", user=u2) v1.save() v2.save() e1 = Event(name="Open Source Event", start_date="2012-10-22", end_date="2012-10-23") e1.save() j1 = Job(name="Software Developer", start_date="2012-10-22", end_date="2012-10-23", description="A software job", event=e1) j2 = Job(name="Systems Administrator", start_date="2012-9-1", end_date="2012-10-26", description="A systems administrator job", event=e1) j1.save() j2.save() s1 = Shift(date="2012-10-23", start_time="9:00", end_time="3:00", max_volunteers=1, job=j1) s2 = Shift(date="2012-10-23", start_time="10:00", end_time="4:00", max_volunteers=2, job=j1) s3 = Shift(date="2012-10-23", start_time="12:00", end_time="6:00", max_volunteers=4, job=j2) s1.save() s2.save() s3.save() #test cases when try to cancel when they aren't signed up for a shift with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v1.id, s3.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s1.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s2.id) with self.assertRaises(ObjectDoesNotExist): cancel_shift_registration(v2.id, s3.id) #register volunteers to shifts register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) #test typical cases cancel_shift_registration(v1.id, s1.id) cancel_shift_registration(v1.id, s2.id) cancel_shift_registration(v1.id, s3.id) #cancel_shift_registration(v2.id, s1.id) #why is this throwing ObjectDoesNotExist? cancel_shift_registration(v2.id, s2.id) cancel_shift_registration(v2.id, s3.id)
def test_send_reminder(self): u1 = User.objects.create_user("Marina") u2 = User.objects.create_user("Anna") v1 = Volunteer( first_name="Marina", last_name="Tsvetaeva", address="MyAddress", city="MyCity", state="MyState", country="MyCountry", phone_number="2374983247", email="*****@*****.**", reminder_days=1, user=u1, ) v2 = Volunteer( first_name="Anna", last_name="Akhmatova", address="MyAddress", city="MyCity", state="MyState", country="MyCountry", phone_number="2374983247", email="*****@*****.**", reminder_days=7, user=u2, ) v1.save() v2.save() e1 = Event(name="GHC 2015", start_date="2015-07-22", end_date="2015-08-23") e1.save() j1 = Job( name="Volunteer Program Manager", start_date="2015-07-22", end_date="2015-08-23", description="Volunteer Program Manager", event=e1, ) j2 = Job( name="Volunteer Coordinator", start_date="2015-07-22", end_date="2015-08-23", description="Volunteer Coordinator", event=e1, ) j1.save() j2.save() s1 = Shift( date="2015-08-23", start_time="9:00", end_time="3:00", max_volunteers=1, address="Test address", city="Atlanta", state="Georgia", country="USA", venue="Near the south entrance", job=j1, ) s2 = Shift( date=date.today() + timedelta(7), # one week date start_time="10:00", end_time="4:00", max_volunteers=2, address="Test address", city="Atlanta", state="Georgia", country="USA", venue="Near the south entrance", job=j1, ) s3 = Shift( date=date.today() + timedelta(1), # tomorrow date start_time="12:00", end_time="6:00", max_volunteers=4, address="Test address", city="Atlanta", state="Georgia", country="USA", venue="Near the south entrance", job=j2, ) s1.save() s2.save() s3.save() # sign up register(v1.id, s1.id) register(v1.id, s2.id) register(v1.id, s3.id) register(v2.id, s1.id) register(v2.id, s2.id) register(v2.id, s3.id) # test typical case result = send_reminder() self.assertEqual(result, 2)