diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 607838f4..1711ae4b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,17 +14,17 @@ jobs: checks: write contents: read steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 with: java-version: '17' distribution: 'temurin' cache: maven - run: mvn -B verify - - uses: madrapps/jacoco-report@v1.7.1 + - uses: madrapps/jacoco-report@v1.7.2 with: paths: ${{ github.workspace }}/target/site/jacoco/jacoco.xml token: ${{ secrets.GITHUB_TOKEN }} min-coverage-overall: 80 min-coverage-changed-files: 80 - - uses: scacap/action-surefire-report@v1.9.0 \ No newline at end of file + - uses: scacap/action-surefire-report@v1.9.1 \ No newline at end of file diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f6ad8c52..c00ed329 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -23,14 +23,14 @@ jobs: language: [ 'java' ] steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 with: java-version: '17' distribution: 'temurin' cache: maven - - uses: github/codeql-action/init@v3 + - uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} - - uses: github/codeql-action/autobuild@v3 - - uses: github/codeql-action/analyze@v3 + - uses: github/codeql-action/autobuild@v4 + - uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index dcad339d..ace69696 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -14,13 +14,13 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: actions/configure-pages@v5 - uses: actions/jekyll-build-pages@v1 with: source: ./ destination: ./_site - - uses: actions/upload-pages-artifact@v3 + - uses: actions/upload-pages-artifact@v4 deploy: environment: name: github-pages diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 69ce43c6..3ab20fb0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,8 +5,8 @@ jobs: publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-java@v4 + - uses: actions/checkout@v6 + - uses: actions/setup-java@v5 with: java-version: '17' distribution: 'temurin' @@ -28,7 +28,7 @@ jobs: OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} - - uses: release-drafter/release-drafter@v6 + - uses: release-drafter/release-drafter@v7 with: version: ${{ steps.version.outputs.version }} publish: true diff --git a/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java b/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java index d9349836..42ef0c29 100644 --- a/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java +++ b/core/src/main/java/org/matomo/java/tracking/MatomoRequest.java @@ -355,7 +355,7 @@ public class MatomoRequest { /** * The grand total for the ecommerce order (required when tracking an ecommerce order). */ - @TrackingParameter(name = "revenue") + @TrackingParameter(name = "revenue", min = 0) private Double ecommerceRevenue; /** @@ -433,7 +433,7 @@ public class MatomoRequest { /** * Some numeric value that represents the event value. */ - @TrackingParameter(name = "e_v") + @TrackingParameter(name = "e_v", min = 0) private Double eventValue; /** @@ -476,25 +476,25 @@ public class MatomoRequest { /** * The subtotal of the order; excludes shipping. */ - @TrackingParameter(name = "ec_st") + @TrackingParameter(name = "ec_st", min = 0) private Double ecommerceSubtotal; /** * Tax amount of the order. */ - @TrackingParameter(name = "ec_tx") + @TrackingParameter(name = "ec_tx", min = 0) private Double ecommerceTax; /** * Shipping cost of the order. */ - @TrackingParameter(name = "ec_sh") + @TrackingParameter(name = "ec_sh", min = 0) private Double ecommerceShippingCost; /** * Discount offered. */ - @TrackingParameter(name = "ec_dt") + @TrackingParameter(name = "ec_dt", min = 0) private Double ecommerceDiscount; /** diff --git a/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java b/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java index 8611d106..a4e87e5b 100644 --- a/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java +++ b/core/src/test/java/org/matomo/java/tracking/QueryCreatorTest.java @@ -550,4 +550,55 @@ void tracksEvent() { assertThat(query).isEqualTo("idsite=42&token_auth=876de1876fb2cda2816c362a61bfc712&rec=1&apiv=1&_id=112210f47de98115&e_c=Event+Category&e_a=Event+Action&e_n=Event+Name&e_v=23.456&send_image=0&rand=random-value"); } -} + @Test + void allowsZeroForEventValue() { + matomoRequestBuilder.eventName("Event Name") + .eventValue(0.0) + .eventAction("Event Action") + .eventCategory("Event Category"); + + whenCreatesQuery(); + + assertThat(query) + .isEqualTo("idsite=42&" + + "token_auth=876de1876fb2cda2816c362a61bfc712&" + + "rec=1&" + + "apiv=1&" + + "_id=112210f47de98115&" + + "e_c=Event+Category&" + + "e_a=Event+Action&" + + "e_n=Event+Name&" + + "e_v=0.0&" + + "send_image=0&" + + "rand=random-value" + ); + } + + @Test + void allowsZeroForEcommerceValues() { + matomoRequestBuilder + .ecommerceRevenue(0.0) + .ecommerceSubtotal(0.0) + .ecommerceTax(0.0) + .ecommerceShippingCost(0.0) + .ecommerceDiscount(0.0); + + whenCreatesQuery(); + + assertThat(query) + .isEqualTo("idsite=42&" + + "token_auth=876de1876fb2cda2816c362a61bfc712&" + + "rec=1&" + + "apiv=1&" + + "_id=112210f47de98115&" + + "revenue=0.0&" + + "ec_st=0.0&" + + "ec_tx=0.0&" + + "ec_sh=0.0&" + + "ec_dt=0.0&" + + "send_image=0&" + + "rand=random-value" + ); + } + +} \ No newline at end of file diff --git a/java11/pom.xml b/java11/pom.xml index 677f0c18..fb03eedf 100644 --- a/java11/pom.xml +++ b/java11/pom.xml @@ -48,7 +48,7 @@ org.wiremock wiremock - 3.11.0 + 3.13.2 test diff --git a/pom.xml b/pom.xml index d28931b9..f4c62914 100644 --- a/pom.xml +++ b/pom.xml @@ -63,7 +63,7 @@ 1.8 ${project.build.outputDirectory}/delombok 1.18.36 - 2.0.16 + 2.0.17 @@ -71,7 +71,7 @@ com.github.spotbugs spotbugs-annotations - 4.9.0 + 4.9.8 provided @@ -94,7 +94,7 @@ org.assertj assertj-core - 3.27.3 + 3.27.7 test @@ -117,7 +117,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.13.0 + 3.15.0 org.apache.maven.plugins @@ -127,12 +127,12 @@ org.apache.maven.plugins maven-clean-plugin - 3.4.0 + 3.5.0 org.apache.maven.plugins maven-deploy-plugin - 3.1.3 + 3.1.4 org.apache.maven.plugins @@ -147,7 +147,7 @@ org.apache.maven.plugins maven-resources-plugin - 3.3.1 + 3.5.0 org.apache.maven.plugins @@ -157,12 +157,12 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.2 + 3.5.5 org.apache.maven.plugins maven-release-plugin - 3.1.1 + 3.3.1 true false @@ -174,7 +174,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.2.7 + 3.2.8 sign-artifacts @@ -202,7 +202,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.5 @@ -290,7 +290,7 @@ org.jacoco jacoco-maven-plugin - 0.8.12 + 0.8.14 prepare-agent @@ -354,12 +354,12 @@ com.github.spotbugs spotbugs-maven-plugin - 4.8.6.6 + 4.9.8.2 org.owasp dependency-check-maven - 12.0.2 + 12.2.0 true diff --git a/servlet-javax/pom.xml b/servlet-javax/pom.xml index 26c169b5..7e76f0a5 100644 --- a/servlet-javax/pom.xml +++ b/servlet-javax/pom.xml @@ -53,7 +53,7 @@ org.eclipse.jetty jetty-servlet - 11.0.0 + 10.0.24 test