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

84 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 { |k| assert (actual.keys.include? k), "#{k}" }
end
def debug(message, show = false)
if show || DEBUG
puts "### " + caller[0]
puts ""
puts message
puts ""
puts ""
end
end
end