2024-MacC-M14-Medio / ShazamExtractor / Tests / ShazamExtractorTests / ConvertURLTest.swift
ConvertURLTest.swift
Raw
//
//  ConvertURLTest.swift
//  ShazamExtractor
//
//  Created by  on 11/1/24.
//

import Foundation
@testable import ShazamExtractor
import Testing

struct ConvertURLTest {
    
    @Test("Extract YouTube Video as External Audio URL",
          arguments: [
            "https://www.youtube.com/watch?v=4HZ8wh2MMpQ",
            "https://www.youtube.com/watch?v=YyY1T6IkOYg",
            "https://www.youtube.com/watch?v=Ngrety1u_Tk",
          ])
    func extract_youtube_video_as_external_audio_url(youtubeURLString: String) async throws {
        guard let externalURL = try await URLConverter(urlString: youtubeURLString).convert() else {
            throw SqooperError.urlConverterError
        }
        
        func isAudioURL(_ url: URL) -> Bool {
            guard let urlComponents = URLComponents(url: externalURL, resolvingAgainstBaseURL: false) else {
                return false
            }
            
            // URL   mime  
            if let mimeType = urlComponents.queryItems?.first(where: { $0.name == "mime" })?.value {
                return mimeType.hasPrefix("audio")
            }
            
            return false
        }
        
        #expect(isAudioURL(externalURL) == true)
    }

}