recombee-api-client 4.1.5 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/index.js +1 -1
  2. package/lib/api-client.js +20 -15
  3. package/lib/errors/index.js +1 -1
  4. package/lib/index.d.ts +127 -175
  5. package/lib/requests/add-bookmark.js +1 -1
  6. package/lib/requests/add-cart-addition.js +1 -1
  7. package/lib/requests/add-detail-view.js +1 -1
  8. package/lib/requests/add-item-property.js +1 -1
  9. package/lib/requests/add-item.js +1 -1
  10. package/lib/requests/add-purchase.js +1 -1
  11. package/lib/requests/add-rating.js +1 -1
  12. package/lib/requests/add-series.js +12 -2
  13. package/lib/requests/add-user-property.js +1 -1
  14. package/lib/requests/add-user.js +1 -1
  15. package/lib/requests/delete-bookmark.js +1 -1
  16. package/lib/requests/delete-cart-addition.js +1 -1
  17. package/lib/requests/delete-detail-view.js +1 -1
  18. package/lib/requests/delete-item.js +1 -1
  19. package/lib/requests/delete-purchase.js +1 -1
  20. package/lib/requests/delete-rating.js +1 -1
  21. package/lib/requests/delete-series.js +12 -2
  22. package/lib/requests/delete-user.js +1 -1
  23. package/lib/requests/delete-view-portion.js +1 -1
  24. package/lib/requests/get-item-property-info.js +1 -1
  25. package/lib/requests/get-item-values.js +1 -1
  26. package/lib/requests/get-user-values.js +1 -1
  27. package/lib/requests/index.js +1 -6
  28. package/lib/requests/insert-to-series.js +2 -2
  29. package/lib/requests/recommend-item-segments-to-item-segment.js +2 -2
  30. package/lib/requests/recommend-item-segments-to-item.js +2 -2
  31. package/lib/requests/recommend-item-segments-to-user.js +2 -2
  32. package/lib/requests/recommend-items-to-item-segment.js +214 -0
  33. package/lib/requests/remove-from-series.js +4 -7
  34. package/lib/requests/request.js +1 -1
  35. package/lib/requests/set-view-portion.js +1 -1
  36. package/package.json +8 -5
  37. package/test/add-bookmark-batch_test.js +2 -4
  38. package/test/add-bookmark-callback_test.js +0 -15
  39. package/test/add-bookmark-test.js +0 -17
  40. package/test/add-cart-addition-batch_test.js +2 -4
  41. package/test/add-cart-addition-callback_test.js +0 -15
  42. package/test/add-cart-addition-test.js +0 -17
  43. package/test/add-detail-view-batch_test.js +2 -4
  44. package/test/add-detail-view-callback_test.js +0 -15
  45. package/test/add-detail-view-test.js +0 -17
  46. package/test/add-purchase-batch_test.js +2 -4
  47. package/test/add-purchase-callback_test.js +0 -15
  48. package/test/add-purchase-test.js +0 -17
  49. package/test/add-rating-batch_test.js +2 -4
  50. package/test/add-rating-callback_test.js +0 -15
  51. package/test/add-rating-test.js +0 -17
  52. package/test/list-items-batch_test.js +1 -1
  53. package/test/list-items-callback_test.js +1 -1
  54. package/test/list-items-test.js +1 -1
  55. package/test/list-users-batch_test.js +1 -1
  56. package/test/list-users-callback_test.js +1 -1
  57. package/test/list-users-test.js +1 -1
  58. package/test/{list-groups-batch_test.js → recommend-items-to-item-segment-batch_test.js} +4 -5
  59. package/test/{list-groups-callback_test.js → recommend-items-to-item-segment-callback_test.js} +8 -7
  60. package/test/{remove-from-group-test.js → recommend-items-to-item-segment-test.js} +5 -14
  61. package/test/remove-from-series-batch_test.js +4 -6
  62. package/test/remove-from-series-callback_test.js +2 -17
  63. package/test/remove-from-series-test.js +2 -19
  64. package/test/set-environment.js +89 -86
  65. package/test/set-view-portion-batch_test.js +0 -2
  66. package/test/set-view-portion-callback_test.js +0 -15
  67. package/test/set-view-portion-test.js +0 -17
  68. package/lib/requests/add-group.js +0 -42
  69. package/lib/requests/delete-group.js +0 -43
  70. package/lib/requests/insert-to-group.js +0 -58
  71. package/lib/requests/list-group-items.js +0 -42
  72. package/lib/requests/list-groups.js +0 -40
  73. package/lib/requests/remove-from-group.js +0 -48
  74. package/test/add-group-batch_test.js +0 -39
  75. package/test/add-group-callback_test.js +0 -72
  76. package/test/add-group-test.js +0 -68
  77. package/test/delete-group-batch_test.js +0 -39
  78. package/test/delete-group-callback_test.js +0 -74
  79. package/test/delete-group-test.js +0 -76
  80. package/test/insert-to-group-batch_test.js +0 -53
  81. package/test/insert-to-group-callback_test.js +0 -86
  82. package/test/insert-to-group-test.js +0 -68
  83. package/test/list-group-items-batch_test.js +0 -36
  84. package/test/list-group-items-callback_test.js +0 -38
  85. package/test/list-group-items-test.js +0 -34
  86. package/test/list-groups-test.js +0 -32
  87. package/test/remove-from-group-batch_test.js +0 -35
  88. package/test/remove-from-group-callback_test.js +0 -50
@@ -26,7 +26,6 @@ describe('AddDetailView', function(){
26
26
  new rqs.AddDetailView('entity_id','entity_id',{'timestamp': '2013-10-29T09:38:41.341Z'}),
27
27
  new rqs.AddDetailView('entity_id','nonex_id'),
28
28
  new rqs.AddDetailView('nonex_id','entity_id'),
29
- new rqs.AddDetailView('entity_id','entity_id',{'timestamp': -15}),
30
29
  new rqs.AddDetailView('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5}),
31
30
  new rqs.AddDetailView('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5})
32
31
  ];
@@ -38,9 +37,8 @@ describe('AddDetailView', function(){
38
37
  chai.equal(responses[2].code, 200);
39
38
  chai.equal(responses[3].code, 404);
40
39
  chai.equal(responses[4].code, 404);
41
- chai.equal(responses[5].code, 400);
42
- chai.equal(responses[6].code, 200);
43
- chai.equal(responses[7].code, 409);
40
+ chai.equal(responses[5].code, 200);
41
+ chai.equal(responses[6].code, 409);
44
42
  done();
45
43
  });
46
44
  });
@@ -89,21 +89,6 @@ describe('AddDetailView', function(){
89
89
  }));
90
90
  });
91
91
 
92
- it ('fails with invalid time', (done) => {
93
- let req, req2, resp;
94
- req = new rqs.AddDetailView('entity_id','entity_id',{'timestamp': -15});
95
- env.client.send(req,((err,res) => {
96
- if(err) {
97
- chai.equal(err.name, 'ResponseError');
98
- chai.equal(err.statusCode, 400);
99
- done();
100
- }
101
- else {
102
- chai.fail();
103
- }
104
- }));
105
- });
106
-
107
92
  it ('really stores interaction to the system', (done) => {
108
93
  let req, req2, resp;
109
94
  req = new rqs.AddDetailView('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5});
@@ -81,23 +81,6 @@ describe('AddDetailView', function(){
81
81
  });
82
82
  });
83
83
 
84
- it ('fails with invalid time', (done) => {
85
- let req, req2, resp;
86
- req = new rqs.AddDetailView('entity_id','entity_id',{'timestamp': -15});
87
- env.client.send(req)
88
- .then((res) => {
89
- chai.fail();
90
- done();
91
- })
92
- .catch((err) => {
93
- if (err instanceof recombee.errors.ResponseError) {
94
- chai.equal(err.statusCode, 400);
95
- done();
96
- }
97
- throw err;
98
- });
99
- });
100
-
101
84
  it ('really stores interaction to the system', (done) => {
102
85
  let req, req2, resp;
103
86
  req = new rqs.AddDetailView('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5});
@@ -26,7 +26,6 @@ describe('AddPurchase', function(){
26
26
  new rqs.AddPurchase('entity_id','entity_id',{'timestamp': '2013-10-29T09:38:41.341Z'}),
27
27
  new rqs.AddPurchase('entity_id','nonex_id'),
28
28
  new rqs.AddPurchase('nonex_id','entity_id'),
29
- new rqs.AddPurchase('entity_id','entity_id',{'timestamp': -15}),
30
29
  new rqs.AddPurchase('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5}),
31
30
  new rqs.AddPurchase('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5})
32
31
  ];
@@ -38,9 +37,8 @@ describe('AddPurchase', function(){
38
37
  chai.equal(responses[2].code, 200);
39
38
  chai.equal(responses[3].code, 404);
40
39
  chai.equal(responses[4].code, 404);
41
- chai.equal(responses[5].code, 400);
42
- chai.equal(responses[6].code, 200);
43
- chai.equal(responses[7].code, 409);
40
+ chai.equal(responses[5].code, 200);
41
+ chai.equal(responses[6].code, 409);
44
42
  done();
45
43
  });
46
44
  });
@@ -89,21 +89,6 @@ describe('AddPurchase', function(){
89
89
  }));
90
90
  });
91
91
 
92
- it ('fails with invalid time', (done) => {
93
- let req, req2, resp;
94
- req = new rqs.AddPurchase('entity_id','entity_id',{'timestamp': -15});
95
- env.client.send(req,((err,res) => {
96
- if(err) {
97
- chai.equal(err.name, 'ResponseError');
98
- chai.equal(err.statusCode, 400);
99
- done();
100
- }
101
- else {
102
- chai.fail();
103
- }
104
- }));
105
- });
106
-
107
92
  it ('really stores interaction to the system', (done) => {
108
93
  let req, req2, resp;
109
94
  req = new rqs.AddPurchase('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5});
@@ -81,23 +81,6 @@ describe('AddPurchase', function(){
81
81
  });
82
82
  });
83
83
 
84
- it ('fails with invalid time', (done) => {
85
- let req, req2, resp;
86
- req = new rqs.AddPurchase('entity_id','entity_id',{'timestamp': -15});
87
- env.client.send(req)
88
- .then((res) => {
89
- chai.fail();
90
- done();
91
- })
92
- .catch((err) => {
93
- if (err instanceof recombee.errors.ResponseError) {
94
- chai.equal(err.statusCode, 400);
95
- done();
96
- }
97
- throw err;
98
- });
99
- });
100
-
101
84
  it ('really stores interaction to the system', (done) => {
102
85
  let req, req2, resp;
103
86
  req = new rqs.AddPurchase('u_id2','i_id2',{'cascadeCreate': true,'timestamp': 5});
@@ -25,7 +25,6 @@ describe('AddRating', function(){
25
25
  new rqs.AddRating('entity_id','entity_id',0),
26
26
  new rqs.AddRating('entity_id','nonex_id',-1),
27
27
  new rqs.AddRating('nonex_id','entity_id',0.5),
28
- new rqs.AddRating('entity_id','entity_id',0,{'timestamp': -15}),
29
28
  new rqs.AddRating('entity_id','entity_id',-2),
30
29
  new rqs.AddRating('u_id','i_id',0.3,{'cascadeCreate': true,'timestamp': 5}),
31
30
  new rqs.AddRating('u_id','i_id',0.3,{'cascadeCreate': true,'timestamp': 5})
@@ -38,9 +37,8 @@ describe('AddRating', function(){
38
37
  chai.equal(responses[2].code, 404);
39
38
  chai.equal(responses[3].code, 404);
40
39
  chai.equal(responses[4].code, 400);
41
- chai.equal(responses[5].code, 400);
42
- chai.equal(responses[6].code, 200);
43
- chai.equal(responses[7].code, 409);
40
+ chai.equal(responses[5].code, 200);
41
+ chai.equal(responses[6].code, 409);
44
42
  done();
45
43
  });
46
44
  });
@@ -76,21 +76,6 @@ describe('AddRating', function(){
76
76
  }));
77
77
  });
78
78
 
79
- it ('fails with invalid time', (done) => {
80
- let req, req2, resp;
81
- req = new rqs.AddRating('entity_id','entity_id',0,{'timestamp': -15});
82
- env.client.send(req,((err,res) => {
83
- if(err) {
84
- chai.equal(err.name, 'ResponseError');
85
- chai.equal(err.statusCode, 400);
86
- done();
87
- }
88
- else {
89
- chai.fail();
90
- }
91
- }));
92
- });
93
-
94
79
  it ('fails with invalid rating', (done) => {
95
80
  let req, req2, resp;
96
81
  req = new rqs.AddRating('entity_id','entity_id',-2);
@@ -72,23 +72,6 @@ describe('AddRating', function(){
72
72
  });
73
73
  });
74
74
 
75
- it ('fails with invalid time', (done) => {
76
- let req, req2, resp;
77
- req = new rqs.AddRating('entity_id','entity_id',0,{'timestamp': -15});
78
- env.client.send(req)
79
- .then((res) => {
80
- chai.fail();
81
- done();
82
- })
83
- .catch((err) => {
84
- if (err instanceof recombee.errors.ResponseError) {
85
- chai.equal(err.statusCode, 400);
86
- done();
87
- }
88
- throw err;
89
- });
90
- });
91
-
92
75
  it ('fails with invalid rating', (done) => {
93
76
  let req, req2, resp;
94
77
  req = new rqs.AddRating('entity_id','entity_id',-2);
@@ -22,7 +22,7 @@ describe('ListItems', function(){
22
22
  it ('works in batch', (done) => {
23
23
  let requests = [
24
24
  new rqs.ListItems(),
25
- new rqs.ListItems()
25
+ new rqs.ListItems({'returnProperties': true})
26
26
  ];
27
27
 
28
28
  env.client.send(new rqs.Batch(requests))
@@ -36,7 +36,7 @@ describe('ListItems', function(){
36
36
 
37
37
  it ('return properties', (done) => {
38
38
  let req, req2, resp;
39
- req = new rqs.ListItems();
39
+ req = new rqs.ListItems({'returnProperties': true});
40
40
  env.client.send(req,((err,res) => {
41
41
  if(err) {
42
42
  chai.fail();
@@ -32,7 +32,7 @@ describe('ListItems', function(){
32
32
 
33
33
  it ('return properties', (done) => {
34
34
  let req, req2, resp;
35
- req = new rqs.ListItems();
35
+ req = new rqs.ListItems({'returnProperties': true});
36
36
  env.client.send(req)
37
37
  .then((res) => {
38
38
  chai.equal(res.length, 1);
@@ -22,7 +22,7 @@ describe('ListUsers', function(){
22
22
  it ('works in batch', (done) => {
23
23
  let requests = [
24
24
  new rqs.ListUsers(),
25
- new rqs.ListUsers()
25
+ new rqs.ListUsers({'returnProperties': true})
26
26
  ];
27
27
 
28
28
  env.client.send(new rqs.Batch(requests))
@@ -36,7 +36,7 @@ describe('ListUsers', function(){
36
36
 
37
37
  it ('return properties', (done) => {
38
38
  let req, req2, resp;
39
- req = new rqs.ListUsers();
39
+ req = new rqs.ListUsers({'returnProperties': true});
40
40
  env.client.send(req,((err,res) => {
41
41
  if(err) {
42
42
  chai.fail();
@@ -32,7 +32,7 @@ describe('ListUsers', function(){
32
32
 
33
33
  it ('return properties', (done) => {
34
34
  let req, req2, resp;
35
- req = new rqs.ListUsers();
35
+ req = new rqs.ListUsers({'returnProperties': true});
36
36
  env.client.send(req)
37
37
  .then((res) => {
38
38
  chai.equal(res.length, 1);
@@ -9,25 +9,24 @@ var rqs = recombee.requests;
9
9
 
10
10
  var env = require('./set-environment.js');
11
11
 
12
- describe('ListGroups', function(){
12
+ describe('RecommendItemsToItemSegment', function(){
13
13
  this.timeout(150000);
14
14
 
15
15
  before(function(done){
16
16
 
17
17
  env.setEnvironment()
18
18
  .then(()=> {
19
- setTimeout(done, 20000);
19
+ done();
20
20
  });
21
21
  });
22
22
  it ('works in batch', (done) => {
23
23
  let requests = [
24
- new rqs.ListGroups()
24
+ new rqs.RecommendItemsToItemSegment('segment_id','entity_id',5,{'scenario': 'scenario1','cascadeCreate': true})
25
25
  ];
26
26
 
27
27
  env.client.send(new rqs.Batch(requests))
28
28
  .then((responses) => {
29
- chai.equal(responses[0].code, 200);
30
- chai.deepEqual(['entity_id'], responses[0].json);
29
+ chai.equal(responses[0].code, 400);
31
30
  done();
32
31
  });
33
32
  });
@@ -9,27 +9,28 @@ var rqs = recombee.requests;
9
9
 
10
10
  var env = require('./set-environment.js');
11
11
 
12
- describe('ListGroups', function(){
12
+ describe('RecommendItemsToItemSegment', function(){
13
13
  this.timeout(150000);
14
14
 
15
15
  before(function(done){
16
16
 
17
17
  env.setEnvironment()
18
18
  .then(()=> {
19
- setTimeout(done, 20000);
19
+ done();
20
20
  });
21
21
  });
22
22
 
23
- it ('lists entities', (done) => {
23
+ it ('rejects request to scenario which is not set up', (done) => {
24
24
  let req, req2, resp;
25
- req = new rqs.ListGroups();
25
+ req = new rqs.RecommendItemsToItemSegment('segment_id','entity_id',5,{'scenario': 'scenario1','cascadeCreate': true});
26
26
  env.client.send(req,((err,res) => {
27
27
  if(err) {
28
- chai.fail();
28
+ chai.equal(err.name, 'ResponseError');
29
+ chai.equal(err.statusCode, 400);
30
+ done();
29
31
  }
30
32
  else {
31
- chai.deepEqual(['entity_id'], res);
32
- done();
33
+ chai.fail();
33
34
  }
34
35
  }));
35
36
  });
@@ -9,29 +9,20 @@ var rqs = recombee.requests;
9
9
 
10
10
  var env = require('./set-environment.js');
11
11
 
12
- describe('RemoveFromGroup', function(){
12
+ describe('RecommendItemsToItemSegment', function(){
13
13
  this.timeout(150000);
14
14
 
15
15
  before(function(done){
16
16
 
17
17
  env.setEnvironment()
18
18
  .then(()=> {
19
- setTimeout(done, 20000);
20
- });
21
- });
22
-
23
- it ('does not fail when removing item that is contained in the set', (done) => {
24
- let req, req2, resp;
25
- req = new rqs.RemoveFromGroup('entity_id','item','entity_id');
26
- env.client.send(req)
27
- .then((res) => {
28
19
  done();
29
- });
20
+ });
30
21
  });
31
22
 
32
- it ('fails when removing item that is not contained in the set', (done) => {
23
+ it ('rejects request to scenario which is not set up', (done) => {
33
24
  let req, req2, resp;
34
- req = new rqs.RemoveFromGroup('entity_id','item','not_contained');
25
+ req = new rqs.RecommendItemsToItemSegment('segment_id','entity_id',5,{'scenario': 'scenario1','cascadeCreate': true});
35
26
  env.client.send(req)
36
27
  .then((res) => {
37
28
  chai.fail();
@@ -39,7 +30,7 @@ describe('RemoveFromGroup', function(){
39
30
  })
40
31
  .catch((err) => {
41
32
  if (err instanceof recombee.errors.ResponseError) {
42
- chai.equal(err.statusCode, 404);
33
+ chai.equal(err.statusCode, 400);
43
34
  done();
44
35
  }
45
36
  throw err;
@@ -21,16 +21,14 @@ describe('RemoveFromSeries', function(){
21
21
  });
22
22
  it ('works in batch', (done) => {
23
23
  let requests = [
24
- new rqs.RemoveFromSeries('entity_id','item','entity_id',0),
25
- new rqs.RemoveFromSeries('entity_id','item','entity_id',1),
26
- new rqs.RemoveFromSeries('entity_id','item','not_contained',1)
24
+ new rqs.RemoveFromSeries('entity_id','item','entity_id'),
25
+ new rqs.RemoveFromSeries('entity_id','item','not_contained')
27
26
  ];
28
27
 
29
28
  env.client.send(new rqs.Batch(requests))
30
29
  .then((responses) => {
31
- chai.equal(responses[0].code, 404);
32
- chai.equal(responses[1].code, 200);
33
- chai.equal(responses[2].code, 404);
30
+ chai.equal(responses[0].code, 200);
31
+ chai.equal(responses[1].code, 404);
34
32
  done();
35
33
  });
36
34
  });
@@ -20,24 +20,9 @@ describe('RemoveFromSeries', function(){
20
20
  });
21
21
  });
22
22
 
23
- it ('fails when removing item which have different time', (done) => {
24
- let req, req2, resp;
25
- req = new rqs.RemoveFromSeries('entity_id','item','entity_id',0);
26
- env.client.send(req,((err,res) => {
27
- if(err) {
28
- chai.equal(err.name, 'ResponseError');
29
- chai.equal(err.statusCode, 404);
30
- done();
31
- }
32
- else {
33
- chai.fail();
34
- }
35
- }));
36
- });
37
-
38
23
  it ('does not fail when removing item that is contained in the set', (done) => {
39
24
  let req, req2, resp;
40
- req = new rqs.RemoveFromSeries('entity_id','item','entity_id',1);
25
+ req = new rqs.RemoveFromSeries('entity_id','item','entity_id');
41
26
  env.client.send(req,((err,res) => {
42
27
  if(err) {
43
28
  chai.fail();
@@ -50,7 +35,7 @@ describe('RemoveFromSeries', function(){
50
35
 
51
36
  it ('fails when removing item that is not contained in the set', (done) => {
52
37
  let req, req2, resp;
53
- req = new rqs.RemoveFromSeries('entity_id','item','not_contained',1);
38
+ req = new rqs.RemoveFromSeries('entity_id','item','not_contained');
54
39
  env.client.send(req,((err,res) => {
55
40
  if(err) {
56
41
  chai.equal(err.name, 'ResponseError');
@@ -20,26 +20,9 @@ describe('RemoveFromSeries', function(){
20
20
  });
21
21
  });
22
22
 
23
- it ('fails when removing item which have different time', (done) => {
24
- let req, req2, resp;
25
- req = new rqs.RemoveFromSeries('entity_id','item','entity_id',0);
26
- env.client.send(req)
27
- .then((res) => {
28
- chai.fail();
29
- done();
30
- })
31
- .catch((err) => {
32
- if (err instanceof recombee.errors.ResponseError) {
33
- chai.equal(err.statusCode, 404);
34
- done();
35
- }
36
- throw err;
37
- });
38
- });
39
-
40
23
  it ('does not fail when removing item that is contained in the set', (done) => {
41
24
  let req, req2, resp;
42
- req = new rqs.RemoveFromSeries('entity_id','item','entity_id',1);
25
+ req = new rqs.RemoveFromSeries('entity_id','item','entity_id');
43
26
  env.client.send(req)
44
27
  .then((res) => {
45
28
  done();
@@ -48,7 +31,7 @@ describe('RemoveFromSeries', function(){
48
31
 
49
32
  it ('fails when removing item that is not contained in the set', (done) => {
50
33
  let req, req2, resp;
51
- req = new rqs.RemoveFromSeries('entity_id','item','not_contained',1);
34
+ req = new rqs.RemoveFromSeries('entity_id','item','not_contained');
52
35
  env.client.send(req)
53
36
  .then((res) => {
54
37
  chai.fail();