version: '3.4'

services:
  rabbitmq-test:
    image: rabbitmq:3-management-alpine

  basket-data-test:
    image: redis:alpine

  sql-data-test:
    image: microsoft/mssql-server-linux:2017-latest

  nosql-data-test:
    image: mongo

  identity-api-test:
    image: ${REGISTRY:-eshop}/identity-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Identity/Identity.API/Dockerfile
    depends_on:
      - sql-data-test

  basket-api-test:
    image: ${REGISTRY:-eshop}/basket-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Basket/Basket.API/Dockerfile
      target: functionaltest
    depends_on:
      - basket-data-test
      - identity-api-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests

  basket-api-unit-test:
    image: ${REGISTRY:-eshop}/basket-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Basket/Basket.API/Dockerfile
      target: unittest
    depends_on:
      - basket-data-test
      - identity-api-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests

  catalog-api-test:
    image: ${REGISTRY:-eshop}/catalog-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Catalog/Catalog.API/Dockerfile
      target: functionaltest
    depends_on:
      - sql-data-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests

  catalog-api-unit-test:
    image: ${REGISTRY:-eshop}/catalog-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Catalog/Catalog.API/Dockerfile
      target: unittest
    depends_on:
      - sql-data-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests

  ordering-api-test:
    image: ${REGISTRY:-eshop}/ordering-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Ordering/Ordering.API/Dockerfile
      target: functionaltest
    depends_on:
      - sql-data-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests

  ordering-api-unit-test:
    image: ${REGISTRY:-eshop}/ordering-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Ordering/Ordering.API/Dockerfile
      target: unittest
    depends_on:
      - sql-data-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests  

  marketing-api-test:
    image: ${REGISTRY:-eshop}/marketing-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Marketing/Marketing.API/Dockerfile
      target: functionaltest
    depends_on:
      - sql-data-test
      - nosql-data-test
      - identity-api-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests

  payment-api-test:
    image: ${REGISTRY:-eshop}/payment-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Payment/Payment.API/Dockerfile
    depends_on:
      - rabbitmq-test

  locations-api-test:
    image: ${REGISTRY:-eshop}/locations-api-test:${TAG:-latest}
    build:
      context: .
      dockerfile: src/Services/Location/Locations.API/Dockerfile
      target: functionaltest
    depends_on:
      - nosql-data-test
      - rabbitmq-test
    volumes: 
      - ${BUILD_ARTIFACTSTAGINGDIRECTORY:-./tests-results/}:/tests