def test_new_session(self):
     payload = self.payload.copy()
     session = VDM.new_session(payload)
     self.assertEqual(session['session_start'], payload['timestamp'])
     self.assertEqual(session['session_end'], payload['timestamp'])
     self.assertEqual(session['session_duration'], 0)
     self.assertEqual(session['request_address'], payload['request_address'])
     self.assertEqual(session['user_agent'], payload['user_agent'])
     self.assertEqual(session['screen_color'], payload['screen_color'])
     self.assertEqual(session['screen_width'], payload['screen_width'])
     self.assertEqual(session['screen_height'], payload['screen_height'])
     self.assertIsInstance(session['pageviews'], list)
     self.assertEqual(session['pageview_count'], 1)
    def test_payload_is_part_of_session(self):
        payload_1 = self.payload.copy()
        payload_2 = self.payload.copy()
        payload_3 = self.payload.copy()
        payload_4 = self.payload.copy()
        timestamp = epoch()
        payload_1.update(request_address="Foo", user_agent="Foo", timestamp=timestamp)
        payload_2.update(request_address="Foo", user_agent="Bar", timestamp=timestamp)
        payload_3.update(request_address="Bar", user_agent="Foo", timestamp=timestamp)
        payload_4.update(request_address="Foo", user_agent="Foo", timestamp=timestamp+31*60)

        session = VDM.new_session(payload_1)
        self.assertTrue(VDM.payload_is_part_of_session(payload_1, session))
        self.assertFalse(VDM.payload_is_part_of_session(payload_2, session))
        self.assertFalse(VDM.payload_is_part_of_session(payload_3, session))
        self.assertFalse(VDM.payload_is_part_of_session(payload_4, session))
    def test_update_session(self):
        payload_1 = self.payload
        payload_2 = payload_1.copy()
        payload_2.update(timestamp=epoch())
        session_1 = VDM.new_session(payload_1)
        session_2 = VDM.update_session(payload_2, session_1)
        
        # Values not updated
        self.assertEqual(session_1['session_start'], session_2['session_start'])
        self.assertEqual(session_1['request_address'], session_2['request_address'])
        self.assertEqual(session_1['user_agent'], session_2['user_agent'])
        self.assertEqual(session_1['screen_color'], session_2['screen_color'])
        self.assertEqual(session_1['screen_width'], session_2['screen_width'])
        self.assertEqual(session_1['screen_height'], session_2['screen_height'])

        # Values updated
        self.assertEqual(session_2['session_end'], payload_2['timestamp'])
        self.assertEqual(session_2['session_duration'], session_2['session_end'] - session_2['session_start'])
        self.assertEqual(len(session_2['pageviews']), len(session_1['pageviews'])+1)
        self.assertEqual(session_2['pageview_count'], len(session_2['pageviews']))