require 'test_helper' module Workarea module Recommendation class UserActivityTest < TestCase setup :set_config setup :set_user_activity teardown :teardown_config def set_config @uamc = Workarea.config.max_user_activities Workarea.config.max_user_activities = 3 end def set_user_activity @user_activity = UserActivity.new( product_ids: [1, 2, 3], category_ids: [4, 5, 6], searches: ['one', 'two', 'three'] ) end def teardown_config Workarea.config.max_user_activities = @uamc end def test_adding_product_ids UserActivity.save_product('foo', '1') user_activity = UserActivity.find('foo') assert_equal(%w(1), user_activity.product_ids) assert(user_activity.created_at.present?) UserActivity.save_product('foo', '2') assert_equal(%w(2 1), user_activity.reload.product_ids) UserActivity.save_product('foo', '3') assert_equal(%w(3 2 1), user_activity.reload.product_ids) UserActivity.save_product('foo', '4') assert_equal(%w(4 3 2), user_activity.reload.product_ids) current_updated_at = user_activity.reload.updated_at UserActivity.save_product('foo', '5') refute_equal(current_updated_at, user_activity.reload.updated_at) end def test_adding_category_ids UserActivity.save_category('foo', '1') user_activity = UserActivity.find('foo') assert_equal(%w(1), user_activity.category_ids) assert(user_activity.created_at.present?) UserActivity.save_category('foo', '2') assert_equal(%w(2 1), user_activity.reload.category_ids) UserActivity.save_category('foo', '3') assert_equal(%w(3 2 1), user_activity.reload.category_ids) UserActivity.save_category('foo', '4') assert_equal(%w(4 3 2), user_activity.reload.category_ids) current_updated_at = user_activity.reload.updated_at UserActivity.save_category('foo', '5') refute_equal(current_updated_at, user_activity.reload.updated_at) end def test_adding_searches UserActivity.save_search('foo', 'shirts') user_activity = UserActivity.find('foo') assert_equal(%w(shirts), user_activity.searches) assert(user_activity.created_at.present?) UserActivity.save_search('foo', 'pants') assert_equal(%w(pants shirts), user_activity.reload.searches) UserActivity.save_search('foo', 'shoes') assert_equal(%w(shoes pants shirts), user_activity.reload.searches) UserActivity.save_search('foo', 'underwear') assert_equal(%w(underwear shoes pants), user_activity.reload.searches) current_updated_at = user_activity.reload.updated_at UserActivity.save_search('foo', 'jacket') refute_equal(current_updated_at, user_activity.reload.updated_at) end def test_id_typecasting id = BSON::ObjectId.new UserActivity.save_search(id, 'shirts') user_activity = UserActivity.find(id) assert_equal(%w(shirts), user_activity.searches) assert(user_activity.created_at.present?) end end end end