class TestPythonXL(unittest.TestCase):

	def setUp(self):
		self.q = Query()

	def test_all_transaction_returns_trans_by_account(self):
		assert self.q.all_transactions('53')

	def test_to_data_frame(self):
		assert self.q.all_transactions('53').to_dataframe().__class__ == pandas.core.frame.DataFrame

	def test_get_this_months_transactions(self):
		assert self.q.get_transactions_by_range('53',6,6)	

	def test_get_range_of_transactions(self):
		assert self.q.get_transactions_by_range('53',3,4)

	def test_take_transactions_to_dataframe(self):
		assert self.q.get_transactions_by_range('53',3,4).to_dataframe()

	def test_take_transactions_to_dataframe(self):
		assert self.q.get_transactions_by_range('united',4,4).to_dataframe().__class__ == pandas.core.frame.DataFrame

	def test_get_all_transactions_to_dataframe(self):
		assert self.q.all_transactions('united').to_dataframe().__class__ == pandas.core.frame.DataFrame

	def test_get_all_transactions_to_today(self):
		assert self.q.get_transactions_by_range('53',4).to_dataframe().__class__ == pandas.core.frame.DataFrame
class TestPythonXL(unittest.TestCase):

	def setUp(self):
		self.q = Query()
		
	def test_all_transaction_value_counts(self):
		queryset = self.q.all_transactions('53')
		qs = Calculations(queryset)
		assert qs.value_counts().__class__ == pandas.core.series.Series

	def test_just_junes_value_counts(self):
		june_transactions = self.q.get_transactions_by_range('53',6,6)
		qs = Calculations(june_transactions)
		assert qs.value_counts().__class__ == pandas.core.series.Series

	def test_sum(self):
		june_transactions = self.q.get_transactions_by_range('53',6,6)
		qs = Calculations(june_transactions)
		assert qs.sum()

	def test_summary(self):
		june_transactions = self.q.get_transactions_by_range('53',3,6)
		qs = Calculations(june_transactions)
		assert qs.summary().__class__ == pandas.core.frame.DataFrame

	def test_date_range(self):
		june_transactions = self.q.get_transactions_by_range('53',3,6)
		qs = Calculations(june_transactions)
		assert qs.date_range().__class__ == list

	def test_grouped_by_occurance(self):
		workbook = xlsxwriter.Workbook('/Users/mzakany/Desktop/demo.xlsx')
		worksheet = workbook.add_worksheet()
		trans = self.q.get_transactions_by_range('53',3,6)
		qs = Calculations(trans)
		row_count = 2
		itemset = qs.grouped_by_occurance().to_dict().iteritems()
		# for x,y in itemset:
		# 	print x
		# 	for x in y['grouped_transaction']:
		# 		print x

		for x,y in itemset:
			worksheet.write("A%s" % str(row_count),x) 
			row_count += 2
			for row in y['grouped_transaction']:
				worksheet.write("B%s" % str(row_count),row[0]) 
				worksheet.write("C%s" % str(row_count),row[1]) 
				worksheet.write("D%s" % str(row_count),row[2]) 
				row_count += 1
			worksheet.write("E%s" % str(row_count),y['sum']) 
			row_count += 1