Skip to content

Commit b263759

Browse files
committed
test: make sure both config works
1 parent baf4c89 commit b263759

File tree

2 files changed

+163
-55
lines changed

2 files changed

+163
-55
lines changed
Lines changed: 125 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,141 @@
11
import { describe, expect, it } from '@jest/globals';
22
import { setFireBaseMessagingAndroidManifest } from '../src/android/setupFirebaseNotifationIcon';
33
import { ExpoConfig } from '@expo/config-types';
4-
import expoConfigExample from './fixtures/expo-config-example';
4+
import {
5+
expoConfigExample,
6+
expoNotificationsConfigExample,
7+
expoNotificationsConfigWithoutColorExample,
8+
expoNotificationsConfigWithoutPluginExample,
9+
} from './fixtures/expo-config-example';
510
import manifestApplicationExample from './fixtures/application-example';
611
import { ManifestApplication } from '@expo/config-plugins/build/android/Manifest';
712

813
describe('Config Plugin Android Tests', function () {
9-
it('applies changes to app/src/main/AndroidManifest.xml with color', async function () {
10-
const config: ExpoConfig = JSON.parse(JSON.stringify(expoConfigExample));
11-
const manifestApplication: ManifestApplication = JSON.parse(
12-
JSON.stringify(manifestApplicationExample),
13-
);
14-
setFireBaseMessagingAndroidManifest(config, manifestApplication);
15-
expect(manifestApplication['meta-data']).toContainEqual({
16-
$: {
17-
'android:name': 'com.google.firebase.messaging.default_notification_icon',
18-
'android:resource': '@drawable/notification_icon',
19-
},
14+
describe('notification config', () => {
15+
it('applies changes to app/src/main/AndroidManifest.xml with color', async function () {
16+
const config: ExpoConfig = JSON.parse(JSON.stringify(expoConfigExample));
17+
const manifestApplication: ManifestApplication = JSON.parse(
18+
JSON.stringify(manifestApplicationExample),
19+
);
20+
setFireBaseMessagingAndroidManifest(config, manifestApplication);
21+
expect(manifestApplication['meta-data']).toContainEqual({
22+
$: {
23+
'android:name': 'com.google.firebase.messaging.default_notification_icon',
24+
'android:resource': '@drawable/notification_icon',
25+
},
26+
});
27+
expect(manifestApplication['meta-data']).toContainEqual({
28+
$: {
29+
'android:name': 'com.google.firebase.messaging.default_notification_color',
30+
'android:resource': '@color/notification_icon_color',
31+
'tools:replace': 'android:resource',
32+
},
33+
});
2034
});
21-
expect(manifestApplication['meta-data']).toContainEqual({
22-
$: {
23-
'android:name': 'com.google.firebase.messaging.default_notification_color',
24-
'android:resource': '@color/notification_icon_color',
25-
'tools:replace': 'android:resource',
26-
},
35+
36+
it('applies changes to app/src/main/AndroidManifest.xml without color', async function () {
37+
const config = JSON.parse(JSON.stringify(expoConfigExample));
38+
const manifestApplication: ManifestApplication = JSON.parse(
39+
JSON.stringify(manifestApplicationExample),
40+
);
41+
config.notification!.color = undefined;
42+
setFireBaseMessagingAndroidManifest(config, manifestApplication);
43+
expect(manifestApplication['meta-data']).toContainEqual({
44+
$: {
45+
'android:name': 'com.google.firebase.messaging.default_notification_icon',
46+
'android:resource': '@drawable/notification_icon',
47+
},
48+
});
49+
expect(manifestApplication['meta-data']).not.toContainEqual({
50+
$: {
51+
'android:name': 'com.google.firebase.messaging.default_notification_icon',
52+
'android:resource': '@drawable/notification_icon_color',
53+
'tools:replace': 'android:resource',
54+
},
55+
});
56+
});
57+
58+
it('applies changes to app/src/main/AndroidManifest.xml without notification', async function () {
59+
// eslint-disable-next-line no-console
60+
const warnOrig = console.warn;
61+
let called = false;
62+
// eslint-disable-next-line no-console
63+
console.warn = (_: string) => {
64+
called = true;
65+
};
66+
const config: ExpoConfig = JSON.parse(JSON.stringify(expoConfigExample));
67+
const manifestApplication: ManifestApplication = JSON.parse(
68+
JSON.stringify(manifestApplicationExample),
69+
);
70+
config.notification = undefined;
71+
setFireBaseMessagingAndroidManifest(config, manifestApplication);
72+
expect(called).toBeTruthy();
73+
// eslint-disable-next-line no-console
74+
console.warn = warnOrig;
2775
});
2876
});
2977

30-
it('applies changes to app/src/main/AndroidManifest.xml without color', async function () {
31-
const config = JSON.parse(JSON.stringify(expoConfigExample));
32-
const manifestApplication: ManifestApplication = JSON.parse(
33-
JSON.stringify(manifestApplicationExample),
34-
);
35-
config.notification!.color = undefined;
36-
setFireBaseMessagingAndroidManifest(config, manifestApplication);
37-
expect(manifestApplication['meta-data']).toContainEqual({
38-
$: {
39-
'android:name': 'com.google.firebase.messaging.default_notification_icon',
40-
'android:resource': '@drawable/notification_icon',
41-
},
78+
describe('expo-notifications config', () => {
79+
it('applies changes to app/src/main/AndroidManifest.xml with color', async function () {
80+
const config: ExpoConfig = JSON.parse(JSON.stringify(expoNotificationsConfigExample));
81+
const manifestApplication: ManifestApplication = JSON.parse(
82+
JSON.stringify(manifestApplicationExample),
83+
);
84+
setFireBaseMessagingAndroidManifest(config, manifestApplication);
85+
expect(manifestApplication['meta-data']).toContainEqual({
86+
$: {
87+
'android:name': 'com.google.firebase.messaging.default_notification_icon',
88+
'android:resource': '@drawable/notification_icon',
89+
},
90+
});
91+
expect(manifestApplication['meta-data']).toContainEqual({
92+
$: {
93+
'android:name': 'com.google.firebase.messaging.default_notification_color',
94+
'android:resource': '@color/notification_icon_color',
95+
'tools:replace': 'android:resource',
96+
},
97+
});
4298
});
43-
expect(manifestApplication['meta-data']).not.toContainEqual({
44-
$: {
45-
'android:name': 'com.google.firebase.messaging.default_notification_icon',
46-
'android:resource': '@drawable/notification_icon_color',
47-
'tools:replace': 'android:resource',
48-
},
99+
100+
it('applies changes to app/src/main/AndroidManifest.xml without color', async function () {
101+
const config = JSON.parse(JSON.stringify(expoNotificationsConfigWithoutColorExample));
102+
const manifestApplication: ManifestApplication = JSON.parse(
103+
JSON.stringify(manifestApplicationExample),
104+
);
105+
setFireBaseMessagingAndroidManifest(config, manifestApplication);
106+
expect(manifestApplication['meta-data']).toContainEqual({
107+
$: {
108+
'android:name': 'com.google.firebase.messaging.default_notification_icon',
109+
'android:resource': '@drawable/notification_icon',
110+
},
111+
});
112+
expect(manifestApplication['meta-data']).not.toContainEqual({
113+
$: {
114+
'android:name': 'com.google.firebase.messaging.default_notification_icon',
115+
'android:resource': '@drawable/notification_icon_color',
116+
'tools:replace': 'android:resource',
117+
},
118+
});
49119
});
50-
});
51120

52-
it('applies changes to app/src/main/AndroidManifest.xml without notification', async function () {
53-
// eslint-disable-next-line no-console
54-
const warnOrig = console.warn;
55-
let called = false;
56-
// eslint-disable-next-line no-console
57-
console.warn = (_: string) => {
58-
called = true;
59-
};
60-
const config: ExpoConfig = JSON.parse(JSON.stringify(expoConfigExample));
61-
const manifestApplication: ManifestApplication = JSON.parse(
62-
JSON.stringify(manifestApplicationExample),
63-
);
64-
config.notification = undefined;
65-
setFireBaseMessagingAndroidManifest(config, manifestApplication);
66-
expect(called).toBeTruthy();
67-
// eslint-disable-next-line no-console
68-
console.warn = warnOrig;
121+
it('applies changes to app/src/main/AndroidManifest.xml without notification', async function () {
122+
// eslint-disable-next-line no-console
123+
const warnOrig = console.warn;
124+
let called = false;
125+
// eslint-disable-next-line no-console
126+
console.warn = (_: string) => {
127+
called = true;
128+
};
129+
const config: ExpoConfig = JSON.parse(
130+
JSON.stringify(expoNotificationsConfigWithoutPluginExample),
131+
);
132+
const manifestApplication: ManifestApplication = JSON.parse(
133+
JSON.stringify(manifestApplicationExample),
134+
);
135+
setFireBaseMessagingAndroidManifest(config, manifestApplication);
136+
expect(called).toBeTruthy();
137+
// eslint-disable-next-line no-console
138+
console.warn = warnOrig;
139+
});
69140
});
70141
});

packages/messaging/plugin/__tests__/fixtures/expo-config-example.ts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,41 @@ const expoConfigExample: ExpoConfig = {
1212
},
1313
};
1414

15-
export default expoConfigExample;
15+
const expoNotificationsConfigExample: ExpoConfig = {
16+
name: 'FirebaseMessagingTest',
17+
slug: 'fire-base-messaging-test',
18+
plugins: [
19+
[
20+
'expo-notifications',
21+
{
22+
icon: `IconAsset`,
23+
color: '#1D172D',
24+
},
25+
],
26+
],
27+
};
28+
29+
const expoNotificationsConfigWithoutColorExample: ExpoConfig = {
30+
name: 'FirebaseMessagingTest',
31+
slug: 'fire-base-messaging-test',
32+
plugins: [
33+
[
34+
'expo-notifications',
35+
{
36+
icon: `IconAsset`,
37+
},
38+
],
39+
],
40+
};
41+
42+
const expoNotificationsConfigWithoutPluginExample: ExpoConfig = {
43+
name: 'FirebaseMessagingTest',
44+
slug: 'fire-base-messaging-test',
45+
};
46+
47+
export {
48+
expoConfigExample,
49+
expoNotificationsConfigExample,
50+
expoNotificationsConfigWithoutColorExample,
51+
expoNotificationsConfigWithoutPluginExample,
52+
};

0 commit comments

Comments
 (0)