def test_retrieving_valid_log(self): Log.objects().delete() answer = [{ 'userId': '12345', 'sessionId': 'asdfg', 'actions': [{ 'type': 'CLICK', 'properties': { 'locationX': 52, 'locationY': 22 }, 'time': '2018-10-18T21:37:28-06:00' }] }] action = Action(_time='2018-10-18T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=52, locationY=22)) log = Log(userId='12345', sessionId='asdfg', actions=[action]) log.save() r = self.w.get('/logs/?') log.delete() assert r.json == answer
def test_retrieving_with_invalid_type(self): Log.objects().delete() answer = [{ 'userId': '12345', 'sessionId': 'asdfg', 'actions': [{ 'type': 'CLICK', 'properties': { 'locationX': 52, 'locationY': 22 }, 'time': '2018-10-17T21:37:28-06:00' }] }] action1 = Action(_time='2018-10-17T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=52, locationY=22)) action2 = Action(_time='2018-10-19T21:37:28-06:00', _type='NAVIGATE', _properties=NavigateProperties(pageFrom='X', pageTo='Y')) log = Log(userId='12345', sessionId='asdfg', actions=[action1, action2]) log.save() r1 = self.w.get('/logs/?types=CLICK,WRONGTYPE,VIEW') assert r1.status_int == 200 assert r1.json == answer log.delete()
def test_logs_with_an_existing_log(self): Log.objects().delete() answer = [{ 'userId': '12345', 'sessionId': 'asdfg', 'actions': [{ 'time': '2018-10-18T21:37:28-06:00', 'type': 'CLICK', 'properties': { 'locationX': 52, 'locationY': 22 } }] }] action = Action(_time='2018-10-18T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=52, locationY=22)) log = Log(userId='12345', sessionId='asdfg', actions=[action]) log.save() result = LogService.get_logs(None, None, None, None) assert result is not None assert result == answer log.delete()
def test_retrieving_log_by_user(self): Log.objects().delete() answer1 = [{ 'userId': 'ASDF', 'sessionId': '123', 'actions': [{ 'type': 'CLICK', 'properties': { 'locationX': 52, 'locationY': 22 }, 'time': '2018-10-18T21:37:28-06:00' }] }] answer2 = [{ 'userId': '12345', 'sessionId': 'asdfg', 'actions': [{ 'type': 'CLICK', 'properties': { 'locationX': 52, 'locationY': 22 }, 'time': '2018-10-18T21:37:28-06:00' }] }] action = Action(_time='2018-10-18T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=52, locationY=22)) log1 = Log(userId='12345', sessionId='asdfg', actions=[action]) log2 = Log(userId='ASDF', sessionId='123', actions=[action]) log1.save() log2.save() r1 = self.w.get('/logs/?userId=ASDF') assert r1.json == answer1 r2 = self.w.get('/logs/?userId=12345') assert r2.json == answer2 r2 = self.w.get('/logs/?userId=12') assert r2.json == [] log1.delete() log2.delete()
def test_logs_with_an_matching_log_userId(self): Log.objects().delete() answer = [{ "userId": "12345", "sessionId": "asdfg", "actions": [{ "time": "2018-10-18T21:37:28-06:00", "properties": { "locationX": 52, "locationY": 22 }, "type": "CLICK", }, { "time": "2018-10-20T21:37:28-06:00", "properties": { "pageFrom": "X", "pageTo": "Y" }, "type": "NAVIGATE" }] }] action1 = Action(_time='2018-10-18T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=52, locationY=22)) action2 = Action(_time='2018-10-20T21:37:28-06:00', _type='NAVIGATE', _properties=NavigateProperties(pageFrom='X', pageTo='Y')) log = Log(userId='12345', sessionId='asdfg', actions=[action1, action2]) log.save() result1 = LogService.get_logs('12345', None, None, None) assert result1 is not None assert result1 == answer result2 = LogService.get_logs('asdf', None, None, None) assert result2 is not None assert len(result2) == 0 log.delete()
def test_retrieving_logs_with_matching_types(self): Log.objects().delete() answer1 = [ { "userId": "12345", "sessionId": "asdfg", "actions": [{ "time": "2018-10-20T21:37:28-06:00", "properties": { "locationX": 52, "locationY": 22 }, "type": "CLICK" }] }, { "userId": "ASDFG", "sessionId": "12345", "actions": [{ "time": "2019-10-20T21:37:28-06:00", "properties": { "locationX": 60, "locationY": 30 }, "type": "CLICK" }] }, ] answer2 = [ { "userId": "12345", "sessionId": "asdfg", "actions": [{ "time": "2018-10-20T21:37:28-06:00", "properties": { "locationX": 52, "locationY": 22 }, "type": "CLICK" }] }, { "userId": "ASDFG", "sessionId": "12345", "actions": [{ "time": "2019-10-19T21:37:28-06:00", "properties": { "viewedId": "12345", }, "type": "VIEW" }, { "time": "2019-10-20T21:37:28-06:00", "properties": { "locationX": 60, "locationY": 30 }, "type": "CLICK" }] }, ] answer3 = [{ "userId": "12345", "sessionId": "asdfg", "actions": [{ "time": "2018-10-20T21:37:28-06:00", "properties": { "pageFrom": "X", "pageTo": "Y" }, "type": "NAVIGATE" }] }] action1 = Action(_time='2018-10-20T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=52, locationY=22)) action2 = Action(_time='2018-10-20T21:37:28-06:00', _type='NAVIGATE', _properties=NavigateProperties(pageFrom='X', pageTo='Y')) log1 = Log(userId='12345', sessionId='asdfg', actions=[action1, action2]) action3 = Action(_time='2019-10-19T21:37:28-06:00', _type='VIEW', _properties=ViewProperties(viewedId='12345')) action4 = Action(_time='2019-10-20T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=60, locationY=30)) log2 = Log(userId='ASDFG', sessionId='12345', actions=[action3, action4]) log1.save() log2.save() r1 = self.w.get('/logs/?types=CLICK') assert r1.json == answer1 r2 = self.w.get('/logs/?types=CLICK,VIEW') assert r2.json == answer2 r3 = self.w.get('/logs/?types=NAVIGATE') assert r3.json == answer3 log1.delete() log2.delete()
def test_logs_with_a_from_and_to(self): Log.objects().delete() answer1 = [ { "userId": "12345", "sessionId": "asdfg", "actions": [{ "time": "2018-10-17T21:37:28-06:00", "properties": { "locationX": 52, "locationY": 22 }, "type": "CLICK" }] }, { "userId": "ASDFG", "sessionId": "12345", "actions": [{ "time": "2018-10-18T21:37:28-06:00", "properties": { "viewedId": "12345" }, "type": "VIEW" }] }, ] answer2 = [ { "userId": "12345", "sessionId": "asdfg", "actions": [{ "time": "2018-10-19T21:37:28-06:00", "properties": { "pageFrom": 'X', "pageTo": 'Y' }, "type": "NAVIGATE" }] }, { "userId": "ASDFG", "sessionId": "12345", "actions": [{ "time": "2018-10-20T21:37:28-06:00", "properties": { "locationX": 60, "locationY": 30 }, "type": "CLICK" }] }, ] answer3 = [{ "userId": "ASDFG", "sessionId": "12345", "actions": [{ "time": "2018-10-18T21:37:28-06:00", "properties": { "viewedId": "12345", }, "type": "VIEW" }] }] action1 = Action(_time='2018-10-17T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=52, locationY=22)) action2 = Action(_time='2018-10-19T21:37:28-06:00', _type='NAVIGATE', _properties=NavigateProperties(pageFrom='X', pageTo='Y')) log1 = Log(userId='12345', sessionId='asdfg', actions=[action1, action2]) action3 = Action(_time='2018-10-18T21:37:28-06:00', _type='VIEW', _properties=ViewProperties(viewedId='12345')) action4 = Action(_time='2018-10-20T21:37:28-06:00', _type='CLICK', _properties=ClickProperties(locationX=60, locationY=30)) log2 = Log(userId='ASDFG', sessionId='12345', actions=[action3, action4]) log1.save() log2.save() result1 = LogService.get_logs(None, None, '2018-10-19T00:00:00-06:00', None) assert result1 is not None assert result1 == answer1 result2 = LogService.get_logs(None, '2018-10-19T00:00:00-06:00', None, None) assert result2 is not None assert result2 == answer2 result3 = LogService.get_logs(None, '2018-10-18T00:00:00-06:00', '2018-10-19T00:00:00-06:00', None) assert result3 is not None assert result3 == answer3 log1.delete() log2.delete()