Hi,

Thank you very much for the guide. I created unit test methods for
PatientSearchCriteria class according to the @should requirement. But
however i have met an issue  as i don't have much knowledge about from
where to retrieve data for the test.

As an example this is the test method i wrote for
prepareCriteria_shouldSearchOnVoidedPatients() method.


*/**
  * @see {@link
org.openmrs.api.db.hibernate.PatientSearchCriteria#prepareCriteria(String,
String, java.util.List, boolean, boolean)}
*/
        @Test
        @Verifies(value = "should search on voided patients", method =
"prepareCriteria(String, String, List<PatientIdentifierType;>,boolean,
boolean)")
        public void prepareCriteria_shouldSearchOnVoidedPatients() {

            SessionFactory sessionFactory = (SessionFactory)
applicationContext.getBean("sessionFactory");
            Session sess = sessionFactory.getCurrentSession();
            Criteria criteria = sess.createCriteria(Patient.class);

            String name = "Alice";
            String identifier = "id";
            List<PatientIdentifierType> identifiertypes = new
ArrayList<PatientIdentifierType>();


            PatientSearchCriteria patientSearchCriteria = new
PatientSearchCriteria(sessionFactory,
                    criteria); // create a patientSearchCriteria object
            org.hibernate.Criteria receivedCriteria =
patientSearchCriteria.prepareCriteria(name, identifier, identifiertypes,
true,
                    true);

            List list = receivedCriteria.list();

            Iterator itr = list.iterator();
            if (list.size() == 0) {
                System.out.println("No Result Found !");
            }
            while (itr.hasNext()) {
                Object object = (Object) itr.next();
                Patient patient = (Patient) object;
                if (patient.getIdentifiers() != null) {
                    for (PatientIdentifier pi : patient.getIdentifiers()) {
                        Assert.assertEquals(false, pi.isVoided());
                    }
                } else {}
            }

        }*

When i run the test it always return that *"No Result Found !"  *as the
list of returned patients records is emply.  I have created a criteria for
the Patient class however i don't know where it does refer to query Patient
entries. Can you pls help me on how should i obtain patient data for the
test?

Thank you!

On Wed, Mar 21, 2012 at 6:40 PM, Ben Wolfe <[email protected]> wrote:

> Yes, create the class if it doesn't exist.
>
> Both writing the @should and the associated test method are preferred! :-)
>
> Ben
>
> On Wed, Mar 21, 2012 at 1:24 AM, ishara premadasa 
> <[email protected]>wrote:
>
>> Hi devs,
>>
>> I am working on the introductory ticket 
>> TRUNK-248<https://tickets.openmrs.org/browse/TRUNK-248>which needs adding 
>> @should notations according to code comments. I was
>> trying this with few classes, there are some things i need to clarify.
>>
>> As an example i came across this
>> org.openmrs.api.db.hibernate.PatientSearchCriteria class which has
>> following method.
>>
>>      /**
>>      * Utility method to add identifier expression to an existing criteria
>>      *
>>      * @param criteria
>>      * @param identifier
>>      * @param identifierTypes
>>      * @param matchIdentifierExactly
>>      */
>>     private void addIdentifierCriterias(Criteria criteria, String
>> identifier, List<PatientIdentifierType>
>>     identifierTypes,
>>             boolean matchIdentifierExactly) {
>>             *// TODO add junit test for searching on voided identifiers*
>>
>> According to the 
>> guide<https://wiki.openmrs.org/display/docs/Unit+Testing+With+at-should+Annotation>provided
>>  in the ticket, this should be annotated as,
>>
>>      /**
>>      * Utility method to add identifier expression to an existing criteria
>>      *
>>      * @param criteria
>>      * @param identifier
>>      * @param identifierTypes
>>      * @param matchIdentifierExactly
>>      * *@should fail given null identifier*
>>      */
>>
>> In addition to that it says there must be a method in the test class
>> named *addIdentifierCriterias_shouldFailGivenNullIdentifier()*  which
>> address this check. However there is no PatientSearchCriteriaTest class in
>> the project. Do i need to create test classes and methods along with the
>> fix for the error ? or is it only needed to change the code comment and add
>> the annotation without considering modifying the test class method?
>>
>> Thank you very much!
>> Ishara
>>
>> --
>> *Best Regards.*
>>
>> *Ishara Premadasa,*
>> Final Year Undergraduate,
>> Dept. of Computer Science & Engineering,
>> University of Moratuwa
>> Sri Lanka.
>> http://isharapremadasa.blogspot.com
>>
>>
>>
>>  ------------------------------
>> Click here to 
>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>> OpenMRS Developers' mailing list
>>
>
> ------------------------------
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list
>



-- 
*Best Regards.*

*Ishara Premadasa,*
Final Year Undergraduate,
Dept. of Computer Science & Engineering,
University of Moratuwa
Sri Lanka.
http://isharapremadasa.blogspot.com

_________________________________________

To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to 
[email protected] with "SIGNOFF openmrs-devel-l" in the  body (not 
the subject) of your e-mail.

[mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]

Reply via email to