11import { describe , expect , it } from '@effect/vitest' ;
2- import { getCurrentScope , getIsolationScope } from '@sentry/core' ;
2+ import { getClient , getCurrentScope , getIsolationScope , SDK_VERSION } from '@sentry/core' ;
33import { Effect , Layer } from 'effect' ;
44import { afterEach , beforeEach , vi } from 'vitest' ;
55import * as sentryClient from '../src/index.client' ;
@@ -15,9 +15,9 @@ function getMockTransport() {
1515}
1616
1717describe . each ( [
18- [ 'client ', sentryClient . effectLayer ] ,
19- [ 'server ', sentryServer . effectLayer ] ,
20- ] ) ( 'effectLayer ($name )' , ( name , effectLayer ) => {
18+ [ { subSdkName : 'browser ', effectLayer : sentryClient . effectLayer } ] ,
19+ [ { subSdkName : 'node-light ', effectLayer : sentryServer . effectLayer } ] ,
20+ ] ) ( 'effectLayer ($subSdkName )' , ( { subSdkName , effectLayer } ) => {
2121 beforeEach ( ( ) => {
2222 getCurrentScope ( ) . clear ( ) ;
2323 getIsolationScope ( ) . clear ( ) ;
@@ -37,6 +37,28 @@ describe.each([
3737 expect ( Layer . isLayer ( layer ) ) . toBe ( true ) ;
3838 } ) ;
3939
40+ it . effect ( 'applies SDK metadata' , ( ) =>
41+ Effect . gen ( function * ( ) {
42+ yield * Effect . void ;
43+
44+ const client = getClient ( ) ;
45+ const metadata = client ?. getOptions ( ) . _metadata ?. sdk ;
46+
47+ expect ( metadata ?. name ) . toBe ( 'sentry.javascript.effect' ) ;
48+ expect ( metadata ?. packages ) . toEqual ( [
49+ { name : 'npm:@sentry/effect' , version : SDK_VERSION } ,
50+ { name : `npm:@sentry/${ subSdkName } ` , version : SDK_VERSION } ,
51+ ] ) ;
52+ } ) . pipe (
53+ Effect . provide (
54+ effectLayer ( {
55+ dsn : TEST_DSN ,
56+ transport : getMockTransport ( ) ,
57+ } ) ,
58+ ) ,
59+ ) ,
60+ ) ;
61+
4062 it . effect ( 'layer can be provided to an Effect program' , ( ) =>
4163 Effect . gen ( function * ( ) {
4264 const result = yield * Effect . succeed ( 'test-result' ) ;
0 commit comments