def test_payload_with_cache_no_data(self):
    callback = MagicMock(return_value="computed")
    topic = PubSubVariableTopic("with_cache_no_data.*", callback, None)

    variable = "with_cache_no_data.foo"
    payload = topic.payload(True, name=variable)

    callback.assert_called_once_with("foo")
    self.assertEqual(payload, "computed")
    def test_payload_with_cache_no_data(self):
        callback = MagicMock(return_value="computed")
        topic = PubSubVariableTopic("with_cache_no_data.*", callback, None)

        variable = "with_cache_no_data.foo"
        payload = topic.payload(True, name=variable)

        callback.assert_called_once_with("foo")
        self.assertEqual(payload, "computed")
  def test_payload_with_cache_with_old_data(self):
    callback = MagicMock(return_value="computed")
    topic = PubSubVariableTopic("with_cache_with_old_data.*", callback, None)

    variable = "with_cache_with_old_data.foo"
    topic.data[variable] = self.cached_data
    topic.data[variable]["date"] = datetime.datetime.now() - datetime.timedelta(seconds=62)

    payload = topic.payload(True, name=variable)

    self.assertEqual(payload, "computed")
  def test_payload_with_cache_with_fresh_data(self):
    callback = MagicMock(return_value="computed")
    topic = PubSubVariableTopic("with_cache_with_fresh_data.*", callback, None)

    variable = "with_cache_with_fresh_data.foo"
    topic.data[variable] = self.cached_data

    payload = topic.payload(True, name=variable)

    self.assertFalse(callback.called)
    self.assertEqual(payload, "cached")
    def test_payload_with_cache_with_old_data(self):
        callback = MagicMock(return_value="computed")
        topic = PubSubVariableTopic("with_cache_with_old_data.*", callback, None)

        variable = "with_cache_with_old_data.foo"
        topic.data[variable] = self.cached_data
        topic.data[variable]["date"] = datetime.datetime.now() - datetime.timedelta(seconds=62)

        payload = topic.payload(True, name=variable)

        self.assertEqual(payload, "computed")
    def test_payload_with_cache_with_fresh_data(self):
        callback = MagicMock(return_value="computed")
        topic = PubSubVariableTopic("with_cache_with_fresh_data.*", callback, None)

        variable = "with_cache_with_fresh_data.foo"
        topic.data[variable] = self.cached_data

        payload = topic.payload(True, name=variable)

        self.assertFalse(callback.called)
        self.assertEqual(payload, "cached")