def test_raises_if_key_not_found(self):
        storage = InMemoryStorage()
        girl = Materializer(storage=storage)

        try:
            girl.get("test")
        except ValueError:
            err = sys.exc_info()[1]
            expect(err).to_have_an_error_message_of(
                'Key test not found in materials. Maybe you forgot to call "add_material" for this key?'
            )
        else:
            assert False, "Should not have gotten this far"

        try:
            girl.is_expired("test")
        except ValueError:
            err = sys.exc_info()[1]
            expect(err).to_have_an_error_message_of(
                'Key test not found in materials. Maybe you forgot to call "add_material" for this key?'
            )
        else:
            assert False, "Should not have gotten this far"

        try:
            girl.expire("test")
        except ValueError:
            err = sys.exc_info()[1]
            expect(err).to_have_an_error_message_of(
                'Key test not found in materials. Maybe you forgot to call "add_material" for this key?'
            )
        else:
            assert False, "Should not have gotten this far"
    def test_can_expire_materials(self):
        storage = InMemoryStorage()
        girl = Materializer(storage=storage)

        girl.add_material("test", lambda: "woot")

        girl.run()

        expect(storage.items).to_length(1)
        expect(storage.items["test"]).to_equal("woot")

        girl.expire("test")

        expect(girl.is_expired("test")).to_be_true()

        expect(storage.items).to_length(1)
        expect(storage.items.get("test")).to_be_null()
        expect(storage.items["_expired_test"]).to_equal("woot")