def testSix(): print('========Test Six========') print('Find transaction/s from Woolies and < 500') f1 = buildFilter(Transaction.merchant, Merchant.name, "==", 'Woolies') f2 = buildFilter(None, Transaction.amount, "<", 500) results = queryObjects(Transaction, [f1, f2]) results2 = Transaction.query\ .join(Merchant)\ .filter(Transaction.amount < 500)\ .filter(Merchant.name == 'Woolies')\ .all() unitTest('Test 6a ', [t1, t5], results) unitTest('Test 6b ', [t1, t5], results2)
def testFive(): print('========Test Five========') print('Find transaction/s with card 1234 card & in Cape Town') f1 = buildFilter(Transaction.card, Card.display, "==", '1234') f2 = buildFilter(Transaction.merchant, Merchant.city, "==", 'Cape Town') results = queryObjects(Transaction, [f1, f2]) results2 = Transaction.query\ .join(Card)\ .join(Merchant)\ .filter(Card.display == '1234')\ .filter(Merchant.city == 'Cape Town')\ .all() unitTest('Test 5a ', [t1, t2, t4, t6], results) unitTest('Test 5b ', [t1, t2, t4, t6], results2)
def testone(): print('========Test One========') print('eg. Find transaction/s made with card 1234') # f1 = filterBuilder(Transaction.card.display, "==", '1234') # print(type(Transaction.card.display)) # results = queryObjects(Transaction, [f1]) # results = Transaction.query.filter(Transaction.card.has(display="1234"))\ # .all() # If we're querying 1 level deep -> (object.param operator operand) # eg. Transaction.query,filter(XXX).all() # XXX = Transaction.amount == 100 => # If we're querying another level deeper -> (object.object # .has(param operator operand)) # Transaction.query.filter(XXX).all() # XXX = Transaction.card.has(YYY) # YYY = name='woolies' => Transaction.merchant.has(name = 'Woolies') # YYY = Merchant.name == 'woolies' => Transaction.merchant # .has(Merchant.name == 'Woolies') f1 = buildFilter(Transaction.card, Card.display, "==", '1234') results = queryObjects(Transaction, [f1]) # Transaction.query.filter(Transaction.card.has(Card.display == '1234'))\ # .all() # results = Transaction.query.filter(Transaction.merchant # .has(Merchant.name == 'Woolies')).all() results2 = Transaction.query\ .join(Card)\ .filter(Card.display == '1234')\ .all() unitTest('Test 1a ', [t1, t2, t4, t6], results) unitTest('Test 1b ', [t1, t2, t4, t6], results2)
def testfour(): print('========Test Four========') print('Find transaction/s larger than 500') f1 = buildFilter(None, Transaction.amount, ">", 500) results = queryObjects(Transaction, [f1]) results2 = Transaction.query\ .filter(Transaction.amount > 500)\ .all() unitTest('Test 4a ', [t3, t4, t6], results) unitTest('Test 4b ', [t3, t4, t6], results2)
def testthree(): print('========Test Three========') print('Find transaction/s in Joburg') f1 = buildFilter(Transaction.merchant, Merchant.city, "==", 'Joburg') results = queryObjects(Transaction, [f1]) results2 = Transaction.query\ .join(Merchant)\ .filter(Merchant.city == 'Joburg')\ .all() unitTest('Test 3a ', [t3], results) unitTest('Test 3b ', [t3], results2)
def testtwo(): print('========Test Two========') print('Find transaction/s from Woolies') f1 = buildFilter(Transaction.merchant, Merchant.name, "==", 'Woolies') results = queryObjects(Transaction, [f1]) results2 = Transaction.query\ .join(Merchant)\ .filter(Merchant.name == 'Woolies')\ .all() unitTest('Test 2a ', [t1, t4, t5, t6], results) unitTest('Test 2b ', [t1, t4, t5, t6], results2)
def testSeven(): print('========Test Seven========') print('Find cards used with transaction amount large than 3000') f1 = buildFilter(Card.transactions, Transaction.amount, ">", 3000) results = queryObjects(Card, [f1]) results2 = Card.query\ .join(Transaction)\ .join(Merchant)\ .filter(Transaction.amount > 3000)\ .all() unitTest('Test 7a', [c1, c2], results) unitTest('Test 7b', [c1, c2], results2)
def testEight(): print('========Test Eight========') print('Find merchants where transaction spend has been less than 200') f1 = buildFilter(Merchant.transactions, Transaction.amount, "<", 200) results = queryObjects(Merchant, [f1]) results2 = Merchant.query\ .join(Transaction)\ .join(Card)\ .filter(Transaction.amount < 200)\ .all() unitTest('Test 8a', [m1, m2], results) unitTest('Test 8b', [m1, m2], results2) print('========================')