import * as path from "path" ; import * as fs from "fs" ; import { SmokeTestsConstants } from "./smokeTestsConstants" ; export default class TestProject { private _appName : string ; private _vsCodeConfigPath : string ; private _packageJsonPath : string ; private _metroConfigPath : string ; private _expoSettingsPath : string ; private _parentPathForWorkspace : string ; private _testButtonFileForWorkspace : string ; private _testNetworkButtonFileForWorkspace : string ; private _gradleBuildFilePathForWorkspace : string ; private _settingsJsonPath : string ; private _settingsJsonSamplePath : string ; private _testButtonFileForSample : string ; private _testNetworkButtonFileForSample : string ; private _gradleBuildFilePathForSample : string ; constructor ( private _workspaceDirectory , private _sampleDirectory ) { this . _appName = path . basename ( this . workspaceDirectory ) ; this . _vsCodeConfigPath = path . join ( this . workspaceDirectory , ".vscode" ) ; this . _parentPathForWorkspace = path . join ( this . workspaceDirectory , ".." ) ; this . _packageJsonPath = path . join ( this . workspaceDirectory , "package.json" ) ; this . _settingsJsonSamplePath = path . join ( this . sampleDirectory , "settings.json" ) ; this . _settingsJsonPath = path . join ( this . _vsCodeConfigPath , "settings.json" ) ; this . _testButtonFileForWorkspace = path . join ( this . workspaceDirectory , "AppTestButton.js" ) ; this . _testButtonFileForSample = path . join ( this . sampleDirectory , "AppTestButton.js" ) ; this . _testNetworkButtonFileForWorkspace = path . join ( this . workspaceDirectory , "AppTestNetworkButton.js" ) ; this . _testNetworkButtonFileForSample = path . join ( this . sampleDirectory , "AppTestNetworkButton.js" ) ; this . _metroConfigPath = path . join ( this . workspaceDirectory , "metro.config.js" ) ; this . _expoSettingsPath = path . join ( this . workspaceDirectory , ".expo" , "settings.json" ) ; this . _gradleBuildFilePathForWorkspace = path . join ( this . workspaceDirectory , "android" , "app" , "build.gradle" ) ; this . _gradleBuildFilePathForSample = path . join ( this . sampleDirectory , "build.gradle" ) ; } public getPlatformFolder ( platform ) { return path . join ( this . workspaceDirectory , platform ) ; } public isExpoProject ( ) { const packageJsonData = JSON . parse ( fs . readFileSync ( this . packageJsonPath ) . toString ( ) ) ; return packageJsonData . dependencies . expo || packageJsonData . devDependencies . expo ; } public getPodfileByPlatformForWorkspace ( platform ) { return path . join ( this . workspaceDirectory , platform , "Podfile" ) ; } public getPodfileByPlatformForSample ( ) { return path . join ( this . sampleDirectory , "Podfile" ) ; } private getEntryPoint ( diretory ) { let entryPoint = path . join ( diretory , SmokeTestsConstants . ApptsxFileName ) ; if ( ! fs . existsSync ( entryPoint ) ) { entryPoint = path . join ( diretory , SmokeTestsConstants . AppjsFileName ) ; } return entryPoint ; } get appName ( ) : string { return this . _appName ; } get vsCodeConfigPath ( ) : string { return this . _vsCodeConfigPath ; } get parentPathForWorkspace ( ) : string { return this . _parentPathForWorkspace ; } get projectEntryPointPath ( ) : string { return this . getEntryPoint ( this . workspaceDirectory ) ; } get projectEntryPointFile ( ) : string { return path . basename ( this . projectEntryPointPath ) ; } get sampleEntryPointPath ( ) : string { return this . getEntryPoint ( this . sampleDirectory ) ; } get workspaceDirectory ( ) : string { return this . _workspaceDirectory ; } get sampleDirectory ( ) : string { return this . _sampleDirectory ; } get packageJsonPath ( ) : string { return this . _packageJsonPath ; } get settingsJsonPath ( ) : string { return this . _settingsJsonPath ; } get settingsJsonSamplePath ( ) : string { return this . _settingsJsonSamplePath ; } get testButtonFileForWorkspace ( ) : string { return this . _testButtonFileForWorkspace ; } get testButtonFileForSample ( ) : string { return this . _testButtonFileForSample ; } get metroConfigPath ( ) : string { return this . _metroConfigPath ; } get expoSettingsPath ( ) : string { return this . _expoSettingsPath ; } get gradleBuildFilePathForWorkspace ( ) : string { return this . _gradleBuildFilePathForWorkspace ; } get gradleBuildFilePathForSample ( ) : string { return this . _gradleBuildFilePathForSample ; } get testNetworkButtonFileForSample ( ) : string { return this . _testNetworkButtonFileForSample ; } get testNetworkButtonFileForWorkspace ( ) : string { return this . _testNetworkButtonFileForWorkspace ; } }