discourse/script/import_scripts/socialcast/test/test_socialcast_api.rb
Sam Saffron 30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00

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_intialize
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