old_contents: import pytest
  import json
  
  import util.location
  
  
  @pytest.fixture
  def urllib_req(mocker):
      util.location.reset()
      return mocker.patch("util.location.urllib.request")
  
  
  @pytest.fixture
  def primaryLocation():
      return {
          "country": "Middle Earth",
          "longitude": "10.0",
          "latitude": "20.5",
          "ip": "127.0.0.1",
      }
  
  
  @pytest.fixture
  def secondaryLocation():
      return {
          "country_name": "Rivia",
          "longitude": "-10.0",
          "latitude": "-23",
          "ip": "127.0.0.6",
      }
  
  
  def test_primary_provider(urllib_req, primaryLocation):
      urllib_req.urlopen.return_value.read.return_value = json.dumps(primaryLocation)
  
      assert util.location.country() == primaryLocation["country"]
      assert util.location.coordinates() == (
          primaryLocation["latitude"],
          primaryLocation["longitude"],
      )
      assert util.location.public_ip() == primaryLocation["ip"]
  
  
  def test_secondary_provider(mocker, urllib_req, secondaryLocation):
      urlopen = mocker.MagicMock()
      urlopen.read.return_value = json.dumps(secondaryLocation)
      urllib_req.urlopen.side_effect = [RuntimeError(), urlopen]
  
      assert util.location.country() == secondaryLocation["country_name"]
      assert util.location.coordinates() == (
          secondaryLocation["latitude"],
          secondaryLocation["longitude"],
      )
      assert util.location.public_ip() == secondaryLocation["ip"]
  
  
  # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
  
new_contents: import pytest
  import json
  
  import util.location
  
  
  @pytest.fixture
  def urllib_req(mocker):
      util.location.reset()
      return mocker.patch("util.location.urllib.request")
  
  
  @pytest.fixture
  def secondaryLocation():
      return {
          "country": "Middle Earth",
          "longitude": "10.0",
          "latitude": "20.5",
          "ip": "127.0.0.1",
      }
  
  
  @pytest.fixture
  def primaryLocation():
      return {
          "country_name": "Rivia",
          "longitude": "-10.0",
          "latitude": "-23",
          "ip": "127.0.0.6",
      }
  
  
  def test_primary_provider(urllib_req, primaryLocation):
      urllib_req.urlopen.return_value.read.return_value = json.dumps(primaryLocation)
  
      assert util.location.country() == primaryLocation["country_name"]
      assert util.location.coordinates() == (
          primaryLocation["latitude"],
          primaryLocation["longitude"],
      )
      assert util.location.public_ip() == primaryLocation["ip"]
  
  
  def test_secondary_provider(mocker, urllib_req, secondaryLocation):
      urlopen = mocker.MagicMock()
      urlopen.read.return_value = json.dumps(secondaryLocation)
      urllib_req.urlopen.side_effect = [RuntimeError(), urlopen]
  
      assert util.location.country() == secondaryLocation["country"]
      assert util.location.coordinates() == (
          secondaryLocation["latitude"],
          secondaryLocation["longitude"],
      )
      assert util.location.public_ip() == secondaryLocation["ip"]
  
  
  # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
  
subject: fix location tests