1*082815dcSEvan Baconimport { applyNameSettingsGradle, sanitizeNameForGradle } from '../Name';
2*082815dcSEvan Bacon
3*082815dcSEvan Baconconst mockSettingsGradle = `rootProject.name = 'My-Co0l �� Pet_Project!'
4*082815dcSEvan Bacon
5*082815dcSEvan Baconapply from: '../node_modules/react-native-unimodules/gradle.groovy'
6*082815dcSEvan BaconincludeUnimodulesProjects()
7*082815dcSEvan Bacon
8*082815dcSEvan Baconapply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle");
9*082815dcSEvan BaconapplyNativeModulesSettingsGradle(settings)
10*082815dcSEvan Bacon
11*082815dcSEvan Baconinclude ':app'
12*082815dcSEvan Bacon`;
13*082815dcSEvan Bacon
14*082815dcSEvan Baconconst badName = `��/\\:<>"?*|$F0g.`;
15*082815dcSEvan Baconconst badNameCleaned = `��$F0g.`;
16*082815dcSEvan Bacon
17*082815dcSEvan Bacondescribe(sanitizeNameForGradle, () => {
18*082815dcSEvan Bacon  it('removes invalid characters', () => {
19*082815dcSEvan Bacon    expect(sanitizeNameForGradle(badName)).toBe(badNameCleaned);
20*082815dcSEvan Bacon  });
21*082815dcSEvan Bacon});
22*082815dcSEvan Bacondescribe(applyNameSettingsGradle, () => {
23*082815dcSEvan Bacon  it('replaces name in settings', () => {
24*082815dcSEvan Bacon    const modified = applyNameSettingsGradle({ name: badName }, mockSettingsGradle);
25*082815dcSEvan Bacon    expect(modified.includes(`rootProject.name = '${badNameCleaned}'\n`)).toBe(true);
26*082815dcSEvan Bacon  });
27*082815dcSEvan Bacon  it('replaces name in settings with odd linting', () => {
28*082815dcSEvan Bacon    // No spaces and double quotes are supported too right now.
29*082815dcSEvan Bacon    const modified = applyNameSettingsGradle(
30*082815dcSEvan Bacon      { name: badName },
31*082815dcSEvan Bacon      `rootProject.name="My-Co0l �� Pet_Project!"`
32*082815dcSEvan Bacon    );
33*082815dcSEvan Bacon    // Replaces with expected linting
34*082815dcSEvan Bacon    expect(modified).toBe(`rootProject.name = '${badNameCleaned}'`);
35*082815dcSEvan Bacon  });
36*082815dcSEvan Bacon  it('escapes single quotes in name', () => {
37*082815dcSEvan Bacon    const modified = applyNameSettingsGradle({ name: "Nora's" }, `rootProject.name="Replace me"`);
38*082815dcSEvan Bacon    expect(modified).toBe(`rootProject.name = 'Nora\\'s'`);
39*082815dcSEvan Bacon  });
40*082815dcSEvan Bacon});
41