Newer
Older
dmpopidor / test / unit / concerns / json_link_validator_test.rb
require 'test_helper'

class JSONLinkValidatorTest < ActiveSupport::TestCase
  include JSONLinkValidator

  test 'returns nil for a non-string value passed' do
    assert_nil(parse_links(nil))
    assert_nil(parse_links(true))
    assert_nil(parse_links(false))
    assert_nil(parse_links([]))
    assert_nil(parse_links({}))
    assert_nil(parse_links(1))
    assert_nil(parse_links(1.1))
  end

  test 'returns nil for a non-array object parsed' do
    assert_nil(parse_links("string"))
    assert_nil(parse_links("1"))
    assert_nil(parse_links("{}"))
    assert_nil(parse_links("true"))
    assert_nil(parse_links("false"))
    assert_nil(parse_links("null"))
    assert(parse_links("[]"))
  end 

  test 'returns nil for a non-hash item within the array parsed' do
    assert_nil(parse_links("[{}, \"\"]"))
  end

  test 'returns nil for a non-valid link key at array item' do
    assert_nil(parse_links("[{\"link\": \"\", \"text\": \"\"}, {}]"))
  end

  test 'returns nil for a non-valid text key at array item' do
    assert_nil(parse_links("[{\"link\": \"\", \"text\": \"\"}, {\"link\": \"\"}]"))
  end

  test 'returns nil for a non-string value for link key at array item' do
    assert_nil(parse_links("[{\"link\": \"\", \"text\": \"\"}, {\"link\": [], \"text\": \"\"}]"))
  end

  test 'returns nil for a non-string value for a text key at array item' do
    assert_nil(parse_links("[{\"link\": \"\", \"text\": \"\"}, {\"link\": \"\", \"text\": []}]"))
  end

  test 'returns Array for a valid array of link objects' do
    assert_equal([{ "link" => "", "text" => ""}, { "link" => "", "text" => ""}],
      parse_links("[{\"link\": \"\", \"text\": \"\"}, {\"link\": \"\", \"text\": \"\"}]"))
  end
end