You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: no_deprecated_functions.rs
    path of file: ./repos/oxc/crates/oxc_linter/src/rules/jest
    
    the code of the file until where you have to start completion: use oxc_ast::{ast::Expression, AstKind};
use oxc_diagnostics::{
    miette::{self, Diagnostic},
    thiserror::Error,
};
use oxc_macros::declare_oxc_lint;
use oxc_span::{GetSpan, Span};
use phf::{phf_map, Map};
use std::borrow::Cow;

use crate::{context::LintContext, fixer::Fix, rule::Rule};

#[derive(Debug, Error, Diagnostic)]
#[error("eslint-plugin-jest(no-deprecated-functions): Disallow use of deprecated functions")]
#[diagnostic(severity(warning), help("{0:?} has been deprecated in favor of {1:?}"))]
pub struct DeprecatedFunction(pub String, pub String, #[label] pub Span);

#[derive(Debug, Default, Clone)]
pub struct JestConfig {
    version: String,
}

#[derive(Debug, Default, Clone)]
pub struct NoDeprecatedFunctions(Box<NoDeprecatedFunctionsConfig>);

#[derive(Debug, Default, Clone)]
pub struct NoDeprecatedFunctionsConfig {
    jest: JestConfig,
}

impl std::ops::Deref for NoDeprecatedFunctions {
    type Target = NoDeprecatedFunctionsConfig;

    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

declare_oxc_lint!(
    /// ### What it does
    /// Over the years Jest has accrued some debt in the form of functions that have
    /// either been renamed for clarity, or replaced with more powerful APIs.
    ///
    /// This rule can also autofix a number of these deprecations for you.
    /// #### `jest.resetModuleRegistry`
    /// This function was renamed to `resetModules` in Jest 15 and removed in Jest 27.
    ///
    /// #### `jest.addMatchers`
    /// This function was replaced with `expect.extend` in Jest 17 and removed in Jest 27.
    ///
    /// #### `require.requireActual` & `require.requireMock`
    /// These functions were replaced in Jest 21 and remove
    
fn tests() {
    use crate::tester::Tester;

    let pass = vec![
        ("jest", Some(serde_json::json!([{ "jest": { "version": "14" } }]))),
        ("require('fs')", Some(serde_json::json!([{ "jest": { "version": "14" } }]))),
        ("jest.resetModuleRegistry", Some(serde_json::json!([{ "jest": { "version": "14" } }]))),
        ("require.requireActual", Some(serde_json::json!([{ "jest": { "version": "17" } }]))),
        ("jest.genMockFromModule", Some(serde_json::json!([{ "jest": { "version": "25" } }]))),
        ("jest.genMockFromModule", Some(serde_json::json!([{ "jest": { "version": "25.1.1" } }]))),
        ("require.requireActual", Some(serde_json::json!([{ "jest": { "version": "17.2" } }]))),
    ];

    let fail = vec![
        ("jest.resetModuleRegistry", None),
        // replace with `jest.resetModules` in Jest 15
        ("jest.resetModuleRegistry", Some(serde_json::json!([{ "jest": { "version": "16" }}]))),
        // replace with `jest.requireMock` in Jest 17.
        ("jest.addMatchers", Some(serde_json::json!([{ "jest": { "version": "18" }}]))),
        // replace with `jest.requireMock` in Jest 21.
        ("require.requireMock", Some(serde_json::json!([{ "jest": { "version": "22" }}]))),
        // replace with `jest.requireActual` in Jest 21.
        ("require.requireActual", Some(serde_json::json!([{ "jest": { "version": "22" }}]))),
        // replace with `jest.advanceTimersByTime` in Jest 22
        ("jest.runTimersToTime", Some(serde_json::json!([{ "jest": { "version": "23" }}]))),
        // replace with `jest.createMockFromModule` in Jest 26
        ("jest.genMockFromModule", Some(serde_json::json!([{ "jest": { "version": "27" }}]))),
    ];

    let fix = vec![
        (
            "jest.resetModuleRegistry()",
            "jest.resetModules()",
            Some(serde_json::json!([{ "jest": { "version": "21" } }])),
        ),
        (
            "jest.addMatchers",
            "expect.extend",
            Some(serde_json::json!([{ "jest": { "version": "24" } }])),
        ),
        (
            "jest.genMockFromModule",
            "jest.createMockFromModule",
            Some(serde_json::json!([{ "jest": { "version": "26" } }])),
        ),
        (
            "jest.genMockFromModule",
            "jest.createMockFromModule",
            Some(serde_json::json!([{ "jest": { "version": "26.0.0-next.11" } }])),
        ),
    ];

    Tester::new(NoDeprecatedFunctions::NAME, pass, fail)
        .with_jest_plugin(true)
        .expect_fix(fix)
        .test_and_snapshot();
}