From d8fc2a63f7822a8cb37f9a5c9250676dd69c28f6 Mon Sep 17 00:00:00 2001 From: frankknoll Date: Sun, 11 Jun 2023 02:00:34 +0200 Subject: [PATCH] adding GoogleAnalyticsReaderTest --- src/GoogleAnalyticsReader.py | 32 +++++++++++++++++++ src/GoogleAnalyticsReaderTest.py | 15 +++++++++ ...By Clicked Batchcode 20230302-20230430.csv | 6 ++++ ...By Clicked Batchcode 20230501-20230531.csv | 5 +++ 4 files changed, 58 insertions(+) create mode 100644 src/GoogleAnalyticsReader.py create mode 100644 src/GoogleAnalyticsReaderTest.py create mode 100644 src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230302-20230430.csv create mode 100644 src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230501-20230531.csv diff --git a/src/GoogleAnalyticsReader.py b/src/GoogleAnalyticsReader.py new file mode 100644 index 00000000000..7a04b99ea59 --- /dev/null +++ b/src/GoogleAnalyticsReader.py @@ -0,0 +1,32 @@ +import linecache +import glob +from datetime import datetime + + +class GoogleAnalyticsReader: + + def __init__(self, dataDir): + self.dataDir = dataDir + + def getDateRange(self): + return self._getMinMaxDateRange(self._getDateRanges()) + + def _getDateRanges(self): + return [self._getDateRange(file) for file in self._getFiles()] + + def _getFiles(self): + return glob.glob(self.dataDir + '/*') + + def _getDateRange(self, file): + dateRangeLine = linecache.getline(file, 4) + startDate, endDate = dateRangeLine[2:10], dateRangeLine[11:19] + return self._str2Date(startDate), self._str2Date(endDate) + + def _str2Date(self, str): + return datetime.strptime(str, '%Y%m%d').date() + + def _getMinMaxDateRange(self, dateRanges): + minDateRange = min([dateRange[0] for dateRange in dateRanges]) + maxDateRange = max([dateRange[1] for dateRange in dateRanges]) + return minDateRange, maxDateRange + diff --git a/src/GoogleAnalyticsReaderTest.py b/src/GoogleAnalyticsReaderTest.py new file mode 100644 index 00000000000..afd28f534be --- /dev/null +++ b/src/GoogleAnalyticsReaderTest.py @@ -0,0 +1,15 @@ +import unittest +from datetime import date +from GoogleAnalyticsReader import GoogleAnalyticsReader + +class GoogleAnalyticsReaderTest(unittest.TestCase): + + def test_getDateRange(self): + # Given + googleAnalyticsReader = GoogleAnalyticsReader(dataDir = 'src/testdata/GoogleAnalytics') + + # When + dateRange = googleAnalyticsReader.getDateRange() + + # Then + self.assertEqual(dateRange, (date(2023, 3, 2), date(2023, 5, 31))) diff --git a/src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230302-20230430.csv b/src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230302-20230430.csv new file mode 100644 index 00000000000..03f690d17ee --- /dev/null +++ b/src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230302-20230430.csv @@ -0,0 +1,6 @@ +# ---------------------------------------- +# HowBadIsMyBatch +# Batchcode By Country-Country By Clicked Batchcode +# 20230302-20230430 +# ---------------------------------------- + diff --git a/src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230501-20230531.csv b/src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230501-20230531.csv new file mode 100644 index 00000000000..537e937d3e2 --- /dev/null +++ b/src/testdata/GoogleAnalytics/Country By Clicked Batchcode 20230501-20230531.csv @@ -0,0 +1,5 @@ +# ---------------------------------------- +# HowBadIsMyBatch +# Batchcode By Country-Country By Clicked Batchcode +# 20230501-20230531 +# ----------------------------------------