require_relative "test_helper"

class UtilsTest < MiniTest::Unit::TestCase
  def setup
    Ipligence::Utils.stubs(:log)
  end

  def test_convert_dotted_to_long
    assert_equal(3232235521, Ipligence::Utils.convert_dotted_to_long("192.168.0.1"))
    assert_equal(514, Ipligence::Utils.convert_dotted_to_long("0.0.2.2"))
    assert_equal(0, Ipligence::Utils.convert_dotted_to_long("0.0.0.0"))
    assert_equal(4294967295, Ipligence::Utils.convert_dotted_to_long("255.255.255.255"))
  end

  def test_repopulate_db
    record = Ipligence::Record.create!(:ipblock_from => 3280108544, :ipblock_to => 3280109567)

    Ipligence::Utils.repopulate_db("#{File.dirname(__FILE__)}/fixtures/ipligence_test.csv")

    # Old records should be deleted
    assert_equal(false, Ipligence::Record.exists?(record.id))

    assert_equal(4, Ipligence::Record.count)

    ipligence = Ipligence::Record.first

    assert_equal(0, ipligence.ipblock_from)
    assert_equal(16777215, ipligence.ipblock_to)
    assert_equal(nil, ipligence.country_code)
    assert_equal(nil, ipligence.country_name)
    assert_equal(nil, ipligence.continent_code)
    assert_equal(nil, ipligence.continent_name)
    assert_equal(nil, ipligence.time_zone)
    assert_equal(nil, ipligence.region_code)
    assert_equal(nil, ipligence.region_name)
    assert_equal("NOT ALLOCATED", ipligence.owner)
    assert_equal(nil, ipligence.city_name)
    assert_equal(nil, ipligence.county_name)
    assert_equal(nil, ipligence.post_code)
    assert_equal(nil, ipligence.area_code)
    assert_equal(nil, ipligence.metro_code)
    assert_equal("0", ipligence.latitude)
    assert_equal("0", ipligence.longitude)


    ipligence = Ipligence::Record.last

    assert_equal(16778240, ipligence.ipblock_from)
    assert_equal(16778495, ipligence.ipblock_to)
    assert_equal("AU", ipligence.country_code)
    assert_equal("AUSTRALIA", ipligence.country_name)
    assert_equal("OC", ipligence.continent_code)
    assert_equal("OCEANIA", ipligence.continent_name)
    assert_equal("GMT+10", ipligence.time_zone)
    assert_equal("VIC", ipligence.region_code)
    assert_equal("VICTORIA", ipligence.region_name)
    assert_equal("LEVEL 5  530 COLLINS STREET", ipligence.owner)
    assert_equal("PRAHRAN", ipligence.city_name)
    assert_equal(nil, ipligence.county_name)
    assert_equal("3181", ipligence.post_code)
    assert_equal(nil, ipligence.area_code)
    assert_equal(nil, ipligence.metro_code)
    assert_equal("-37.85", ipligence.latitude)
    assert_equal("145", ipligence.longitude)
  end

end