## Script (Python) "test_getAccommodationInfo"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: test_getAccommodationInfo.py 3087 2008-02-02 11:04:55Z joachim $
"""
"""
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass

mtool = context.portal_membership
member = mtool.getAuthenticatedMember()
if str(member) not in ('admin','joachim'):
    return


import logging
import DateTime
logger = logging.getLogger('Skins.test_getAccommodationInfo')
from Products.AdvancedQuery import Eq, Between, Le,In
aq_students = context.students_catalog.evalAdvancedQuery
aq_portal = context.portal_catalog_real.evalAdvancedQuery
students_folder = context.portal_url.getPortalObject().campus.students

request = context.REQUEST
session = request.SESSION
response = request.RESPONSE
setheader = request.RESPONSE.setHeader
testcases = {}
testcases['K817845'] = {'booking_allowed': False, 
                        'student_status': 'female_re',}
testcases['E561916'] = {'booking_allowed': False, 
                        'student_status': 'female_fi',}
ok_count = 0
failed_count = 0
logger.info("start test for %d students" % (len(testcases)))
for student_id,expected in testcases.items():
    logger.info("testing %s" % student_id)
    info = context.getAccommodationInfo(student_id)
    failed = False
    for k in expected.keys():
        if info[k] != expected[k]:
            failed = True
            break
    if failed:
        failed_count += 1
        got = {}
        for k in expected.keys():
            got[k] = info[k]
        logger.info("failed for %s expected %s got %s" % (student_id,
                                                        expected,
                                                        got
                                                       ))
    else:
        logger.info("test %s OK" % student_id)
        ok_count += 1

logger.info("finished %d tests %d ok %d failed" % (len(testcases),ok_count,failed_count))
