blob: a58cc92f5987afc5db84f7982c8f756c4020ba43 [file] [log] [blame]
require 'predictionio'
require 'spec_helper'
client = PredictionIO::Client.new("foobar", 10, "http://fakeapi.com:8000")
describe PredictionIO do
describe 'Users API' do
it 'create_user should create a user' do
response = client.create_user("foo")
expect(response).to_not raise_error
end
it 'get_user should get a user' do
response = client.get_user("foo")
expect(response).to eq({"pio_uid" => "foo"})
end
it 'delete_user should delete a user' do
response = client.delete_user("foo")
expect(response).to_not raise_error
end
end
describe 'Items API' do
it 'create_item should create a item' do
response = client.create_item("bar", ["dead", "beef"])
expect(response).to_not raise_error
end
it 'get_item should get a item' do
response = client.get_item("bar")
expect(response).to eq({"pio_iid" => "bar", "pio_itypes" => ["dead", "beef"]})
end
it 'delete_item should delete a item' do
response = client.delete_item("bar")
expect(response).to_not raise_error
end
end
describe 'U2I API' do
it 'record_action_on_item should record an action' do
client.identify("foo")
response = client.record_action_on_item("view", "bar")
expect(response).to_not raise_error
end
end
describe 'Item Recommendation API' do
it 'provides recommendations to a user without attributes' do
client.identify("foo")
response = client.get_itemrec_top_n("itemrec-engine", 10)
expect(response).to eq(["x", "y", "z"])
end
it 'provides recommendations to a user with attributes' do
client.identify("foo")
response = client.get_itemrec_top_n("itemrec-engine", 10, 'pio_attributes' => 'name')
expect(response).to eq([
{"pio_iid" => "x", "name" => "a"},
{"pio_iid" => "y", "name" => "b"},
{"pio_iid" => "z", "name" => "c"}])
end
end
describe 'Item Similarity API' do
it 'provides similarities to an item without attributes' do
response = client.get_itemsim_top_n("itemsim-engine", "bar", 10)
expect(response).to eq(["x", "y", "z"])
end
it 'provides similarities to an item with attributes' do
response = client.get_itemsim_top_n("itemsim-engine", "bar", 10, 'pio_attributes' => 'name')
expect(response).to eq([
{"pio_iid" => "x", "name" => "a"},
{"pio_iid" => "y", "name" => "b"},
{"pio_iid" => "z", "name" => "c"}])
end
end
end