def test_now_time_changes(self): offset = 3 start = dh.get_end_time('')[0] time.sleep(offset) end = dh.get_end_time('')[0] self.assertAboutEqual(start, end - offset, 'now time changes', margin=1)
async def _request_wrap(self, ctx, role, date=''): auth = ctx.message.author chan = ctx.message.channel serv = ctx.message.guild # attempt to find the role if a string was given, # if not found, stop if type(role) != discord.Role: role = dh.get_role(serv, role) if not role: await ctx.send(error("could not find role, ask a mod to create it") ) return # get list of public roles available_roles = self.conf.get(guild_id, {}).get('pub_roles', []) role_id = str(role.id) guild_id = str(serv.id) if role_id in available_roles: # if role is a public role, await auth.add_roles(role) # give it await ctx.send(ok('you now have that role')) else: # otherwise don't await ctx.send( error('I\'m afraid that I can\'t give you that role')) return if date: # if a timeout was specified end_time = dh.get_end_time(date)[0] role_end = RoleRemove(end_time, role_id, str(auth.id), str(chan.id), guild_id) await self.bot.get_cog('HeapCog').push(role_end, self.bot)
def test_offset_monthB(self): result = dh.get_end_time('in 7 months message') date_time = arrow.now().shift(months=7) ts = date_time.timestamp message = "offset +7 months (in)" self.assertAboutEqual(result[0], ts, message + ' - timestamp') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], ['7 months'], message + ' - match')
def test_offset_w(self): result = dh.get_end_time('me 1 week message') date_time = arrow.now().shift(days=7) ts = date_time.timestamp message = "offset +1 week" self.assertAboutEqual(result[0], ts, message + ' - timestamp') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], ['1 week'], message + ' - match')
def test_offset_h(self): result = dh.get_end_time('me in 5 h message') date_time = arrow.now().shift(hours=5) ts = date_time.timestamp message = "offset +5h" self.assertAboutEqual(result[0], ts, message + ' - timestamp') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], ['5 h'], message + ' - match')
def test_time_hm(self): result = dh.get_end_time('at 7:11 message') message = "time hour:min" dt = arrow.get(result[0]).to(arrow.now().tzinfo) self.assertEqual(dt.hour, 7, message + ' - hour') self.assertEqual(dt.minute, 11, message + ' - minute') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], ['7:11'], message + ' - match')
def test_dateA(self): result = dh.get_end_time('me at 2017-10-23 message') date_time = arrow.now().replace( year=2017, month=10, day=23, ) ts = date_time.timestamp message = "date (2017-10-23)" self.assertAboutEqual(result[0], ts, message + ' - timestamp') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], ['2017-10-23'], message + ' - match')
def test_weekday_hour_after_dow_hm(self): start = arrow.get('2018-05-04 9:00', 'YYYY-M-D H:mm') start = start.replace(tzinfo=arrow.now().tzinfo) result = dh.get_end_time('on friday 8:00 message', start) message = "dow hour:min - hour after" dt = arrow.get(result[0]).to(arrow.now().tzinfo) self.assertEqual(dt.weekday(), 4, message + ' - weekday') self.assertEqual(dt.day, 11, message + ' - day of month') self.assertEqual(dt.hour, 8, message + ' - hour') self.assertEqual(dt.minute, 0, message + ' - minute') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], ['friday', '8:00'], message + ' - match')
def test_weekday_sec_after_dow_hm_with_param(self): start = arrow.get('2018-05-04 8:00:01', 'YYYY-M-D H:mm:ss') start = start.replace(tzinfo=arrow.now().tzinfo) result = dh.get_end_time('me on friday at 8:00:00 -r read:', start) message = "dow hour:min - sec after with param" dt = arrow.get(result[0]).to(arrow.now().tzinfo) self.assertEqual(dt.weekday(), 4, message + ' - weekday') self.assertEqual(dt.day, 11, message + ' - day of month') self.assertEqual(dt.hour, 8, message + ' - hour') self.assertEqual(dt.minute, 0, message + ' - minute') self.assertEqual(result[1], '-r read:', message + ' - message') self.assertItemsEqual(result[2], ['friday', '8:00:00'], message + ' - match')
def test_timestampA(self): result = dh.get_end_time('me at 2017-10-23T05:11:56 message') date_time = arrow.now().replace( year=2017, month=10, day=23, hour=5, minute=11, second=56, ) ts = date_time.timestamp match = ['2017-10-23', 'T05:11:56'] message = "timestamp (2017-10-23T05:11:56)" self.assertAboutEqual(result[0], ts, message + ' - timestamp') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], match, message + ' - match')
def test_timestampC(self): result = dh.get_end_time('at 10/23/2017 5:11 PM message') date_time = arrow.now().replace( year=2017, month=10, day=23, hour=17, minute=11, second=0, ) ts = date_time.timestamp match = ['10/23/2017', '5:11 PM'] message = "timestamp (10/23/2017 5:11 PM)" self.assertAboutEqual(result[0], ts, message + ' - timestamp') self.assertEqual(result[1], 'message', message + ' - message') self.assertItemsEqual(result[2], match, message + ' - match')
def parse_time(self): times = ' '.join(self.times) self.end_time,message,times = dh.get_end_time(times or self.message) self.message = message or self.message while True: first = self.message.split()[0] if first[0] == '-': for opt in first[1:]: if opt in 'c': self.command = True elif opt in 'r': self.times = times else: break self.message = self.message.replace(first, '', 1).strip()