ext {
    junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.2'
    androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.1'
    androidxCoordinatorLayoutVersion = project.hasProperty('androidxCoordinatorLayoutVersion') ? rootProject.ext.androidxCoordinatorLayoutVersion : '1.3.0'
    androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.3.0'
    androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.7.0'
    playServicesAdsVersion = project.hasProperty('playServicesAdsVersion') ? rootProject.ext.playServicesAdsVersion : '24.9.+'
    userMessagingPlatformVersion = project.hasProperty('userMessagingPlatformVersion') ? rootProject.ext.userMessagingPlatformVersion : '4.0.0'
    androidxCoreKTXVersion = project.hasProperty('androidxCoreKTXVersion') ? rootProject.ext.androidxCoreKTXVersion : '1.15.0'
}

buildscript {
    ext.kotlin_version = project.hasProperty("kotlin_version") ? rootProject.ext.kotlin_version : '2.2.20'
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.13.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

android {
    namespace = "com.getcapacitor.community.admob.admob"
    compileSdk = project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 36
    defaultConfig {
        minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 24
        targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 36
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    lintOptions {
        abortOnError = false
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_21
        targetCompatibility JavaVersion.VERSION_21
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_21
    }
}

repositories {
    google()
        mavenCentral()

}

def testRunner = "1.7.0"

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation project(':capacitor-android')

    testImplementation 'org.mockito:mockito-inline:5.2.0'
    testImplementation 'org.mockito:mockito-junit-jupiter:5.15.2'
    testImplementation "org.junit.jupiter:junit-jupiter-api:5.11.4"
    // https://medium.com/google-developer-experts/pushing-the-limits-of-androidx-test-3776ff249c71
    testImplementation "androidx.test:core:$testRunner"
    testImplementation "androidx.test:runner:$testRunner"

    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.11.4"
    testImplementation "org.junit.jupiter:junit-jupiter-params:5.11.4"
    testRuntimeOnly "org.junit.vintage:junit-vintage-engine:5.11.4"
    testImplementation 'org.json:json:20231013'
    // We do not need expresso tests here... or?
    //    androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
    //    androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"

    implementation "com.google.android.gms:play-services-ads:$playServicesAdsVersion"
    implementation "com.google.android.ump:user-messaging-platform:$userMessagingPlatformVersion"
    implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
    implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion"
    implementation "androidx.core:core-ktx:$androidxCoreKTXVersion"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

// Allow to run unit test with  ./gradlew test
tasks.withType(Test) {
    useJUnitPlatform()
}
