예제 #1
0
    def test_build_people_track_charge_params(self):
        self.maxDiff = None
        et = PeopleTracker()
        now = datetime.now()
        FakeDateTime.now = classmethod(lambda cls: now)
        event = u'track_charge'
        is_test = 1
        properties = {u'amount': 11.77, u'distinct_id': u'test_id',
                      u'token': u'testtoken', u'extra': u'extra'}
        expected = {
            u'$append': {
                u'$transactions': {
                    u'$amount': 11.77,
                    u'$time': unicode(now.isoformat()),
                    u'extra': 'extra'
                }
            },
            u'$distinct_id': u'test_id',
            u'$token': u'testtoken',
        }
        url_params = et._build_params(event, properties, is_test)
        parsed = dict(urlparse.parse_qsl(url_params, True))
        parsed[u'data'] = simplejson.loads(base64.b64decode(parsed['data']))

        expected_params = {
            u'data': expected,
            u'test': unicode(is_test),
        }

        self.assertEqual(expected_params, parsed)
예제 #2
0
    def test_build_people_set_params(self):
        et = PeopleTracker()
        event = 'set'
        is_test = 1
        properties = {
            'stuff': 'thing',
            'blue': 'green',
            'distinct_id': 'test_id',
            'token': 'testtoken',
            'ip': '173.194.40.212'
        }
        expected = {
            '$distinct_id': 'test_id',
            '$ip': '173.194.40.212',
            '$token': 'testtoken',
            '$set': {
                'stuff': 'thing',
                'blue': 'green',
            },
        }
        url_params = et._build_params(event, properties, is_test)
        expected_params = urllib.urlencode({
            'data': base64.b64encode(simplejson.dumps(expected)),
            'test': is_test,
        })

        self.assertEqual(expected_params, url_params)
예제 #3
0
    def test_build_people_track_charge_params(self):
        et = PeopleTracker()
        now = datetime.now()
        FakeDateTime.now = classmethod(lambda cls: now)
        event = 'track_charge'
        is_test = 1
        properties = {'amount': 11.77, 'distinct_id': 'test_id',
                      'token': 'testtoken'}
        expected = {
            '$append': {
                '$transactions': {
                    '$amount': 11.77,
                    '$time': now.isoformat(),
                }
            },
            '$distinct_id': 'test_id',
            '$token': 'testtoken',
        }
        url_params = et._build_params(event, properties, is_test)
        expected_params = urllib.urlencode({
            'data': base64.b64encode(simplejson.dumps(expected)),
            'test': is_test,
        })

        self.assertEqual(expected_params, url_params)
예제 #4
0
    def test_build_people_set_params(self):
        et = PeopleTracker()
        event = 'set'
        is_test = 1
        properties = {
            'stuff': 'thing',
            'blue': 'green',
            'distinct_id': 'test_id',
            'token': 'testtoken'
        }
        expected = {
            '$distinct_id': 'test_id',
            '$set': {
                'stuff': 'thing',
                'blue': 'green',
            },
            '$token': 'testtoken',
        }
        url_params = et._build_params(event, properties, is_test)
        expected_params = urllib.urlencode({
            'data':
            base64.b64encode(simplejson.dumps(expected)),
            'test':
            is_test,
        })

        self.assertEqual(expected_params, url_params)
예제 #5
0
    def test_build_people_track_charge_params(self):
        self.maxDiff = None
        et = PeopleTracker()
        now = datetime.now()
        FakeDateTime.now = classmethod(lambda cls: now)
        event = u'track_charge'
        is_test = 1
        properties = {
            u'amount': 11.77,
            u'distinct_id': u'test_id',
            u'token': u'testtoken',
            u'extra': u'extra'
        }
        expected = {
            u'$append': {
                u'$transactions': {
                    u'$amount': 11.77,
                    u'$time': unicode(now.isoformat()),
                    u'extra': 'extra'
                }
            },
            u'$distinct_id': u'test_id',
            u'$token': u'testtoken',
        }
        url_params = et._build_params(event, properties, is_test)
        parsed = dict(urlparse.parse_qsl(url_params, True))
        parsed[u'data'] = simplejson.loads(base64.b64decode(parsed['data']))

        expected_params = {
            u'data': expected,
            u'test': unicode(is_test),
        }

        self.assertEqual(expected_params, parsed)
예제 #6
0
    def test_build_people_track_charge_params(self):
        et = PeopleTracker()
        now = datetime.now()
        FakeDateTime.now = classmethod(lambda cls: now)
        event = 'track_charge'
        is_test = 1
        properties = {
            'amount': 11.77,
            'distinct_id': 'test_id',
            'token': 'testtoken'
        }
        expected = {
            '$append': {
                '$transactions': {
                    '$amount': 11.77,
                    '$time': now.isoformat(),
                }
            },
            '$distinct_id': 'test_id',
            '$token': 'testtoken',
        }
        url_params = et._build_params(event, properties, is_test)
        expected_params = urllib.urlencode({
            'data':
            base64.b64encode(simplejson.dumps(expected)),
            'test':
            is_test,
        })

        self.assertEqual(expected_params, url_params)
예제 #7
0
def add_or_update_user_to_mixpanel(user):
    PeopleTracker.delay(
        'set', {
            'distinct_id': user.id,
            '$first_name': user.first_name,
            '$last_name': user.last_name,
            '$email': user.email,
            'Date Joined': user.date_joined.isoformat(),
            '$ignore_time': True,
            'Gender': user.gender,
            'Location City': user.location_city
        })
예제 #8
0
def add_or_update_user_to_mixpanel(user):
    PeopleTracker.delay('set',
                        {
                            'distinct_id': user.id,
                            '$first_name': user.first_name,
                            '$last_name': user.last_name,
                            '$email': user.email,
                            'Date Joined': user.date_joined.isoformat(),
                            '$ignore_time': True,
                            'Gender': user.gender,
                            'Location City': user.location_city

                        })
예제 #9
0
 def test_build_people_set_params(self):
     et = PeopleTracker()
     event = 'set'
     properties = {'stuff': 'thing', 'blue': 'green',
                   'distinct_id': 'test_id'}
     params = et._build_params(event, properties, token='testtoken')
     expected = {
         '$distinct_id': 'test_id',
         '$set': {
             'stuff': 'thing',
             'blue': 'green',
         },
         '$token': 'testtoken',
     }
     self.assertEqual(params, expected)
예제 #10
0
 def test_run_unset(self):
     result = PeopleTracker().run('unset', ['y', 'z'], distinct_id='x')
     self.assertTrue(result)
     self.assertParams({
         '$distinct_id': 'x',
         '$token': 'testtesttest',
         '$unset': ['y', 'z'],
     })
예제 #11
0
 def test_build_people_set_params(self):
     et = PeopleTracker()
     event = 'set'
     properties = {
         'stuff': 'thing',
         'blue': 'green',
         'distinct_id': 'test_id'
     }
     params = et._build_params(event, properties, token='testtoken')
     expected = {
         '$distinct_id': 'test_id',
         '$set': {
             'stuff': 'thing',
             'blue': 'green',
         },
         '$token': 'testtoken',
     }
     self.assertEqual(params, expected)
예제 #12
0
 def test_build_people_track_charge_params(self):
     self.maxDiff = None
     et = PeopleTracker()
     now = datetime.utcnow()
     FakeDateTime.utcnow = classmethod(lambda cls: now)
     event = 'track_charge'
     properties = {'amount': 11.77, 'distinct_id': 'test_id',
                   'extra': 'extra'}
     params = et._build_params(event, properties, token='testtoken')
     expected = {
         '$append': {
             '$transactions': {
                 '$amount': 11.77,
                 '$time': text_type(now.isoformat()),
                 'extra': 'extra'
             }
         },
         '$distinct_id': 'test_id',
         '$token': 'testtoken',
     }
     self.assertEqual(params, expected)
예제 #13
0
 def test_run_set(self):
     result = PeopleTracker().run('set', {
         'distinct_id': 'x',
         'foo': 'bar',
     })
     self.assertTrue(result)
     self.assertParams({
         '$distinct_id': 'x',
         '$token': 'testtesttest',
         '$set': {
             'foo': 'bar'
         },
     })
예제 #14
0
 def test_build_people_track_charge_params(self):
     self.maxDiff = None
     et = PeopleTracker()
     now = datetime.utcnow()
     FakeDateTime.utcnow = classmethod(lambda cls: now)
     event = 'track_charge'
     properties = {
         'amount': 11.77,
         'distinct_id': 'test_id',
         'extra': 'extra'
     }
     params = et._build_params(event, properties, token='testtoken')
     expected = {
         '$append': {
             '$transactions': {
                 '$amount': 11.77,
                 '$time': text_type(now.isoformat()),
                 'extra': 'extra'
             }
         },
         '$distinct_id': 'test_id',
         '$token': 'testtoken',
     }
     self.assertEqual(params, expected)