示例#1
0
 def test_base_form_catches_is_literate_and_witness(self):
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime,
         dob=self.dob,
         is_literate=NO,
         witness_name="",
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     form = SubjectConsentForm(subject_consent.__dict__)
     self.assertFalse(form.is_valid())
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime,
         dob=self.dob,
         is_literate=NO,
         witness_name="BOND, JAMES",
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     form = SubjectConsentForm(subject_consent.__dict__)
     self.assertTrue(form.is_valid())
示例#2
0
 def test_base_form_catches_gender_of_consent(self):
     site_consents.registry = {}
     self.consent_factory(
         start=self.study_open_datetime,
         end=self.study_open_datetime + timedelta(days=50),
         version="1.0",
         gender=[MALE],
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime,
         dob=self.dob,
         gender=MALE,
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     form = SubjectConsentForm(subject_consent.__dict__)
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     self.assertTrue(form.is_valid())
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime,
         dob=self.dob,
         gender=FEMALE,
     )
     form = SubjectConsentForm(subject_consent.__dict__)
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     self.assertFalse(form.is_valid())
def test_create_many(api_client, superuser):
    payload = [
        CAMBRIDGE_LEADER_PAYLOAD,
        SOMERVILLE_PROSPECT_PAYLOAD,
        CALIFORNIA_PROSPECT_PAYLOAD,
    ]
    resp = api_client.post("/v1/people/", payload, **id_auth(superuser))

    golden_cambridge_leader = FullPersonSerializer(
        baker.prepare_recipe("supportal.tests.cambridge_leader")).data
    golden_somerville_prospect = FullPersonSerializer(
        baker.prepare_recipe("supportal.tests.somerville_prospect")).data
    golden_california_prospect = FullPersonSerializer(
        baker.prepare_recipe("supportal.tests.california_prospect")).data

    assert_person_payloads_same(
        FullPersonSerializer(
            Person.objects.get(ngp_id=golden_cambridge_leader["ngp_id"])).data,
        golden_cambridge_leader,
    )
    assert_person_payloads_same(
        FullPersonSerializer(
            Person.objects.get(
                ngp_id=golden_somerville_prospect["ngp_id"])).data,
        golden_somerville_prospect,
    )
    assert_person_payloads_same(
        FullPersonSerializer(
            Person.objects.get(
                ngp_id=golden_california_prospect["ngp_id"])).data,
        golden_california_prospect,
    )
示例#4
0
 def test_deadline_is_near(self, now):
     obj = baker.prepare_recipe("hipeac.job", deadline=now.add(days=6).date)
     assert obj.deadline_is_near() is True
     obj = baker.prepare_recipe("hipeac.job", deadline=now.add(days=7).date)
     assert obj.deadline_is_near() is False
     obj = baker.prepare_recipe("hipeac.job", deadline=now.add(days=8).date)
     assert obj.deadline_is_near() is False
示例#5
0
    def test_save_related_instances_on_prepare_recipe(self):
        dog = baker.prepare_recipe("tests.generic.homeless_dog")
        assert not dog.id
        assert not dog.owner_id

        dog = baker.prepare_recipe("tests.generic.homeless_dog", _save_related=True)
        assert not dog.id
        assert dog.owner.id
 def test_do_not_create_related_model(self):
     """It should not create another object when passing the object as argument."""
     person = baker.make_recipe("tests.generic.person")
     assert Person.objects.count() == 1
     baker.make_recipe("tests.generic.dog", owner=person)
     assert Person.objects.count() == 1
     baker.prepare_recipe("tests.generic.dog", owner=person)
     assert Person.objects.count() == 1
 def test_do_not_create_related_model(self):
     """
       It should not attempt to create other object when
       passing the object as argument
     """
     person = baker.make_recipe('tests.generic.person')
     assert Person.objects.count() == 1
     baker.make_recipe('tests.generic.dog', owner=person)
     assert Person.objects.count() == 1
     baker.prepare_recipe('tests.generic.dog', owner=person)
     assert Person.objects.count() == 1
 def test_increment_for_strings(self):
     person = baker.make_recipe('tests.generic.serial_person')
     assert person.name == 'joe1'
     person = baker.prepare_recipe('tests.generic.serial_person')
     assert person.name == 'joe2'
     person = baker.make_recipe('tests.generic.serial_person')
     assert person.name == 'joe3'
 def test_increment_after_override_definition_field(self):
     person = baker.make_recipe('tests.generic.serial_person', name='tom')
     assert person.name == 'tom'
     person = baker.make_recipe('tests.generic.serial_person')
     assert person.name == 'joe4'
     person = baker.prepare_recipe('tests.generic.serial_person')
     assert person.name == 'joe5'
示例#10
0
 def test_increment_for_strings(self):
     person = baker.make_recipe("tests.generic.serial_person")
     assert person.name == "joe1"
     person = baker.prepare_recipe("tests.generic.serial_person")
     assert person.name == "joe2"
     person = baker.make_recipe("tests.generic.serial_person")
     assert person.name == "joe3"
示例#11
0
 def test_do_query_lookup_for_recipes_prepare_method(self):
     """
       It should not attempt to create other object when
       using query lookup syntax
     """
     dog = baker.prepare_recipe("tests.generic.dog", owner__name="James")
     assert dog.owner.name == "James"
示例#12
0
 def fill_subject_consent(self, model_obj, save_only=None):
     """Add a subject consent for the newly screening subject.
     """
     model_obj = baker.prepare_recipe(
         self.subject_consent_model,
         **{
             "screening_identifier": model_obj.screening_identifier,
             "dob": model_obj.estimated_dob,
             "gender": model_obj.gender,
         },
     )
     model_obj.initials = f"{model_obj.first_name[0]}{model_obj.last_name[0]}"
     if save_only:
         model_obj.save()
     else:
         model_obj = self.fill_form(
             model=self.subject_consent_model,
             obj=model_obj,
             exclude=[
                 "subject_identifier",
                 "citizen",
                 "legal_marriage",
                 "marriage_certificate",
                 "subject_type",
                 "gender",
                 "study_site",
             ],
             verbose=False,
         )
         self.wait_for_edc()
     return model_obj
示例#13
0
    def test_date_outside_event_dates(self, now):
        event = baker.prepare_recipe("hipeac.event",
                                     start_date=now.add(days=90).date,
                                     end_date=now.add(days=95).date)

        obj = baker.prepare_recipe("hipeac.session",
                                   event=event,
                                   date=now.add(days=80).date)
        with pytest.raises(ValidationError):
            obj.full_clean()

        obj = baker.prepare_recipe("hipeac.session",
                                   event=event,
                                   date=now.add(days=100).date)
        with pytest.raises(ValidationError):
            obj.full_clean()
示例#14
0
 def test_increment_after_override_definition_field(self):
     person = baker.make_recipe("tests.generic.serial_person", name="tom")
     assert person.name == "tom"
     person = baker.make_recipe("tests.generic.serial_person")
     assert person.name == "joe4"
     person = baker.prepare_recipe("tests.generic.serial_person")
     assert person.name == "joe5"
示例#15
0
 def test_prepare_recipe_with_quantity_parameter_respection_model_args(self):
     people = baker.prepare_recipe(
         "tests.generic.person", _quantity=3, name="Dennis Ritchie", age=70
     )
     assert len(people) == 3
     for person in people:
         assert person.name == "Dennis Ritchie"
         assert person.age == 70
示例#16
0
 def test_start_date_before_registration_deadline(self, now):
     obj = baker.prepare_recipe(
         "hipeac.event",
         start_date=now.add(days=1).date,
         registration_deadline=now.add(days=10).datetime,
     )
     with pytest.raises(ValidationError):
         obj.full_clean()
示例#17
0
    def test_model_with_foreign_key_as_unicode(self):
        dog = baker.make_recipe("tests.generic.other_dog_unicode")
        assert dog.breed == "Basset"
        assert isinstance(dog.owner, Person)
        assert dog.owner.id

        dog = baker.prepare_recipe("tests.generic.other_dog_unicode")
        assert dog.breed == "Basset"
        assert isinstance(dog.owner, Person)
        assert dog.owner.id is None
示例#18
0
    def test_model_with_foreign_key_as_str(self):
        dog = baker.make_recipe('tests.generic.other_dog')
        assert dog.breed == 'Basset'
        assert isinstance(dog.owner, Person)
        assert dog.owner.id

        dog = baker.prepare_recipe('tests.generic.other_dog')
        assert dog.breed == 'Basset'
        assert isinstance(dog.owner, Person)
        assert dog.owner.id is None
示例#19
0
    def test_save_tags_commit_true_call_save_tags(
            self, _save_tags_mock: mock.MagicMock):
        """Should call _save_tags when commit=True."""
        obj_dict = self.get_tutorial_dict(
            tutorial=baker.prepare_recipe("learning.tutorial"))

        form = TutorialForm(obj_dict)
        form.save(commit=True)

        self.assertTrue(_save_tags_mock.called)
示例#20
0
    def test_save_tags_commit_false_assign_save_tags(
            self, _save_tags_mock: mock.MagicMock):
        """Should assign save_tags to _save_tags when commit=False."""
        obj_dict = self.get_tutorial_dict(
            tutorial=baker.prepare_recipe("learning.tutorial"))

        form = TutorialForm(obj_dict)
        form.save(commit=False)

        self.assertEqual(form.save_tags, form._save_tags)
def test_create_one(api_client, superuser):
    payload = SOMERVILLE_PROSPECT_PAYLOAD
    resp = api_client.post("/v1/people/", payload, **id_auth(superuser))
    assert resp.status_code == status.HTTP_201_CREATED

    golden_person = FullPersonSerializer(
        baker.prepare_recipe("supportal.tests.somerville_prospect")).data

    person = Person.objects.get(ngp_id="")
    assert_person_payloads_same(
        FullPersonSerializer(person).data, golden_person)
示例#22
0
    def test_model_with_foreign_key(self):
        dog = baker.make_recipe("tests.generic.dog")
        assert dog.breed == "Pug"
        assert isinstance(dog.owner, Person)
        assert dog.owner.id

        dog = baker.prepare_recipe("tests.generic.dog")
        assert dog.breed == "Pug"
        assert isinstance(dog.owner, Person)
        assert dog.owner.id is None

        dog = baker.prepare_recipe("tests.generic.dog", _save_related=True)
        assert dog.breed == "Pug"
        assert isinstance(dog.owner, Person)
        assert dog.owner.id

        dogs = baker.make_recipe("tests.generic.dog", _quantity=2)
        owner = dogs[0].owner
        for dog in dogs:
            assert dog.breed == "Pug"
            assert dog.owner == owner
示例#23
0
 def test_base_form_catches_dob_upper(self):
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime,
         dob=self.dob - relativedelta(years=100),
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     consent_form = SubjectConsentForm(subject_consent.__dict__)
     self.assertFalse(consent_form.is_valid())
示例#24
0
 def test_base_form_is_valid(self):
     """Asserts baker defaults validate."""
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         dob=self.dob,
         consent_datetime=self.study_open_datetime,
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     consent_form = SubjectConsentForm(data=subject_consent.__dict__)
     self.assertTrue(consent_form.is_valid())
示例#25
0
 def test_increment_by_3(self):
     dummy = baker.make_recipe("tests.generic.serial_numbers_by")
     assert dummy.default_int_field == 13
     assert dummy.default_decimal_field == Decimal("22.5")
     assert dummy.default_float_field == pytest.approx(3.030000)
     dummy = baker.make_recipe("tests.generic.serial_numbers_by")
     assert dummy.default_int_field == 16
     assert dummy.default_decimal_field == Decimal("24.9")
     assert dummy.default_float_field == pytest.approx(4.83)
     dummy = baker.prepare_recipe("tests.generic.serial_numbers_by")
     assert dummy.default_int_field == 19
     assert dummy.default_decimal_field == Decimal("27.3")
     assert dummy.default_float_field == pytest.approx(6.63)
示例#26
0
 def test_increment_for_numbers(self):
     dummy = baker.make_recipe("tests.generic.serial_numbers")
     assert dummy.default_int_field == 11
     assert dummy.default_decimal_field == Decimal("21.1")
     assert dummy.default_float_field == 2.23
     dummy = baker.make_recipe("tests.generic.serial_numbers")
     assert dummy.default_int_field == 12
     assert dummy.default_decimal_field == Decimal("22.1")
     assert dummy.default_float_field == 3.23
     dummy = baker.prepare_recipe("tests.generic.serial_numbers")
     assert dummy.default_int_field == 13
     assert dummy.default_decimal_field == Decimal("23.1")
     assert dummy.default_float_field == 4.23
示例#27
0
 def test_base_form_identity_mismatch(self):
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime,
         dob=self.dob,
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     subject_consent.confirm_identity = "1"
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     consent_form = SubjectConsentForm(data=subject_consent.__dict__)
     self.assertFalse(consent_form.is_valid())
示例#28
0
 def test_base_form_catches_consent_datetime_before_study_open(self):
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime + relativedelta(days=1),
         dob=self.dob,
         first_name="ERIK",
         last_name="THEPLEEB",
     )
     subject_consent.initials = subject_consent.first_name[
         0] + subject_consent.last_name[0]
     consent_form = SubjectConsentForm(data=subject_consent.__dict__)
     self.assertTrue(consent_form.is_valid())
     self.assertIsNone(consent_form.errors.get("consent_datetime"))
     subject_consent = baker.prepare_recipe(
         "edc_consent.subjectconsent",
         consent_datetime=self.study_open_datetime - relativedelta(days=1),
         dob=self.dob,
     )
     data = subject_consent.__dict__
     data["initials"] = data["first_name"][0] + data["last_name"][0]
     consent_form = SubjectConsentForm(data=data)
     self.assertFalse(consent_form.is_valid())
示例#29
0
 def fill_subject_screening(self, save_only=None):
     """Add a subject screening form.
     """
     model_obj = baker.prepare_recipe(self.subject_screening_model)
     if save_only:
         model_obj.save()
     else:
         model_obj = self.fill_form(
             model=self.subject_screening_model,
             obj=model_obj,
             exclude=["subject_identifier", "report_datetime"],
         )
         self.wait_for_edc()
     return model_obj
 def test_increment_for_numbers_2(self):
     """Repeated test to ensure Sequences atomicity."""
     dummy = baker.make_recipe("tests.generic.serial_numbers")
     assert dummy.default_int_field == 11
     assert dummy.default_decimal_field == Decimal("21.1")
     assert dummy.default_float_field == 2.23
     dummy = baker.make_recipe("tests.generic.serial_numbers")
     assert dummy.default_int_field == 12
     assert dummy.default_decimal_field == Decimal("22.1")
     assert dummy.default_float_field == 3.23
     dummy = baker.prepare_recipe("tests.generic.serial_numbers")
     assert dummy.default_int_field == 13
     assert dummy.default_decimal_field == Decimal("23.1")
     assert dummy.default_float_field == 4.23