name: Tests
on:
  pull_request:
  push:
    branches:
      - main
      - release/**

jobs:
  sdk_tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Checkout laconicd
        uses: actions/checkout@v3
        with:
          path: "./laconicd/"
          repository: cerc-io/laconicd
          fetch-depth: 0
          ref: main
      - name: Environment
        run: ls -tlh && env
      - name: build containers scripts
        working-directory: laconicd/tests/sdk_tests
        run: ./build-laconicd-container.sh
      - name: build test-container
        run: docker build -t cerc-io/laconic-sdk-tester:local-test -f laconicd/tests/sdk_tests/Dockerfile-sdk .
      - name: start containers
        working-directory: laconicd/tests/sdk_tests
        run: docker compose up -d
      - name: run basic tests
        working-directory: laconicd/tests/sdk_tests
        run: |
          laconicd_key=$( docker compose exec laconicd echo y | docker compose exec laconicd laconicd keys export mykey --unarmored-hex --unsafe )
          cosmos_chain_id=laconic_9000-1
          laconicd_rest_endpoint=http://laconicd:1317
          laconicd_gql_endpoint=http://laconicd:9473/api
          sleep 30s
          docker compose exec sdk-test-runner sh -c "COSMOS_CHAIN_ID=${cosmos_chain_id} LACONICD_REST_ENDPOINT=${laconicd_rest_endpoint} LACONICD_GQL_ENDPOINT=${laconicd_gql_endpoint} PRIVATE_KEY=${laconicd_key} yarn test"
      - name: stop containers
        working-directory: laconicd/tests/sdk_tests
        run: docker compose down
      - name: start auction containers
        working-directory: laconicd/tests/sdk_tests
        run: docker compose -f docker-compose-auctions.yml up -d
      - name: run auction tests
        working-directory: laconicd/tests/sdk_tests
        run: |
          laconicd_key=$( docker compose exec laconicd echo y | docker compose exec laconicd laconicd keys export mykey --unarmored-hex --unsafe )
          cosmos_chain_id=laconic_9000-1
          laconicd_rest_endpoint=http://laconicd:1317
          laconicd_gql_endpoint=http://laconicd:9473/api
          sleep 30s
          docker compose exec sdk-test-runner sh -c "COSMOS_CHAIN_ID=${cosmos_chain_id} LACONICD_REST_ENDPOINT=${laconicd_rest_endpoint} LACONICD_GQL_ENDPOINT=${laconicd_gql_endpoint} PRIVATE_KEY=${laconicd_key} yarn test:auctions"
      - name: start containers
        working-directory: laconicd/tests/sdk_tests
        run: docker compose down
      - name: start containers
        working-directory: laconicd/tests/sdk_tests
        run: docker compose -f docker-compose-nameservice.yml up -d
      - name: run nameservice expiry tests
        working-directory: laconicd/tests/sdk_tests
        run: |
          laconicd_key=$( docker compose exec laconicd echo y | docker compose exec laconicd laconicd keys export mykey --unarmored-hex --unsafe )
          cosmos_chain_id=laconic_9000-1
          laconicd_rest_endpoint=http://laconicd:1317
          laconicd_gql_endpoint=http://laconicd:9473/api
          sleep 30s
          docker compose exec sdk-test-runner sh -c "COSMOS_CHAIN_ID=${cosmos_chain_id} LACONICD_REST_ENDPOINT=${laconicd_rest_endpoint} LACONICD_GQL_ENDPOINT=${laconicd_gql_endpoint} PRIVATE_KEY=${laconicd_key} yarn test:nameservice-expiry"
      - name: stop nameservice containers
        working-directory: laconicd/tests/sdk_tests
        run: docker compose down