1import {
2  withUserTrackingPermission,
3  DEFAULT_NSUserTrackingUsageDescription,
4} from '../withTrackingTransparency';
5
6const configWithDefaultNSUserTrackingUsageDescription = {
7  slug: 'testSlug',
8  name: 'testName',
9  ios: {
10    infoPlist: {
11      NSUserTrackingUsageDescription: DEFAULT_NSUserTrackingUsageDescription,
12    },
13  },
14};
15
16const configWithCustomNSUserTrackingUsageDescription = {
17  slug: 'testSlug',
18  name: 'testName',
19  ios: {
20    infoPlist: {
21      NSUserTrackingUsageDescription: 'my custom string',
22    },
23  },
24};
25
26describe('Expo Tracking Transparency', () => {
27  it('sets default `NSUserTrackingUsageDescription` permission message in the config', () => {
28    expect(
29      withUserTrackingPermission({
30        slug: 'testSlug',
31        name: 'testName',
32      })
33    ).toMatchObject(configWithDefaultNSUserTrackingUsageDescription);
34  });
35
36  it('does not add duplicate `NSUserTrackingUsageDescription` permission message in the config', () => {
37    expect(
38      withUserTrackingPermission({
39        slug: 'testSlug',
40        name: 'testName',
41        ios: {
42          infoPlist: {
43            NSUserTrackingUsageDescription: DEFAULT_NSUserTrackingUsageDescription,
44          },
45        },
46      })
47    ).toMatchObject(configWithDefaultNSUserTrackingUsageDescription);
48  });
49
50  it('overwrites existing `NSUserTrackingUsageDescription` permission message in the config', () => {
51    expect(
52      withUserTrackingPermission(
53        {
54          slug: 'testSlug',
55          name: 'testName',
56          ios: {
57            infoPlist: {
58              NSUserTrackingUsageDescription: DEFAULT_NSUserTrackingUsageDescription,
59            },
60          },
61        },
62        {
63          userTrackingPermission: 'my custom string',
64        }
65      )
66    ).toMatchObject(configWithCustomNSUserTrackingUsageDescription);
67  });
68});
69