require "cucumber"
require "json_spec/cucumber"
require "logger"
require "dotenv/load"
require "minitest/spec"
require "aws-sdk"
require "json"
require "httparty"
require "hashie"

# constants for s3 asset upload testing
DEFAULT_REGION = "us-east-1".freeze
DEFAULT_FILE_EXT = ".jpg".freeze
DEFAULT_FILE_NAME = "jpg_file".freeze
RELATIVE_PATH = "../assets/".freeze
FULL_PATH = RELATIVE_PATH +
            DEFAULT_FILE_NAME +
            DEFAULT_FILE_EXT

WAV_FILENAME = "wav_file.wav".freeze
JPG_FILENAME = "jpg_file.jpg".freeze
TIF_FILENAME = "tif_file.tif".freeze
FLAC_FILENAME = "flac_file.flac".freeze
M4A_FILENAME = "m4a_file.m4a".freeze

# headers
OA_USER_SERVICE_HEADERS = { "Orchard-User-Id" => "oa:7123",
                            "Content-Type" => "application/json" }.freeze

ALW_USER_SERVICE_HEADERS = { "Orchard-User-Id" => "alw:16888",
                             "Grass-Account-Type" => "vendor",
                             "Grass-Account-Id" => "7123",
                             "Content-Type" => "application/json" }.freeze

NO_AUTH_HEADERS = { "Content-Type" => "application/json" }.freeze

PROJECT_ID = 3_701_813

# details for product_a
PRODUCT_A_ID = 2_063_063
PRODUCT_A_UPC = "191773312954".freeze
PRODUCT_A_TUID = 25_878_810

# details for product_b
PRODUCT_B_ID = 2_030_656
PRODUCT_B_UPC = "191773044961".freeze
PRODUCT_B_TUID = 25_569_537

# temporary track_unique_id used for get_stream_url testing. Should be
# changed once real track would be added to product 2024701 on prod
GET_STREAM_TUID = 11_345_435

class MinitestWorld
  include Minitest::Assertions
  attr_accessor :assertions

  def initialize
    self.assertions = 0
  end
end

World do
  world = MinitestWorld.new
  world.extend(AssetManagementGet)
  world.extend(AssetManagementDelete)
  world.extend(AssetManagementPost)
  world.extend(AwsS3)
  world
end

log_file = File.open "#{Dir.pwd}/log.txt", "a+"
LOG = Logger.new log_file, "monthly"
LOG.datetime_format = "%Y-%m-%d %H:%M:%S"
