# 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 = Nokogiri::XML.parse(<<~XML).root
				<vcard xmlns="urn:ietf:params:xml:ns:vcard-4.0">
				</vcard4>
			XML
			assert_equal(
				[:voicemail_ogm_tts, { locals: { fn: " 5 5 5. 1 2 3. 4 5 6 7" } }],
				CustomerOGM::TTS.new("+15551234567", vcard).to_render
			)
		end

		def test_to_render_fn
			vcard = Nokogiri::XML.parse(<<~XML).root
				<vcard xmlns="urn:ietf:params:xml:ns:vcard-4.0">
					<fn><text>name</text></fn>
				</vcard4>
			XML
			assert_equal(
				[:voicemail_ogm_tts, { locals: { fn: "name" } }],
				CustomerOGM::TTS.new("", vcard).to_render
			)
		end

		def test_to_render_nickname
			vcard = Nokogiri::XML.parse(<<~XML).root
				<vcard xmlns="urn:ietf:params:xml:ns:vcard-4.0">
					<nickname><text>name</text></nickname>
				</vcard4>
			XML
			assert_equal(
				[:voicemail_ogm_tts, { locals: { fn: "name" } }],
				CustomerOGM::TTS.new("", vcard).to_render
			)
		end
	end
end
