From 044cbe07f99ee13ddbc46ee957ae24fc48961165 Mon Sep 17 00:00:00 2001 From: HenryShan <zshan2@illinois.edu> Date: Mon, 29 Mar 2021 23:38:34 +0800 Subject: [PATCH] assignment3.1 ver2.0: all functionalities are implemented, going for testing --- README.md | 19 ++ src/App.js | 257 ++++++++++++-- src/Components/Loading.js | 6 +- src/Components/Profile.js | 11 +- src/Components/Repo.js | 8 +- src/Components/Unfound.js | 4 +- src/__tests__/App-test.js | 24 ++ src/__tests__/__snapshots__/App-test.js.snap | 335 ++++++++++++++++++- 8 files changed, 617 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 42eeedf..7ab5a6a 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,21 @@ # sp21-cs242-assignment3 +Description: this repo is for UIUC CS242 SP21's assignment3 + +## Functionalities: +- Giving github's graphQL API endpoint address, user OAuth token, and username, get personal info of this user and rendered it in mobile devices. +- Find other github user's info through following & follower lists and public repo owners. + +## Environment Requirement: +- Windows 7 or above +- Javascript Environment +- React-Native + +## External Resources: +- React Navigation +- Jest + +## Update Notes: +- 3/29: Basic functionalities are completed. +- 3/22: User's personal info pages are completed. + diff --git a/src/App.js b/src/App.js index fdc4270..32ca65a 100644 --- a/src/App.js +++ b/src/App.js @@ -6,6 +6,7 @@ import Loading from './Components/Loading' import Profile from './Components/Profile' import Repo from './Components/Repo' import Unfound from './Components/Unfound' +import Users from './Components/Users' import DataGenerator from './Components/DataGenerator' const Stack = createStackNavigator(); @@ -23,6 +24,7 @@ const styles = StyleSheet.create({ function generateData(route, navigation) { const {name, login, avatarUrl, bio, createdAt, email, websiteUrl, repositories} = route.params; const dataFile = {} + dataFile['login'] = login dataFile['navi'] = navigation dataFile['nameContent'] = 'Name: \n' + name dataFile['userNameContent'] = 'UserName\n: ' + login @@ -44,11 +46,15 @@ function generateData(route, navigation) { /** Home page **/ function HomeScreen({ navigation }) { + const dataJson = require('C:/Coding/cs242-assignment3/env.json') + const myUserName = dataJson['login'] + const data = {} + data['login'] = myUserName return ( <View style={styles.container}> - <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}> + <ImageBackground source={{uri: "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg"}} style={styles.image}> <View style={styles.viewStyleVertical}> - <Pressable style={styles.pressableStyle} onPress={() => navigation.navigate('LoadingProfile')}> + <Pressable style={styles.pressableStyle} onPress={() => navigation.push('LoadingProfile', data)}> <Text> Start </Text> </Pressable> </View> @@ -67,29 +73,117 @@ function ProfileScreen({ route, navigation }) { /** Repo page **/ function RepoScreen({ route, navigation }) { - const {nodes} = route.params + const user = route.params + const nodes = user['repositories']['nodes'] + const login = user['login'] let cards = []; for (let i = 0; i < nodes.length; i++) { var repoName = 'Repo name: \n' + nodes[i]['name'] + '\n' var repoDescription = 'Repo description: \n' + nodes[i]['description'] + '\n' var repoOwner = 'Repo owner: \n' + nodes[i]['owner']['login'] + '\n' - var nativeID = 'repo#' + i + var key = 'repo#' + i cards.push( - <View style={styles.textBox} nativeID={nativeID}> + <Pressable style={styles.textBox} key={key} Pressable style={styles.textBox} onPress={() => navigation.push('LoadingProfile', {login: nodes[i]['owner']['login']})}> <Text> {repoName} </Text> <Text> {repoDescription} </Text> <Text> {repoOwner} </Text> - </View> + </Pressable> ) } const dataFile = {} dataFile['cards'] = cards dataFile['navi'] = navigation + dataFile['login'] = login return ( <Repo data={dataFile}/> ); } +/** Follower page **/ +function FollowerScreen({ route, navigation }) { + const user = route.params + const nodes = user['followers']['nodes'] + const login = user['login'] + let cards = [] + if (nodes.length === 0) { + cards.push( + <Pressable style={styles.textBox} key={'Nobody'}> + <Text style={{ fontSize: 30 }}> + Oops! Nobody is in this list! + </Text> + </Pressable> + ) + } else { + for (let i = 0; i < nodes.length; i++) { + var name = 'Name: \n' + nodes[i]['name'] + '\n' + var userName = 'Github Username: \n' + nodes[i]['login'] + '\n' + var key = 'user#' + i + var avatarUrl = nodes[i]['avatarUrl'] + cards.push( + <Pressable style={styles.textBox} key={key} onPress={()=>navigation.push('LoadingProfile', {login: nodes[i]['login']})}> + <View style={styles.viewStyleVertical}> + <Image style={{width:90, height:90}} source={{uri: avatarUrl}}/> + </View> + <View style={styles.viewStyleVertical}> + <Text> {name} </Text> + <Text> {userName} </Text> + </View> + </Pressable> + ) + } + } + const dataFile = {} + dataFile['cards'] = cards + dataFile['navi'] = navigation + dataFile['login'] = login + console.log(login) + return ( + <Users data={dataFile}/> + ); +} + +/** Following page **/ +function FollowingScreen({ route, navigation }) { + const user = route.params + const nodes = user['following']['nodes'] + const login = user['login'] + let cards = [] + if (nodes.length === 0) { + cards.push( + <Pressable style={styles.textBox} key={'Nobody'}> + <Text style={{ fontSize: 30 }}> + Oops! Nobody is in this list! + </Text> + </Pressable> + ) + } else { + for (let i = 0; i < nodes.length; i++) { + var name = 'Name: \n' + nodes[i]['name'] + '\n' + var userName = 'Github Username: \n' + nodes[i]['login'] + '\n' + var key = 'user#' + i + var avatarUrl = nodes[i]['avatarUrl'] + cards.push( + <Pressable style={styles.textBox} key={key} onPress={()=>navigation.push('LoadingProfile', {login: nodes[i]['login']})}> + <View style={styles.viewStyleVertical}> + <Image style={{width:90, height:90}} source={{uri: avatarUrl}}/> + </View> + <View style={styles.viewStyleVertical}> + <Text> {name} </Text> + <Text> {userName} </Text> + </View> + </Pressable> + ) + } + } + const dataFile = {} + dataFile['cards'] = cards + dataFile['navi'] = navigation + dataFile['login'] = login + return ( + <Users data={dataFile}/> + ); +} + /** Unfound page **/ function UnfoundScreen({ route, navigation }) { const {errorMsg} = route.params @@ -101,9 +195,12 @@ function UnfoundScreen({ route, navigation }) { ); } + + /** Loading Profile page **/ -function LoadProfileScreen({navigation}) { - const dataJson = require('C:/Coding/cs242-assignment3/env.json'); +function LoadProfileScreen({route, navigation}) { + const dataJson = require('C:/Coding/cs242-assignment3/env.json') + const {login} = route.params fetch(dataJson['endPoint'], { method: 'POST', headers: { @@ -113,7 +210,7 @@ function LoadProfileScreen({navigation}) { body: JSON.stringify({ query: ` query { - viewer { + user(login:"`+ login + `") { name login avatarUrl @@ -133,11 +230,17 @@ function LoadProfileScreen({navigation}) { }) .then(res => res.json()) .then((data)=> { - navigation.navigate('Profile', data['data']['viewer']) + if (data['data']['user'] === null) { + /** User not found! **/ + navigation.push('Unfound', {errorMsg: 'Wrong!'}) + console.log('Error, cannot find the github user by the login username:' + login + ', maybe this is an organization!') + } else { + navigation.push('Profile', data['data']['user']) + } }) .catch(error => { console.error('Error:', error) - navigation.navigate('Unfound', {errorMsg: error}) + navigation.push('Unfound', {errorMsg: error}) }) return ( @@ -146,10 +249,8 @@ function LoadProfileScreen({navigation}) { } /** Loading Repo page **/ -function LoadRepoScreen({navigation}) { - // setTimeout(function(){ - // navigation.navigate('Unfound'); - // }, 1000) +function LoadRepoScreen({route, navigation}) { + const {login} = route.params const dataJson = require('C:/Coding/cs242-assignment3/env.json'); fetch(dataJson['endPoint'], { method: 'POST', @@ -160,7 +261,8 @@ function LoadRepoScreen({navigation}) { body: JSON.stringify({ query: ` query { - viewer{ + user(login:"`+login+`"){ + login repositories(last:100, privacy:PUBLIC){ nodes{ name @@ -176,14 +278,65 @@ function LoadRepoScreen({navigation}) { }) }) .then(res => res.json()) - // .then((data) => console.log(data['data']['viewer']['repositories']['nodes'])) - // .then((data) => console.log(data)) .then((data)=> { - navigation.navigate('Repo', data['data']['viewer']['repositories']) + if (data['data']['user'] === null) { + /** User not found! **/ + navigation.push('Unfound', {errorMsg: 'Wrong!'}) + console.log('Error, cannot find the github user by the login username:' + login + ', maybe this is an organization!') + } else { + navigation.push('Repo', data['data']['user']) + } + }) + .catch(error => { + console.error('Error:', error) + navigation.push('Unfound', {errorMsg: error}) + }) + + return ( + <Loading/> + ); +} + +/** Loading Followers page **/ +function LoadFollowersScreen({route, navigation}) { + const {login} = route.params + const dataJson = require('C:/Coding/cs242-assignment3/env.json'); + fetch(dataJson['endPoint'], { + method: 'POST', + headers: { + "Content-Type": "application/json", + "Authorization": dataJson['token'] + }, + body: JSON.stringify({ + query: ` + query { + user(login:"`+ login +`"){ + login + followers(last:100) { + nodes { + name + login + avatarUrl + } + } + } + } + ` + }) + }) + .then(res => res.json()) + .then((data)=> { + if (data['data']['user'] === null) { + /** User not found! **/ + navigation.push('Unfound', {errorMsg: 'Wrong!'}) + console.log('Error, cannot find the github user by the login username:' + login + ', maybe this is an organization!') + } else { + navigation.push('Followers', data['data']['user']) + } }) .catch(error => { console.error('Error:', error) - navigation.navigate('Unfound', {errorMsg: error}) + navigation.push('Unfound', {errorMsg: error}) }) return ( @@ -191,17 +344,69 @@ function LoadRepoScreen({navigation}) { ); } +/** Loading Followings page **/ +function LoadFollowingScreen({route, navigation}) { + const {login} = route.params + const dataJson = require('C:/Coding/cs242-assignment3/env.json'); + fetch(dataJson['endPoint'], { + method: 'POST', + headers: { + "Content-Type": "application/json", + "Authorization": dataJson['token'] + }, + body: JSON.stringify({ + query: ` + query { + user(login:"` + login + `"){ + login + following(last:100) { + nodes { + name + login + avatarUrl + } + } + } + } + ` + }) + }) + .then(res => res.json()) + .then((data)=> { + if (data['data']['user'] === null) { + /** User not found! **/ + navigation.push('Unfound', {errorMsg: 'Wrong!'}) + console.log('Error, cannot find the github user by the login username:' + login + ', maybe this is an organization!') + } else { + navigation.push('Following', data['data']['user']) + } + }) + .catch(error => { + console.error('Error:', error) + navigation.push('Unfound', {errorMsg: error}) + }) + + return ( + <Loading/> + ); +} + + /** Page loader **/ function App() { return ( <NavigationContainer> <Stack.Navigator initialRouteName="Home"> - <Stack.Screen name="Home" component={HomeScreen} options={{ title: 'Github User Info' }}/> - <Stack.Screen name="Profile" component={ProfileScreen} /> - <Stack.Screen name="Repo" component={RepoScreen} options={{ title: 'Repositories' }}/> - <Stack.Screen name="LoadingProfile" component={LoadProfileScreen} /> - <Stack.Screen name="LoadingRepo" component={LoadRepoScreen} /> - <Stack.Screen name="Unfound" component={UnfoundScreen} options={{ title: 'Error' }}/> + <Stack.Screen name='Home' component={HomeScreen} options={{ title: 'Github User Info', animationEnabled: true}}/> + <Stack.Screen name='Profile' component={ProfileScreen} options={{animationEnabled: true}}/> + <Stack.Screen name='Repo' component={RepoScreen} options={{ title: 'Repositories', animationEnabled:true }}/> + <Stack.Screen name="LoadingProfile" component={LoadProfileScreen} options={{animationEnabled: true}} /> + <Stack.Screen name='LoadingRepo' component={LoadRepoScreen} options={{animationEnabled: true}}/> + <Stack.Screen name='Unfound' component={UnfoundScreen} options={{ title: 'Error', animationEnabled:true }}/> + <Stack.Screen name='LoadingFollowers' component={LoadFollowersScreen} options={{animationEnabled: true}}/> + <Stack.Screen name='LoadingFollowing' component={LoadFollowingScreen} options={{animationEnabled: true}}/> + <Stack.Screen name='Followers' component={FollowerScreen} options={{animationEnabled: true}}/> + <Stack.Screen name='Following' component={FollowingScreen} options={{animationEnabled: true}}/> </Stack.Navigator> </NavigationContainer> ); diff --git a/src/Components/Loading.js b/src/Components/Loading.js index 2e3ee0c..694ff72 100644 --- a/src/Components/Loading.js +++ b/src/Components/Loading.js @@ -13,13 +13,13 @@ const styles = StyleSheet.create({ }); const Loading = () => { - const pic = require('C:/Coding/cs242-assignment3/GitView/assets/loading.png') + const pic = "http://simpleicon.com/wp-content/uploads/refresh.png" return ( <View style={styles.container}> - <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}> + <ImageBackground source={{uri: "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg"}} style={styles.image}> <View style={styles.viewStyleVertical}> <Text style={{ fontSize: 30 }}>Loading......</Text> - <Image source={pic} style={{width: 200, height: 200}}/> + <Image source={{uri: pic}} style={{width: 200, height: 200}}/> </View> </ImageBackground> </View> diff --git a/src/Components/Profile.js b/src/Components/Profile.js index a6d95f8..2856a2d 100644 --- a/src/Components/Profile.js +++ b/src/Components/Profile.js @@ -25,18 +25,19 @@ const Profile = (props) => { const createDate = file['createDate'] const repoCount = file['repoCount'] const navigation = file['navi'] + const login = file['login'] return ( <View style={styles.container}> - <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}> + <ImageBackground source={{uri: "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg"}} style={styles.image}> <View style={styles.viewStyleVertical}> <View style={styles.viewStyleVertical}> - <Image style={{width: 100, height: 100}} source={iconUrl} /> + <Image style={{width: 100, height: 100}} source={{uri: iconUrl}} /> </View> <View style={styles.viewStyleHorizon}> - <Pressable style={styles.pressableStyle}> + <Pressable style={styles.pressableStyle} onPress={() => navigation.push('LoadingFollowers', {login: login})}> <Text> Followers </Text> </Pressable> - <Pressable style={styles.pressableStyle}> + <Pressable style={styles.pressableStyle} onPress={() => navigation.push('LoadingFollowing', {login: login})}> <Text> Followings </Text> </Pressable> </View> @@ -49,7 +50,7 @@ const Profile = (props) => { <Text style={styles.textBox}> {createDate} </Text> </View> <View style={styles.viewStyleVertical} > - <Pressable style={styles.pressableStyle} onPress={() => navigation.navigate('LoadingRepo')}> + <Pressable style={styles.pressableStyle} onPress={() => navigation.push('LoadingRepo', {login: login})}> <Text> {repoCount} </Text> </Pressable> </View> diff --git a/src/Components/Repo.js b/src/Components/Repo.js index 05b44e6..811276f 100644 --- a/src/Components/Repo.js +++ b/src/Components/Repo.js @@ -18,12 +18,16 @@ const Repo = (props) => { const file = props.data const cards = file['cards'] const navigation = file['navi'] + const login = file['login'] return ( <View style={styles.container}> - <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}> + <ImageBackground source={{uri: "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg"}} style={styles.image}> <View style={styles.viewStyleVertical}> + <Pressable style={styles.pressableStyle} onPress={() => navigation.pop(2)}> + <Text> Go to Profile </Text> + </Pressable> {cards} - <Pressable style={styles.pressableStyle} onPress={() => navigation.navigate('Profile')}> + <Pressable style={styles.pressableStyle} onPress={() => navigation.pop(2)}> <Text> Go to Profile </Text> </Pressable> </View> diff --git a/src/Components/Unfound.js b/src/Components/Unfound.js index 1bfc4a9..6b3772a 100644 --- a/src/Components/Unfound.js +++ b/src/Components/Unfound.js @@ -19,10 +19,10 @@ const Unfound = (props) => { const navigation = dataFile['navi'] return ( <View style={styles.container}> - <ImageBackground source={require('C:/Coding/cs242-assignment3/GitView/assets/ice.jpg')} style={styles.image}> + <ImageBackground source={{uri: "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg"}} style={styles.image}> <View style={styles.viewStyleVertical}> <Text style={{ fontSize: 30 }}> Error! Check log to see details </Text> - <Image style={{width: 200, height: 200}} source={require('C:/Coding/cs242-assignment3/GitView/assets/warn.png')} /> + <Image style={{width: 200, height: 200}} source={{uri: "https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Warning.svg/156px-Warning.svg.png"}} /> <Pressable style={styles.pressableStyle} onPress={() => navigation.navigate('Home')}> <Text> Go back to Home Page </Text> </Pressable> diff --git a/src/__tests__/App-test.js b/src/__tests__/App-test.js index 79c4721..f76ba57 100644 --- a/src/__tests__/App-test.js +++ b/src/__tests__/App-test.js @@ -11,6 +11,7 @@ import Unfound from '../Components/Unfound'; const Stack = createStackNavigator(); +/** Testing all loading pages */ test('renders correctly', () => { const tree = renderer.create( <Loading /> @@ -36,6 +37,7 @@ test('renders correctly', () => { expect(tree).toMatchSnapshot(); }); + /** Testing repo pages */ test('renders correctly', ({navigation}) => { const dataFile = { iconUrl: "https://avatars.githubusercontent.com/u/42978932?u=b4a7beb2752bb6059cd13d12ca26d097767abf77&v=4", @@ -54,6 +56,28 @@ test('renders correctly', () => { expect(tree).toMatchSnapshot(); }); + + /** Testing all Users pages (Followers and Following) */ + test('renders correctly', ({navigation}) => { + const dataFile = { + iconUrl: "https://avatars.githubusercontent.com/u/42978932?u=b4a7beb2752bb6059cd13d12ca26d097767abf77&v=4", + nameContent: null, + userNameContent: null, + bioContent: null, + websiteLink: null, + emailContent: null, + createData: null, + repoCount: 0, + navi: navigation + } + const tree = renderer.create( + <Users data={dataFile}/> + ).toJSON(); + expect(tree).toMatchSnapshot(); + }); + + + /** Testing unfound/error pages */ test('renders correctly', ({navigation}) => { const dataFile = { navi: navigation diff --git a/src/__tests__/__snapshots__/App-test.js.snap b/src/__tests__/__snapshots__/App-test.js.snap index 365ee0e..3f7171f 100644 --- a/src/__tests__/__snapshots__/App-test.js.snap +++ b/src/__tests__/__snapshots__/App-test.js.snap @@ -19,7 +19,88 @@ exports[`renders correctly 1`] = ` } > <Image - source="test-file-stub" + source={ + Object { + "uri": "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": undefined, + "width": undefined, + }, + undefined, + ] + } + /> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "margin": "10%", + } + } + > + <Text + style={ + Object { + "fontSize": 30, + } + } + > + Loading...... + </Text> + <Image + source={ + Object { + "uri": "http://simpleicon.com/wp-content/uploads/refresh.png", + } + } + style={ + Object { + "height": 200, + "width": 200, + } + } + /> + </View> + </View> +</View> +`; + +exports[`renders correctly 2`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "resizeMode": "cover", + } + } + > + <Image + source={ + Object { + "uri": "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg", + } + } style={ Array [ Object { @@ -56,7 +137,7 @@ exports[`renders correctly 1`] = ` } > <Image - source="test-file-stub" + source="https://avatars.githubusercontent.com/u/42978932?u=b4a7beb2752bb6059cd13d12ca26d097767abf77&v=4" style={ Object { "height": 100, @@ -164,7 +245,8 @@ exports[`renders correctly 1`] = ` } } > - nameContent + + </Text> <Text style={ @@ -182,7 +264,8 @@ exports[`renders correctly 1`] = ` } } > - userNameContent + + </Text> <Text style={ @@ -200,7 +283,8 @@ exports[`renders correctly 1`] = ` } } > - bioContent + + </Text> <Text style={ @@ -218,7 +302,8 @@ exports[`renders correctly 1`] = ` } } > - websiteLink + + </Text> <Text style={ @@ -236,7 +321,8 @@ exports[`renders correctly 1`] = ` } } > - emailContent + + </Text> <Text style={ @@ -254,7 +340,8 @@ exports[`renders correctly 1`] = ` } } > - createDate + + </Text> </View> <View @@ -295,7 +382,9 @@ exports[`renders correctly 1`] = ` } > <Text> - repoCount + + 0 + </Text> </View> </View> @@ -303,3 +392,231 @@ exports[`renders correctly 1`] = ` </View> </View> `; + +exports[`renders correctly 3`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "resizeMode": "cover", + } + } + > + <Image + source={ + Object { + "uri": "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": undefined, + "width": undefined, + }, + undefined, + ] + } + /> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "margin": "10%", + } + } + > + <View + accessible={true} + focusable={true} + onBlur={[Function]} + onClick={[Function]} + onFocus={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "lavender", + "borderColor": "thistle", + "borderRadius": 5, + "borderWidth": 2, + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + "marginHorizontal": 10, + "marginTop": 10, + "paddingHorizontal": 20, + "paddingVertical": 10, + } + } + > + <Text> + Go to Profile + </Text> + </View> + <View + accessible={true} + focusable={true} + onBlur={[Function]} + onClick={[Function]} + onFocus={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "lavender", + "borderColor": "thistle", + "borderRadius": 5, + "borderWidth": 2, + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + "marginHorizontal": 10, + "marginTop": 10, + "paddingHorizontal": 20, + "paddingVertical": 10, + } + } + > + <Text> + Go to Profile + </Text> + </View> + </View> + </View> +</View> +`; + +exports[`renders correctly 4`] = ` +<View + style={ + Object { + "flex": 1, + } + } +> + <View + accessibilityIgnoresInvertColors={true} + style={ + Object { + "flex": 1, + "justifyContent": "center", + "resizeMode": "cover", + } + } + > + <Image + source={ + Object { + "uri": "https://www.fonewalls.com/wp-content/uploads/2020/04/Ice-Phone-Wallpaper.jpg", + } + } + style={ + Array [ + Object { + "bottom": 0, + "left": 0, + "position": "absolute", + "right": 0, + "top": 0, + }, + Object { + "height": undefined, + "width": undefined, + }, + undefined, + ] + } + /> + <View + style={ + Object { + "alignItems": "center", + "justifyContent": "center", + "margin": "10%", + } + } + > + <Text + style={ + Object { + "fontSize": 30, + } + } + > + Error! Check log to see details + </Text> + <Image + source={ + Object { + "uri": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/17/Warning.svg/156px-Warning.svg.png", + } + } + style={ + Object { + "height": 200, + "width": 200, + } + } + /> + <View + accessible={true} + focusable={true} + onBlur={[Function]} + onClick={[Function]} + onFocus={[Function]} + onResponderGrant={[Function]} + onResponderMove={[Function]} + onResponderRelease={[Function]} + onResponderTerminate={[Function]} + onResponderTerminationRequest={[Function]} + onStartShouldSetResponder={[Function]} + style={ + Object { + "backgroundColor": "lavender", + "borderColor": "thistle", + "borderRadius": 5, + "borderWidth": 2, + "flex": 1, + "flexDirection": "row", + "justifyContent": "space-between", + "marginHorizontal": 10, + "marginTop": 10, + "paddingHorizontal": 20, + "paddingVertical": 10, + } + } + > + <Text> + Go back to Home Page + </Text> + </View> + </View> + </View> +</View> +`; -- GitLab