require 'rake' require 'eeny-meeny/models/cookie' require 'eeny-meeny/models/experiment'

def write_cookie(experiment_id, variation_id: nil)

experiment = EenyMeeny::Experiment.find_by_id(experiment_id)
raise "Experiment with id '#{experiment_id}' not found!" if experiment.nil?
if variation_id.nil?
  EenyMeeny::Cookie.create_for_experiment(experiment, EenyMeeny.config.cookies)
else
  EenyMeeny::Cookie.create_for_experiment_variation(experiment, variation_id, EenyMeeny.config.cookies)
end

end

namespace :eeny_meeny do

namespace :cookie do
  desc 'Create a valid EenyMeeny experiment cookie'
  task :experiment, [:experiment_id] => :environment do |_, args|
    raise "Missing 'experiment_id' parameter" if (args['experiment_id'].nil? || args['experiment_id'].empty?)
    experiment_id = args['experiment_id'].to_sym
    cookie = write_cookie(experiment_id)
    puts cookie
  end

  desc 'Create a valid EenyMeeny experiment cookie for a specific variation'
  task :experiment_variation, [:experiment_id, :variation_id] => :environment do |_, args|
    raise "Missing 'experiment_id' parameter" if (args['experiment_id'].nil? || args['experiment_id'].empty?)
    raise "Missing 'variation_id' parameter" if (args['variation_id'].nil? || args['variation_id'].empty?)
    experiment_id = args['experiment_id'].to_sym
    variation_id = args['variation_id'].to_sym
    cookie = write_cookie(experiment_id, variation_id: variation_id)
    puts cookie
  end

  desc 'Create a valid EenyMeeny smoke test cookie'
  task :smoke_test, [:smoke_test_id, :version] => :environment do |_, args|
    raise "Missing 'smoke_test_id' parameter" if (args['smoke_test_id'].nil? || args['smoke_test_id'].empty?)
    smoke_test_id = args['smoke_test_id']
    version       = args['version'] || 1
    cookie = EenyMeeny::Cookie.create_for_smoke_test(smoke_test_id, **EenyMeeny.config.cookies.merge(version: version))
    puts cookie
  end
end

end