discourse/script/import_scripts/socialcast/test/test_socialcast_api.rb

87 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'minitest/autorun'
require 'yaml'
require_relative '../socialcast_api.rb'
require_relative './test_data.rb'
class TestSocialcastApi < Minitest::Test
DEBUG = false
def initialize(args)
config = YAML::load_file(File.join(__dir__, 'config.ex.yml'))
@domain = config['domain']
@username = config['username']
@password = config['password']
@kb_id = config['kb_id']
@question_id = config['question_id']
super args
end
def setup
@socialcast = SocialcastApi.new @domain, @username, @password
end
def test_initialize
assert_equal @domain, @socialcast.domain
assert_equal @username, @socialcast.username
assert_equal @password, @socialcast.password
end
def test_base_url
assert_equal 'https://demo.socialcast.com/api', @socialcast.base_url
end
def test_headers
headers = @socialcast.headers
assert_equal 'Basic ZW1pbHlAc29jaWFsY2FzdC5jb206ZGVtbw==', headers[:Authorization]
assert_equal 'application/json', headers[:Accept]
end
def test_list_users
users = @socialcast.list_users
expected = JSON.parse(USERS)['users'].sort { |u| u['id'] }
assert_equal 15, users.size
assert_equal expected[0], users[0]
end
def test_list_users_next_page
users = @socialcast.list_users(page: 2)
assert_equal 0, users.size
end
def test_list_messages
messages = @socialcast.list_messages
expected = JSON.parse(MESSAGES)['messages'].sort { |m| m['id'] }
assert_equal 20, messages.size
check_keys expected[0], messages[0]
end
def test_messages_next_page
messages = @socialcast.list_messages(page: 2)
expected = JSON.parse(MESSAGES_PG_2)['messages'].sort { |m| m['id'] }
assert_equal 20, messages.size
check_keys expected[0], messages[0]
end
private
def check_keys(expected, actual)
msg = "### caller[0]:\nKey not found in actual keys: #{actual.keys}\n"
expected.keys.each do |k|
assert (actual.keys.include? k), "#{k}"
end
end
def debug(message, show = false)
if show || DEBUG
puts '### ' + caller[0]
puts ''
puts message
puts ''
puts ''
end
end
end