# 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