# frozen_string_literal: true

require "test_helper"
require "customer_ogm"

class CustomerOGMTest < Minitest::Test
	def test_for_url
		assert_kind_of(
			CustomerOGM::Media,
			CustomerOGM.for("https://example.com/test.mp3", -> {})
		)
	end

	def test_for_no_url
		assert_kind_of(
			CustomerOGM::TTS,
			CustomerOGM.for(nil, -> { EMPromise.resolve(nil) }).sync
		)
	end
	em :test_for_no_url

	class TTSTest < Minitest::Test
		def test_to_render_empty_vcard
			vcard = Blather::Stanza::Iq::Vcard::Vcard.new
			assert_equal(
				[:voicemail_ogm_tts, { locals: { fn: "a user of JMP.chat" } }],
				CustomerOGM::TTS.new(vcard).to_render
			)
		end

		def test_to_render_fn
			vcard = Blather::Stanza::Iq::Vcard::Vcard.new
			vcard["FN"] = "name"
			assert_equal(
				[:voicemail_ogm_tts, { locals: { fn: "name" } }],
				CustomerOGM::TTS.new(vcard).to_render
			)
		end

		def test_to_render_nickname
			vcard = Blather::Stanza::Iq::Vcard::Vcard.new
			vcard["NICKNAME"] = "name"
			assert_equal(
				[:voicemail_ogm_tts, { locals: { fn: "name" } }],
				CustomerOGM::TTS.new(vcard).to_render
			)
		end
	end
end
