module DataHelpers
  class Product
    def initialize(label_type:)
      @stamp = Time.stamp
      @label_type = label_type
    end

    def new_artwork(current_artwork_path)
      current_artwork = Support::Helpers::Image.new(current_artwork_path)

      artwork_1 = Support::Helpers::Artwork.new("flaming_t")
      artwork_2 = Support::Helpers::Artwork.new("3k_300_rgb")

      current_is_artwork_1 = current_artwork.matches?(artwork_1.large_cover)
      current_is_artwork_2 = current_artwork.matches?(artwork_2.large_cover)

      if current_is_artwork_1
        if current_is_artwork_2
          fail "Current artwork is similar to both images! This should never "\
            "happen. Check that the two artwork paths are different."
        else
          artwork_1
        end
      else
        artwork_2
      end
    end

    def fresh_digital_audio_product_data
      metadata = {
        imprint: "Imprint#{@stamp}",
        release_name: "Digital Audio #{@stamp}"
      }
      metadata.merge(yml_file[:digital_audio_metadata])
    end

    def fresh_music_video_product_data
      metadata = {
        release_name: "Music Video #{@stamp}"
      }
      metadata.merge(yml_file[:music_video_metadata])
    end

    def fresh_video_product_data
      metadata = {
        release_name: "Watir Video #{@stamp}",
        product_code: @stamp,
        primary_artist: "Primary Artist #{@stamp}",
        imprint: "Imprint #{@stamp}",
        release_date: Date.today + 10
      }
      metadata.merge(yml_file[:video_metadata])
    end

    # rubocop:disable Metrics/MethodLength
    def fresh_track_metadata
      [
        {
          track_number: "1",
          track_name: "First physical track",
          track_artist: "Aashka",
          track_length: "00:01:01",
          track_side: "1",
          track_disc: "1",
          track_isrc: "AB12C3456789"
        },
        {
          track_number: "2",
          track_name: "Second physical track",
          track_artist: "Isha",
          track_length: "00:01:01",
          track_side: "1",
          track_disc: "1",
          track_isrc: "AB12C3456789"
        }
      ]
    end
    # rubocop:enable Metrics/MethodLength

    private

    def yml_file
      file = File.join(
        Support::Paths.cucumber_root, "features", "yml", "product.yml"
      )
      YAML.load_file(file).deep_symbolize_keys
    end
  end
end
