#!/bin/env/python # python imports import unittest, os import simplejson # locat imports import request_handler from query import Query from response import Response from asker import * # tam imports from db.graph import * class RequestHandlerTestCase(unittest.TestCase): """ """ def setUp(self): pass def tearDown(self): pass def __assert_equivalent_responses(self, expected, actual): """ @type expected: L{Response} @type actual: L{Response} """ assert expected.weak_eq(actual), \ '\n\nexpected:\n%s\nactual:\n%s\n' % (str(expected), str(actual)) def testProductIdAbsent(self): """ """ query = Query() query.product_id = '2222222222' expected = Response(query.request_id) actual = request_handler.handle_request(query) self.__assert_equivalent_responses(expected, actual) def testProductIdPresent(self): """ """ query = Query() query.product_id = '18675309' expected = Response(query.request_id) expected.found_node_in_tam = True node = Node() node.label = 'Bear Bar 3' expected.node = node actual = request_handler.handle_request(query) self.__assert_equivalent_responses(expected, actual) def testUPCdbIdPresent(self): """ """ query = Query() query.product_id = '0003400018040' expected = Response(query.request_id) expected.found_product_in_upcdb = True expected.upcdb_dict = {'description': 'HERSHEY LISS ALMND/HEART', 'ean': '0003400018040', 'lastModified': '1999-10-11 10:06:10', 'upc': '003400018040', 'isCoupon': False, 'pendingUpdates': 0, 'found': True, 'message': 'Database entry found', 'size': '8 oz', 'issuerCountry': 'United States', 'issuerCountryCode': 'us'} actual = request_handler.handle_request(query) self.__assert_equivalent_responses(expected, actual) class ParserTestCase(unittest.TestCase): """ """ def setUp(self): pass def tearDown(self): pass def testEmailParser(self): """ Iterates through text files in './test_data'. Each of the text files should contain the valid JSON structure of the following information: { 'expected_asker': { 'query': { 'product_id': }, 'sender': , 'domain': , 'recipient': , 'recipient_domain': }, 'email': [] } The email is sent to Asker.parse_email, which returns the actual Asker. """ for filename in os.listdir("./test_data"): print "running test data in ./test_data/%s... " % (filename) d = simplejson.load(open('./test_data/'+filename)) query = Query() query.product_id = d[0]['expected_asker']['query']['product_id'] expected = EmailAsker() expected.query = query expected.sender = d[0]['expected_asker']['sender'] expected.domain = d[0]['expected_asker']['domain'] expected.recipient = d[0]['expected_asker']['recipient'] expected.recipient_domain = d[0]['expected_asker']['recipient_domain'] actual = parse_email(d[0]['email']) assert expected == actual, \ '\n\nexpected:\n%s\nactual:\n%s\n' % (str(expected), str(actual)) print "ok" if __name__ == '__main__': unittest.main()