require 'helper'

class TestBlitline < Test::Unit::TestCase

  should "raise exception if missing jobs" do
    assert_raises RuntimeError do
      blitline = Blitline.new
      blitline.post_jobs
    end
  end

  should "raise exception if job missing application id" do
    assert_raises RuntimeError do
      blitline = Blitline.new
      blitline.jobs << Blitline::Job.new("http://ww.foo.com")
      blitline.post_jobs
    end
  end

  should "raise exception if job missing image identifier" do
    assert_raises RuntimeError do
      blitline = Blitline.new
      job =  Blitline::Job.new("http://ww.foo.com")
      job.application_id = "foo"
      job.add_function("blue", nil)
      blitline.jobs << job
      blitline.post_jobs
    end
  end

  should "raise exception if job missing image identifier" do
    assert_raises RuntimeError do
      blitline = Blitline.new
      job =  Blitline::Job.new("http://ww.foo.com")
      job.application_id = "foo"
      job.add_function("blur", nil, "my_image")
      blitline.jobs << job
      blitline.post_jobs
    end
  end

  should "raise exception if job missing image identifier" do
    blitline = Blitline.new
    job =  Blitline::Job.new("http://ww.foo.com")
    job.add_function("blue", nil, "my_image")
    job.application_id = "foo"
    blitline.jobs << job

    results = blitline.post_jobs
    assert_not_nil results['results']
    assert_not_nil results['results'][0]
    assert_not_nil results['results'][0]['error']
  end

  should "properly jsonize the jsonizable_attributes" do
    job =  Blitline::Job.new("http://ww.foo.com")
    job.add_function("blue", nil, "my_image")
    job.application_id = "foo"
    job.add_jsonizable_attribute("pre_process", { "move_original" => { "s3_destination" => Blitline::S3Destination.new("my_key","my_bucket")}})
  
    results = Yajl::Encoder.encode(job)
    assert_not_nil results["pre_process"]
    assert results == '{"src":"http://ww.foo.com","functions":[{"name":"blue","save":{"image_identifier":"my_image"}}],"application_id":"foo","pre_process":{"move_original":{"s3_destination":{"key":"my_key","bucket":"my_bucket","headers":{}}}}}'
  end

end