UNPKG

recombee-js-api-client-for-gatsby

Version:

Client-side js library for easy use of the Recombee recommendation API

126 lines (103 loc) 3.51 kB
function createClient() { return new recombee.ApiClient('tst-public-key', 'dIuCAwTeXn87m24HYE6uAIwSVzgEkTrQflrYlDBeIoeTIrhG1FVqj1v0h6u3nNSu'); } function testInteractionPromise(assert, interactionReq) { assert.timeout(1000); var done = assert.async(); var client = createClient(); client.send(interactionReq) .then(function(res) { assert.ok( res == "ok", "Test using Promise passed" ); done(); }) .catch(function(err) { assert.ok( false, "Sending interaction should not throw" ); done(); }) } function testInteractionCallback(assert, interactionReq) { assert.timeout(1000); var done = assert.async(); function callback(err, res) { if ( err ) { console.log(err); assert.ok( false, "Sending interaction should not throw" ); done(); } else { assert.ok( res == "ok", "Test using callback passed" ); done(); } } var client = createClient(); client.send(interactionReq, callback); } function testInteraction(assert, interactionReq) { testInteractionPromise(assert, interactionReq); testInteractionCallback(assert, interactionReq); } QUnit.test("AddBookmark test", function( assert ) { testInteraction(assert, new recombee.AddBookmark('user-1', 'item-1')); }); QUnit.test("AddCartAddition test", function( assert ) { testInteraction(assert, new recombee.AddCartAddition('user-1', 'item-1')); }); QUnit.test("AddDetailView test", function( assert ) { testInteraction(assert, new recombee.AddDetailView('user-1', 'item-1')); }); QUnit.test("AddPurchase test", function( assert ) { testInteraction(assert, new recombee.AddPurchase('user-1', 'item-1')); }); QUnit.test("AddRating test", function( assert ) { testInteraction(assert, new recombee.AddRating('user-1', 'item-1', -1)); }); QUnit.test("SetViewPortion test", function( assert ) { testInteraction(assert, new recombee.SetViewPortion('user-1', 'item-1', 0.1)); }); function addInteractions(client) { var i, j; for (i = 0; i < 50; i++) { for (j = 0; j < 50; j++) client.send(new recombee.AddPurchase('user-' + i, 'item-' + j)); } } function testRecommendationsPromise(assert, recommendationReq) { assert.timeout(3000); var done = assert.async(); var client = createClient(); client.send(recommendationReq) .then(function(res) { assert.equal( res.recomms.length, 5, "Recommendations using Promise passed" ); done(); }) .catch(function(err) { assert.ok( false, "Recommendation request should not throw"); done(); }) } function testRecommendationsCallback(assert, recommendationReq) { assert.timeout(3000); var done = assert.async(); function callback(err, res) { if ( err ) { console.log(err); assert.ok( false, "Recommendation request should not throw"); done(); } else { assert.equal( res.recomms.length, 5, "Recommendations using callback passed" ); done(); } } var client = createClient(); client.send(recommendationReq, callback); } function testRecommendations(assert, recommendationReq) { testRecommendationsPromise(assert, recommendationReq); testRecommendationsCallback(assert, recommendationReq); } QUnit.test("RecommendItemsToUser test", function( assert ) { testRecommendations(assert, new recombee.RecommendItemsToUser('user-1', 5)); }); QUnit.test("RecommendItemsToItem test", function( assert ) { testRecommendations(assert, new recombee.RecommendItemsToItem('item-1', 'user-1', 5)); });