/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation(project(':fineract-avro-schemas'))
    testImplementation(project(':fineract-client'))

    testImplementation 'org.springframework:spring-context'
    implementation 'org.springframework:spring-test'
    testImplementation 'org.springframework:spring-jms'

    testImplementation 'com.github.spotbugs:spotbugs-annotations'

    testImplementation 'com.squareup.retrofit2:retrofit:2.10.0'
    testImplementation 'commons-httpclient:commons-httpclient:3.1'
    testImplementation 'org.apache.commons:commons-lang3:3.14.0'
    testImplementation 'com.googlecode.json-simple:json-simple:1.1.1'
    testImplementation 'com.google.code.gson:gson:2.10.1'

    testImplementation 'io.cucumber:cucumber-java:7.16.1'
    testImplementation 'io.cucumber:cucumber-junit:7.16.1'
    testImplementation 'io.cucumber:cucumber-spring:7.16.1'

    testImplementation 'io.qameta.allure:allure-cucumber7-jvm:2.26.0'

    testImplementation 'org.assertj:assertj-core:3.25.3'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.2'
    testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2'

    testCompileOnly 'org.projectlombok:lombok:1.18.32'
    testAnnotationProcessor 'org.projectlombok:lombok:1.18.32'

    testImplementation "ch.qos.logback:logback-core:1.5.3"
    testImplementation "ch.qos.logback:logback-classic:1.5.3"

    testImplementation 'org.apache.activemq:activemq-client:6.1.0'
    testImplementation "org.apache.avro:avro:1.11.3"
    testImplementation "org.awaitility:awaitility:4.2.1"
    testImplementation 'io.github.classgraph:classgraph:4.8.168'

    testImplementation 'org.apache.commons:commons-collections4:4.4'
}

tasks.withType(JavaCompile).configureEach {
    options.compilerArgs.add("-parameters")
}
