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