Beispiel #1
0
    def test_track_playtime_counts_time_between_track_start_and_track_end(
            self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.track_playtime == 50
Beispiel #2
0
 def test_prolematic_slug(self):
     location = 'bar'
     event = Event(title='Festipop 2010 avec Roots League, Lion Roots et ...  Iration Steppas !', location=location,
                         date='2010-05-28')
     expected_slug = u'28-05-2010_festipop-2010-avec-roots-league-lion-roots-et-iration-steppas'
     event.put()
     self.assertEqual(event.slug, expected_slug)
Beispiel #3
0
    def test_duration_is_time_between_last_and_first_event(self):
        session = Session()
        session.add_event(Event('track_end', 50, 'A', '101'))
        session.add_event(Event('track_end', 150, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.duration == 50
Beispiel #4
0
	def test_MISSING_file_already_in_db_not_exists( self ):
		self.engine.db.add( file = 'filename' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		ev.isInDB = True
		self.assertEqual( ev, newEv )		# Файла на диске нет, а в базе есть - пропажа файла.
Beispiel #5
0
    def test_last_time_comes_from_last_event(self):
        session = Session()
        session.add_event(Event('track_end', 50, 'A', '101'))
        session.add_event(Event('track_end', 150, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.last_time == 100
Beispiel #6
0
    def test_track_playtime_supports_paused_heartbeated_unfinished_sessions(
            self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('pause', 60, 'A', '101'))
        session.add_event(Event('track_heartbeat', 70, 'A', '101'))

        assert session.track_playtime == 10
Beispiel #7
0
    def test_track_playtime_supports_pauses(self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('pause', 60, 'A', '101'))
        session.add_event(Event('play', 70, 'A', '101'))
        session.add_event(Event('track_end', 100, 'A', '101'))

        assert session.track_playtime == 40
Beispiel #8
0
	def test_NEW_file_already_in_db_not_exists( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		ev.action = Event.ACTION.MISSING	# Функция должна обнаружить пропажу файла, так как в базе он есть
		ev.isInDB = True
		self.assertEqual( ev, newEv )
Beispiel #9
0
	def test_MISSING_file_already_in_db_exists_good_hash( self ):
		self.engine.db.add( file = 'filename', hash = None )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.NOT_PROCESSING, newEv.action )	# Файл на диске совпал с тем, что в базе -  игнорируем.
Beispiel #10
0
 def test_populate_event(self):
     location = 'bar'
     event = Event(title='Hello World Event', location=location,
                         date='2009-01-25')
     expected_slug = u'25-01-2009_hello-world-event'
     event.put()
     event = Event.gql("WHERE slug = '%s'" % str(expected_slug)).get()
     assert event.location == location
Beispiel #11
0
	def test_UPDATED_file_not_in_db( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.UPDATED
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( newEv.action, Event.ACTION.NEW )
		self.assertEqual( newEv.isInDB, False )
Beispiel #12
0
    def test_ad_count_counts_number_of_ad_starts(self):
        session = Session()
        session.add_event(Event('ad_start', 50, 'A', '101'))
        session.add_event(Event('ad_start', 50, 'A', '101'))
        session.add_event(Event('ad_end', 50, 'A', '101'))
        session.add_event(Event('ad_start', 50, 'A', '101'))

        assert session.ad_count == 3
Beispiel #13
0
	def test_NEW_file_not_in_db_exists( self ):
		ev = Event( 'filename', '', False,self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.isInDB = False
		ev.info = None
		self.assertEqual( ev, newEv )
Beispiel #14
0
 def test_end(self):
     event = Event(start=datetime.datetime(year=2000, month=6, day=15, hour=12, minute=30, second=30),
                   duration=datetime.timedelta(seconds=3700))
     self.assertEqual(event.end().year, 2000)
     self.assertEqual(event.end().month, 6)
     self.assertEqual(event.end().day, 15)
     self.assertEqual(event.end().hour, 13)
     self.assertEqual(event.end().minute, 32)
     self.assertEqual(event.end().second, 10)
Beispiel #15
0
	def test_RENAMED_file_not_in_db( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.RENAMED
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			new_path = os.path.join( self.DEFAULT_CFG[0], 'new_filename' )
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action, new_path )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.NEW, newEv.action )	# Файл был переименован, но в базе его нет - новый файл
		self.assertEqual( new_path, newEv.path )	
Beispiel #16
0
	def test_RENAMED_dir( self ):
		ev = Event( '', 'dir', True, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.RENAMED
		with unittest.mock.patch( 'os.path.isdir', return_value = True ) as isdir_test:
			new_path = os.path.join( self.DEFAULT_CFG[0], 'new_dir' )
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action, new_path )
			isdir_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.RENAMED, newEv.action )	# Папка была переименована, в базе есть - нужно обновить базу
		self.assertEqual( new_path, newEv.info )
Beispiel #17
0
	def test_UPDATED_file( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0], 'new_hash' )
		ev.action = Event.ACTION.UPDATED
		self.engine.processEvent( ev )
		elem = self.engine.db.find( hash = 'new_hash' )
		self.assertEqual( len( self.engine.db.find( hash = 'xxx' ) ), 0 )
		self.assertEqual( len( elem ), 1 )
		self.assertEqual( elem[0]['file'], ev.fileName )
Beispiel #18
0
	def test_UPDATED_file_already_in_db_diff_hash( self ):
		self.engine.db.add( file = 'filename', hash = 'same' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.UPDATED
		with unittest.mock.patch( 'fileutils.get_hash', return_value = 'same' ) as hash_test:
			with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
				newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
				exists_test.assert_called_once_with( ev.path )
				hash_test.assert_called_once_with( ev.path )
		self.assertEqual( newEv.action, Event.ACTION.NOT_PROCESSING )
 def test_event_page(self):
     location = 'Somewhere'
     title = "This+is*a;weird Title"
     event = Event(title=title, date=self.str2date('2009-01-31'), location=location,
             published=True)
     event.put()
     slug = "31-01-2009_this-is-a-weird-title"
     self.assertEqual(event.slug, slug)
     response = self.app.get('/events/%s' % slug)
     assert location in response, location + ' should be in ' + response.body
Beispiel #20
0
	def test_MISSING_file_not_in_db_exists( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.action = Event.ACTION.NEW		# Пришло событие об удалении файла, а он есть, добавляем в базу.
		ev.isInDB = False
		ev.info = None
		self.assertEqual( ev, newEv )
Beispiel #21
0
	def test_MISSING_file_already_in_db_exists_bad_hash( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.isInDB = True
		ev.action = Event.ACTION.BAD_HASH					# Файл на диске есть, в базе есть, но они не совпали.
		ev.info = self.engine.db.find( file = 'filename' )
		self.assertEqual( ev, newEv )
Beispiel #22
0
	def test_NEW_file_already_in_db_exists_bad_hash( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.isInDB = True
		ev.action = Event.ACTION.BAD_HASH	# Так как оказывается, что тот файл, который сейчас на диске не совпадает с тем, что в базе.
		ev.info = self.engine.db.find( file = 'filename' )
		self.assertEqual( ev, newEv )
Beispiel #23
0
	def test_RENAMED_file_already_in_db( self ):
		self.engine.db.add( file = 'filename', hash = None )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.RENAMED
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			new_path = os.path.join( self.DEFAULT_CFG[0], 'new_filename' )
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action, new_path )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.RENAMED, newEv.action )	# Файл был переименован, в базе есть - нужно обновить базу
		self.assertEqual( ev.path, newEv.path )
		self.assertEqual( get_file_and_dir( new_path, self.DEFAULT_CFG[0], False ), newEv.info )
Beispiel #24
0
	def test_NEW_file_not_in_db_another_file_in_db_with_same_hash( self ):
		self.engine.db.add( file = 'duplicate', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			with unittest.mock.patch( 'fileutils.get_hash', return_value = 'xxx' ) as get_hash_patch:
				newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
				get_hash_patch.assert_called_once_with( ev.path )
				exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.DUPLICATE, newEv.action )		# Файл на диске имеет такой же хэш как и файл в базе - дубликат
		self.assertEqual( self.engine.db.find( file = 'duplicate' ), newEv.info )
Beispiel #25
0
    def test_get_formatted_output_returns_in_correct_format(self):
        session = Session()
        session.add_event(Event('stream_start', 50, 'A', '101'))
        session.add_event(Event('ad_start', 60, 'A', '101'))
        session.add_event(Event('ad_end', 70, 'A', '101'))
        session.add_event(Event('track_start', 80, 'A', '101'))
        session.add_event(Event('track_heartbeat', 90, 'A', '101'))

        assert session.get_formatted_output() == {
            'user_id': 'A',
            'content_id': '101',
            'session_start': 50,
            'session_end': 90,
            'total_time': 40,
            'track_playtime': 10,
            'event_count': 5,
            'ad_count': 1
        }
    def test_create_event(self):
        form = self.app.get('/admin/events/new').form
        form['title'] = 'This is a test event'
        form['date'] = '25/01/2000'
        form['image'] = ('cows.jpg', open('tests/small_cows.jpg').read())
        form['description'] = 'great event'
        form['location'] = 'Tokyo'
        response = form.submit()

        event = Event.gql("WHERE title = :1", 'This is a test event').get()
        self.assertEqual(event.description, 'great event')
        self.assertEqual(event.location, 'Tokyo')
        self.assertEqual(event.date.day, 25)
        assert event.image
Beispiel #27
0
def test_json_release():
    ev: Event = Event.fromPath("fixtures/release.json")
    assert ev.repository.name == "Hello-World"
    assert ev.is_release
    assert ev.base == "https://api.github.com/repos/Codertocat/Hello-World"
Beispiel #28
0
    def test_is_expired_is_true_60_seconds_after_last_event(self):
        session = Session()
        session.add_event(Event('ad_start', 50, 'A', '101'))

        assert session.is_expired(50 + 60)
Beispiel #29
0
    {
        'name': "Test event 2",
        'lat': "40.123435",
        'lng': "40.23432"
    },
    {
        'name': "Test event 3",
        'lat': "40.123435",
        'lng': "40.23432"
    },
    {
        'name': "Test event 4",
        'lat': "40.123435",
        'lng': "40.23432"
    },
]

try:
    db.drop_all()
except:
    pass

db.create_all()
for event in events:
    db.session.add(Event(**event))

db.session.commit()

loaded_events = Event.query.all()
print(json.dumps([x.as_dict() for x in loaded_events]))
Beispiel #30
0
	def test_double_item_in_db( self ):
		self.engine.db.add( file = 'filename', hash = None )
		self.engine.db.add( file = 'filename', hash = None )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		self.assertRaises( RuntimeError, self.engine.prepareEvent, ev.path, self.DEFAULT_CFG[0], ev.action )
Beispiel #31
0
 def test_session_id_property(self):
     event = Event('track_end', 100, 'A', '101')
     assert event.session_id == ('A', '101')
Beispiel #32
0
	def construct_event( self, action, d = '', isdir = False, name = 'filename' ):
		ev = Event( name, d, isdir, self.DEFAULT_CFG[0] )
		ev.action = action
		return ev
Beispiel #33
0
 def test_repr(self):
     event = Event('track_end', 100, 'A', '101')
     assert (repr(event) == "Event(event_type='track_end', "
             "timestamp=100, user_id='A', "
             "content_id='101')")
Beispiel #34
0
    def test_is_expired_is_false_59_seconds_after_last_event(self):
        session = Session()
        session.add_event(Event('ad_start', 50, 'A', '101'))

        assert not session.is_expired(50 + 59)
Beispiel #35
0
 def test_main_image(self):
     event = Event(title='foo', location='bar', date='2009-01-01')
     event.put()
Beispiel #36
0
	def test_NEW_file_not_in_db_not_exists( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		self.assertEqual( newEv.action, Event.ACTION.NOT_PROCESSING )
Beispiel #37
0
    def test_session_id_comes_from_first_event(self):
        session = Session()
        session.add_event(Event('track_end', 100, 'A', '101'))
        session.add_event(Event('track_end', 100, 'B', '101'))

        assert session.session_id == ('A', '101')
Beispiel #38
0
    def test_track_playtime_works_without_track_end(self):
        session = Session()
        session.add_event(Event('track_start', 50, 'A', '101'))
        session.add_event(Event('track_heartbeat', 60, 'A', '101'))

        assert session.track_playtime == 10
Beispiel #39
0
                         description='something',
                         vendor='somewhere',
                         amount_cents=1234,
                         creator=u1)
        t1.participants.append(u1)
        t1.participants.append(u2)
        t2 = Transaction(name='Burgers',
                         description='whoah',
                         vendor='somewhere2',
                         amount_cents=5555,
                         creator=u2)
        t2.participants.append(u3)
        t2.participants.append(u2)
        db.session.add(t1)
        db.session.add(t2)
        db.session.commit()
        e1 = Event(name='Pennapps',
                   description='sleeping? bah.',
                   creator=u1,
                   participants=[u1, u2, u3],
                   settled=False)
        e1.transactions.append(t1)
        e1.transactions.append(t2)
        db.session.add(e1)
        db.session.commit()
    else:
        print 'dropping all tables...'
        db.drop_all()
        print 'creating all tables...'
        db.create_all()
Beispiel #40
0
	def test_MISSING_file_not_in_db_not_exists( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		self.assertEqual( newEv.action, Event.ACTION.NOT_PROCESSING )	# Файл, который удалили, и так не было в базе - не обрабатываем его.