farmfe_plugin_resolve 2.0.1

Resolve plugin of farm.
use std::sync::Arc;

use farmfe_core::{context::CompilationContext, plugin::ResolveKind};
use farmfe_plugin_resolve::resolver::{ResolveOptions, Resolver};
use farmfe_testing_helpers::fixture;

#[test]
fn resolve_side_effects_entry() {
  fixture("tests/fixtures/side_effects/index.ts", |file, _| {
    let resolver = Resolver::new();
    let cwd = file.parent().unwrap().to_path_buf();

    let resolved = resolver.resolve(
      "array",
      cwd.clone(),
      &ResolveKind::Entry(String::new()),
      &ResolveOptions::default(),
      &Arc::new(CompilationContext::default()),
    );
    assert!(resolved.is_some());
    let resolved = resolved.unwrap();
    assert_eq!(
      resolved.resolved_path,
      cwd
        .join("node_modules")
        .join("array")
        .join("index.js")
        .to_string_lossy()
        .to_string()
    );
    assert_eq!(resolved.side_effects, false);
  });
}

#[test]
fn resolve_side_effects_subpath() {
  fixture!("tests/fixtures/side_effects/index.ts", |file, _| {
    let resolver = Resolver::new();
    let cwd = file.parent().unwrap().to_path_buf();

    let resolved = resolver.resolve(
      "array/index.css",
      cwd.clone(),
      &ResolveKind::Entry(String::new()),
      &ResolveOptions::default(),
      &Arc::new(CompilationContext::default()),
    );
    assert!(resolved.is_some());
    let resolved = resolved.unwrap();
    assert_eq!(
      resolved.resolved_path,
      cwd
        .join("node_modules")
        .join("array")
        .join("index.css")
        .to_string_lossy()
        .to_string()
    );
    assert_eq!(resolved.side_effects, true);
  });
}

#[test]
fn resolve_side_effects_bool() {
  fixture!("tests/fixtures/side_effects/index.ts", |file, _| {
    let resolver = Resolver::new();
    let cwd = file.parent().unwrap().to_path_buf();

    let resolved = resolver.resolve(
      "bool",
      cwd.clone(),
      &ResolveKind::Entry(String::new()),
      &ResolveOptions::default(),
      &Arc::new(CompilationContext::default()),
    );
    assert!(resolved.is_some());
    let resolved = resolved.unwrap();
    assert_eq!(
      resolved.resolved_path,
      cwd
        .join("node_modules")
        .join("bool")
        .join("index.js")
        .to_string_lossy()
        .to_string()
    );
    assert_eq!(resolved.side_effects, true);
  });
}