def test_style_words(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) for period in conversation.data['periods']: for status in period['statuses']: self.assertEqual(set(status['style_classes'].split()), {'mock', 'status'})
def test_load_timeline_json_central(self): tests_path = os.path.dirname(__file__) timeline_file_path = os.path.join(tests_path, 'json/timeline_central.json') conversation = classes.Conversation(adapter=ParticipationAdapter) conversation.load(timeline_file_path) data = conversation.data self.assertEqual(len(data['periods']), 5) self.assertEqual(data['periods'][0]['subtitle'], 'Tuesday, February 23, 2010 8PM') self.assertEqual(data['periods'][1]['subtitle'], 'Wednesday, February 24, 2010 5AM') self.assertEqual(data['periods'][2]['subtitle'], 'Wednesday, February 24, 2010 6AM') self.assertEqual(data['periods'][3]['subtitle'], 'Wednesday, February 24, 2010 7AM') self.assertEqual(data['periods'][4]['subtitle'], 'Wednesday, February 24, 2010 8AM') self.assertEqual(data['title'], 'Tick Tock') self.assertEqual(data['nav'], ['1', '2', '3', '4', '5']) self.assertTrue( isinstance(data['participation'], classes.Participation)) participation = data['participation'] self.assertEqual(participation.participants.keys(), {'test_author'}, msg=participation.participants) participant = participation.participants['test_author'] self.assertEqual(participant.exchange_count, 5)
def test_add_origin_tweet(self): tests_path = os.path.dirname(__file__) timeline_file_path = os.path.join(tests_path, 'json/timeline.json') conversation = classes.Conversation(adapter=ParticipationAdapter) conversation.load(timeline_file_path) data = adapters.transform_with_participation_and_styles( conversation, [], '\d', 0) self.assertEqual(data['nav'], ['1', '2', '3', '4', '5'])
def test_timezone_parsing(self): timeline_json = { 'start': "2001-02-03T20:44:32.316656+00:00", 'cutoff': "2001-02-03T15:44:32.316656+00:00", } conversation = classes.Conversation(timeline_json) start, cutoff = conversation._get_timeline_interval() self.assertTrue(start.tzinfo) self.assertTrue(cutoff.tzinfo)
def test_transform(self): tests_path = os.path.dirname(__file__) timeline_file_path = os.path.join(tests_path, 'json/timeline.json') conversation = classes.Conversation(adapter=TopicHeaderAdapter) conversation.load(timeline_file_path) data = adapters.transform_with_topic_headers(conversation, '\d', return_goup=0) self.assertEqual(data['topic_headers'], ['1', '2', '3', '4', '5'])
def test_hour_parsing(self): timeline_json = { 'start': "2001-02-03T20:44:32.316656+00:00", 'cutoff': "2001-02-03T15:44:32.316656+00:00", } conversation = classes.Conversation(timeline_json) start, cutoff = conversation._get_timeline_interval() self.assertEqual(start.hour, 20) self.assertEqual(cutoff.hour, 15)
def test_period_sort_latest(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=TextAdapter) periods = conversation.data['periods'] last = self.latest_datetime clean_latest = last.replace(minute=0, second=0) unix_epoch = datetime(1970, 1, 1, tzinfo=last.tzinfo) seconds = (clean_latest - unix_epoch).total_seconds() key = int(seconds) self.assertEqual(key, periods[6]['id'], msg=periods)
def test_period_format(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) periods = conversation.data['periods'] for period in periods: self.assertTrue('subtitle' in period) self.assertTrue('statuses' in period) self.assertTrue('empty' in period) self.assertTrue('id' in period) self.assertTrue('empty_message' in period)
def test_central_time_parsing(self): timeline_json = { 'start': "2001-02-03T20:44:32.316656-06:00", 'cutoff': "2001-02-03T15:44:32.316656-06:00", } conversation = classes.Conversation(timeline_json) start, cutoff = conversation._get_timeline_interval() start = start.astimezone(timezone.utc) cutoff = cutoff.astimezone(timezone.utc) self.assertEqual(start.hour, 2) self.assertEqual(cutoff.hour, 21)
def test_title_periods_subtitles(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) periods = conversation.data['periods'] for period in periods: subtitle = period['subtitle'] self.assertTrue(isinstance(subtitle, str)) regex_pattern = re.compile( r'(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday)') result = regex_pattern.match(subtitle) self.assertTrue(result)
def test_period_status_format(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) periods = conversation.data['periods'] for period in periods: statuses = period['statuses'] for status in statuses: self.assertTrue('origin' in status) self.assertTrue('text' in status) self.assertTrue('style_classes' in status) self.assertTrue('created_at' in status) self.assertTrue('author' in status) self.assertTrue('in_reply_to_status_id' in status)
def test_title_after_initial_update(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) self.assertEqual(conversation.data['title'], 'Tick Tock')
def test_empty_timeline_interval(self): conversation = classes.Conversation() start, cutoff = conversation._get_timeline_interval() self.assertEqual(start, None) self.assertEqual(cutoff, None)
def test_title_periods_initial_update(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) self.assertTrue(isinstance(conversation.data['periods'], list)) periods = conversation.data['periods'] self.assertTrue(len(periods), 6)
def test_nav_sort(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) self.assertEqual(conversation.data['nav'], ['1', '2', '3', '4', '5', '6', '7'])
def test_adapter(self): conversation = classes.Conversation(timeline=self.test_timeline, adapter=ParticipationAdapter) self.assertEqual(len(list(conversation.data['nav'])), 7, msg=conversation.data)
def test_custom_title_after_initial_update(self): conversation = classes.Conversation(timeline=self.test_timeline, title='Other Title', adapter=ParticipationAdapter) self.assertEqual(conversation.data['title'], 'Other Title')