import { describe, test, expect } from "vitest";
import { ObservabilityResourceDetector } from "../lib/resource";

describe("ObservabilityResourceDetector", () => {
  test("should return custom resource attribute", () => {
    const detector = new ObservabilityResourceDetector({
      first: "first_value",
      second: "second_value",
    });
    const result = detector.detect();

    expect(result.attributes).not.toBeNull();
    expect(result.attributes).toHaveProperty("first");
    expect(result.attributes!["first"]).eq("first_value");
    expect(result.attributes).toHaveProperty("second");
    expect(result.attributes!["second"]).eq("second_value");
    // default
    expect(result.attributes).toHaveProperty("o11y.sdk.name");
    expect(result.attributes!["o11y.sdk.name"]).eq("@ogcio/o11y-sdk-node");
    expect(result.attributes).toHaveProperty("o11y.sdk.version");
  });

  test("should return default resource attribute", () => {
    const detector = new ObservabilityResourceDetector();
    const result = detector.detect();

    expect(result.attributes).not.toBeNull();
    // default
    expect(result.attributes).toHaveProperty("o11y.sdk.name");
    expect(result.attributes!["o11y.sdk.name"]).eq("@ogcio/o11y-sdk-node");
    expect(result.attributes).toHaveProperty("o11y.sdk.version");
  });
});
