Skip to content
Snippets Groups Projects
Commit 30719ac6 authored by zshan2's avatar zshan2
Browse files

repairing uploading

parent 6ce28402
No related branches found
No related tags found
1 merge request!2Assignment 3.1
Showing
with 1033 additions and 0 deletions
import * as React from 'react';
import { Pressable, View, Text, Image, StyleSheet } from 'react-native';
import Users from './Users'
const styles = StyleSheet.create({
viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20,
paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
container : {flex: 1},
textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5,
marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
});
function Followers (user, navigation) {
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
return (
<Users data={dataFile}/>
);
}
export default Followers
\ No newline at end of file
import * as React from 'react';
import { Pressable, View, Text, Image, StyleSheet } from 'react-native';
import Users from './Users'
const styles = StyleSheet.create({
viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20,
paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
container : {flex: 1},
textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5,
marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
});
function Following (user, navigation) {
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}/>
);
}
export default Following
\ No newline at end of file
import * as React from 'react';
import Loading from './Loading'
/** Module part of followers screen, used to fetch data and send to View part */
function LoadFollowersScreenModule(login, endPoint, token, navigation) {
fetch(endPoint, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": 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: 'Error, cannot find the github user by the login username:'
+ login + ', maybe this is an organization! \n Also maybe your internet was unstable'})
} else {
navigation.push('Followers', data['data']['user'])
}
})
.catch(error => {
navigation.push('Unfound', {errorMsg: 'Error happened' + error})
})
return (
<Loading/>
);
}
export default LoadFollowersScreenModule
\ No newline at end of file
import * as React from 'react';
import Loading from './Loading'
/** Module part of following screen, used to fetch data and send to View part */
function LoadFollowingScreenModule(login, endPoint, token, navigation) {
fetch(endPoint, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": 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: 'Error, cannot find the github user by the login username:'
+ login + ', maybe this is an organization! \n Also maybe your internet was unstable'})
} else {
navigation.push('Following', data['data']['user'])
}
})
.catch(error => {
navigation.push('Unfound', {errorMsg: 'Error happened' + error})
})
return (
<Loading/>
);
}
export default LoadFollowingScreenModule;
\ No newline at end of file
async function LoadProfileScreenModule(login, endPoint, token, navigation) {
await fetch(endPoint, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": token
},
body: JSON.stringify({
query: `
query {
user(login:"`+ login + `") {
name
login
avatarUrl
bio
createdAt
email
websiteUrl
repositories(last:100, privacy:PUBLIC){
nodes{
name
}
}
}
}
`
})
})
.then(res => res.json())
.then((data)=> {
if (data['data']['user'] === undefined) {
/** User not found! **/
navigation.push('Unfound', {errorMsg: 'Error, cannot find the github user by the login username:'
+ login + ', maybe this is an organization!'})
throw new Error('User Unfound!')
} else {
navigation.push('Profile', data['data']['user'])
}
})
.catch(error => {
navigation.push('Unfound', {errorMsg: 'Error: ' + error})
})
}
export default LoadProfileScreenModule;
\ No newline at end of file
function LoadRepoScreenModule(login, endPoint, token, navigation) {
fetch(endPoint, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": token
},
body: JSON.stringify({
query: `
query {
user(login:"`+login+`"){
login
repositories(last:100, privacy:PUBLIC){
nodes{
name
owner{
login
}
description
}
}
}
}
`
})
})
.then(res => res.json())
.then((data)=> {
if (data['data']['user'] === null) {
/** User not found! **/
navigation.push('Unfound', {errorMsg: '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 => {
navigation.push('Unfound', {errorMsg: 'Error: ' + error})
})
}
export default LoadRepoScreenModule;
\ No newline at end of file
import * as React from 'react';
import { Pressable, View, Text, Image, StyleSheet, ImageBackground } from 'react-native';
const styles = StyleSheet.create({
viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20,
paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
container : {flex: 1},
textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5,
marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
});
const Users = (props) => {
const file = props.data
const cards = file['cards']
const navigation = file['navi']
return (
<View style={styles.container}>
<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.pop(2)}>
<Text> Go to Profile </Text>
</Pressable>
</View>
</ImageBackground>
</View>
)
}
export default Users;
import * as React from 'react';
import { View, Text, Pressable, StyleSheet } from 'react-native';
import { render, fireEvent } from '@testing-library/react-native';
import Profile from '../Components/Profile'
const styles = StyleSheet.create({
viewStyleVertical : { alignItems: 'center', justifyContent: 'center', margin: '10%' },
viewStyleHorizon : { flex: 1, flexDirection: 'row', justifyContent: 'space-between'},
pressableStyle : {flex: 1, flexDirection: 'row', justifyContent: 'space-between', backgroundColor:'lavender', paddingHorizontal:20,
paddingVertical:10, borderColor:'thistle', borderWidth:2, borderRadius:5, marginHorizontal: 10, marginTop: 10},
image: { flex: 1, resizeMode: "cover", justifyContent: "center"},
container : {flex: 1},
textBox : {flex: 1, marginTop: 20, backgroundColor:'white', borderColor:'black', borderWidth:2, borderRadius:5,
marginHorizontal: 10, paddingVertical:10, paddingHorizontal: 50, alignItems: 'flex-start'}
});
test('Followers button should trigger navigating', () => {
const push = jest.fn()
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: {push},
login: "test1"
}
const { getByText } = render(
<Profile data={dataFile} />
);
fireEvent.press(getByText(' Followers '));
expect(push).toHaveBeenNthCalledWith(1, "LoadingFollowers" ,{"login": "test1"});
})
test('Following button should trigger navigating', () => {
const push = jest.fn()
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: {push},
login: "test2"
}
const { getByText } = render(
<Profile data={dataFile} />
);
fireEvent.press(getByText(' Followings '));
expect(push).toHaveBeenNthCalledWith(1, "LoadingFollowing", {"login": "test2"});
})
\ No newline at end of file
import 'react-native';
import renderer from 'react-test-renderer';
import LoadFollowersScreenModule from '../Components/LoadFollowersScreenModule'
beforeEach(() => {
fetch.resetMocks();
});
/** Testing Loading View of Followers with Empty avatarUrl link */
test('In the case that a user has no avatarUrl, its avatar should be a default one set in main page', () => {
fetch.mockResponseOnce(JSON.stringify({
data: {
user: {
login: "HenryShan",
followers: {
nodes: [{
name: "RX-78-2",
login: "G plan",
avatarUrl: null
}]
}
}
}
}));
const login = "HenryShan"
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const navigation = { push: jest.fn() };
const tree = renderer.create(
LoadFollowersScreenModule(login, endPoint, token, navigation)
).toJSON();
expect(tree).toMatchSnapshot();
}, 70000);
/** Testing the loading view of followers when the followers value is empty, a textbox should be shown and informing this */
test('In the case that a user has no avatarUrl, its avatar should be a default one set in main page', () => {
fetch.mockResponseOnce(JSON.stringify({
data: {
user: {
login: "HenryShan",
followers: {
nodes: [{}]
}
}
}
}));
const login = "HenryShan"
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const navigation = { push: jest.fn() };
const tree = renderer.create(
LoadFollowersScreenModule(login, endPoint, token, navigation)
).toJSON();
expect(tree).toMatchSnapshot();
}, 70000);
\ No newline at end of file
import LoadProfileScreenModule from '../Components/LoadProfileScreenModule'
import 'react-native';
beforeEach(() => {
fetch.resetMocks();
});
/** Testing the case when the username/login is not a person but other thing like an org */
test('expect throwing error', () => {
fetch.mockResponseOnce(JSON.stringify({
"data": {
"user": null
},
"errors": [
{
"type": "NOT_FOUND",
"path": [
"user"
],
"locations": [
{
"line": 32,
"column": 3
}
],
"message": "Could not resolve to a User with the login of '???'."
}
]
}))
const onResponse = jest.fn();
const onError = jest.fn();
const login = "???"
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const navigation = { push: jest.fn() };
return LoadProfileScreenModule(login, endPoint, token, navigation)
.then(onResponse)
.catch(onError)
.finally(() => {
// since in this situation, return value still contains data PKT thus still get in response state
expect(onResponse).toHaveBeenCalled();
expect(onError).not.toHaveBeenCalled();
});
}, 70000);
/** Testing the case when the Internet is down and loading Profile should return the error page and throw error*/
test('expect throwing error', () => {
fetch.mockResponseOnce(JSON.stringify({
"data": {
"user": null
},
"errors": [
{
"type": "INTERNET_DOWN",
"path": [
"user"
],
"locations": [
{
"line": 32,
"column": 3
}
],
"message": "Cannot connect to graphQL API server."
}
]
}))
const onResponse = jest.fn();
const onError = jest.fn();
const login = 'HenryShan'
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const navigation = { push: jest.fn() };
return LoadProfileScreenModule(login, endPoint, token, navigation)
.then(onResponse)
.catch(onError)
.finally(() => {
// since in this situation, return value still contains data PKT thus still get in response
expect(onResponse).toHaveBeenCalled();
expect(onError).not.toHaveBeenCalled();
});
}, 70000);
import 'react-native';
import Followers from '../Components/Followers'
import renderer from 'react-test-renderer';
beforeEach(() => {
fetch.resetMocks();
});
test('renders correctly', () => {
fetch.mockResponseOnce(JSON.stringify({
data: {
user: {
login: "HenryShan",
followers: {
nodes: [{
name: "RX-78-2",
login: "G plan",
avatarUrl: "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7b10552b-57d8-42a7-8dba-d4aaad8e7c82/"
+ "d7p3uno-38b831f7-4933-4f09-b366-b951231e1751.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ"
+"1cm46YXBwOiIsImlzcyI6InVybjphcHA6Iiwib2JqIjpbW3sicGF0aCI6IlwvZlwvN2IxMDU1MmItNTdkOC00MmE3LThkYmEtZDRhYWFk"
+"OGU3YzgyXC9kN3AzdW5vLTM4YjgzMWY3LTQ5MzMtNGYwOS1iMzY2LWI5NTEyMzFlMTc1MS5qcGcifV1dLCJhdWQiOlsidXJuOnNlcnZpY2"
+"U6ZmlsZS5kb3dubG9hZCJdfQ.PsPJAzWqHC1z07YMdxE4zYtFuUMXCtEMMI6VRr7Hq-k"
}]
}
}
}
}));
const login = "HenryShan"
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const navigation = { push: jest.fn() };
fetch(endPoint, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": 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: 'Error, cannot find the github user by the login username:' + login + ', maybe this is an organization! \n Also maybe your internet was unstable'})
} else {
// navigation.push('Followers', data['data']['user'])
const tree = renderer.create(
Followers(data['data']['user'], navigation)
).toJSON();
expect(tree).toMatchSnapshot();
}
})
.catch(error => {
navigation.push('Unfound', {errorMsg: 'Error:' + error})
})
}, 70000);
\ No newline at end of file
import 'react-native';
import renderer from 'react-test-renderer';
import Following from '../Components/Following';
beforeEach(() => {
fetch.resetMocks();
});
test('renders correctly', () => {
fetch.mockResponseOnce(JSON.stringify({
data: {
user: {
login: "HenryShan",
following: {
nodes: [{
name: "RX-78-2",
login: "G plan",
avatarUrl: "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7b10552b-57d8-42a7-8dba-d4aaad8e7c82/"
+ "d7p3uno-38b831f7-4933-4f09-b366-b951231e1751.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ"
+"1cm46YXBwOiIsImlzcyI6InVybjphcHA6Iiwib2JqIjpbW3sicGF0aCI6IlwvZlwvN2IxMDU1MmItNTdkOC00MmE3LThkYmEtZDRhYWFk"
+"OGU3YzgyXC9kN3AzdW5vLTM4YjgzMWY3LTQ5MzMtNGYwOS1iMzY2LWI5NTEyMzFlMTc1MS5qcGcifV1dLCJhdWQiOlsidXJuOnNlcnZpY2"
+"U6ZmlsZS5kb3dubG9hZCJdfQ.PsPJAzWqHC1z07YMdxE4zYtFuUMXCtEMMI6VRr7Hq-k"
}]
}
}
}
}));
const login = "HenryShan"
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const navigation = { push: jest.fn() };
fetch(endPoint, {
method: 'POST',
headers: {
"Content-Type": "application/json",
"Authorization": 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: 'Error, cannot find the github user by the login username:' + login + ', maybe this is an organization! \n Also maybe your internet was unstable'})
} else {
// navigation.push('Followers', data['data']['user'])
const tree = renderer.create(
Following(data['data']['user'], navigation)
).toJSON();
expect(tree).toMatchSnapshot();
}
})
.catch(error => {
navigation.push('Unfound', {errorMsg: 'Error: ' + error})
})
}, 70000);
\ No newline at end of file
import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import Loading from '../Components/Loading';
import { createStackNavigator } from '@react-navigation/stack';
beforeEach(() => {
fetch.resetMocks();
});
/** Testing all loading pages */
test('renders correctly', () => {
const tree = renderer.create(
<Loading />
).toJSON();
expect(tree).toMatchSnapshot();
});
\ No newline at end of file
import * as React from 'react';
import 'react-native';
import renderer from 'react-test-renderer';
import LoadFollowersScreenModule from '../Components/LoadFollowersScreenModule'
beforeEach(() => {
fetch.resetMocks();
});
/** Testing Loading View of Followers */
test('renders correctly', () => {
fetch.mockResponseOnce(JSON.stringify({
data: {
user: {
login: "HenryShan",
followers: {
nodes: [{
name: "RX-78-2",
login: "G plan",
avatarUrl: "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7b10552b-57d8-42a7-8dba-d4aaad8e7c82/"
+ "d7p3uno-38b831f7-4933-4f09-b366-b951231e1751.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ"
+"1cm46YXBwOiIsImlzcyI6InVybjphcHA6Iiwib2JqIjpbW3sicGF0aCI6IlwvZlwvN2IxMDU1MmItNTdkOC00MmE3LThkYmEtZDRhYWFk"
+"OGU3YzgyXC9kN3AzdW5vLTM4YjgzMWY3LTQ5MzMtNGYwOS1iMzY2LWI5NTEyMzFlMTc1MS5qcGcifV1dLCJhdWQiOlsidXJuOnNlcnZpY2"
+"U6ZmlsZS5kb3dubG9hZCJdfQ.PsPJAzWqHC1z07YMdxE4zYtFuUMXCtEMMI6VRr7Hq-k"
}]
}
}
}
}));
const login = "HenryShan"
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const push = jest.fn();
const tree = renderer.create(
LoadFollowersScreenModule(login, endPoint, token, {push})
).toJSON();
expect(tree).toMatchSnapshot();
}, 70000);
import 'react-native';
import renderer from 'react-test-renderer';
import LoadFollowingScreenModule from '../Components/LoadFollowingScreenModule'
beforeEach(() => {
fetch.resetMocks();
});
/** Testing Loading View for Following */
test('renders correctly', () => {
fetch.mockResponseOnce(JSON.stringify({
data: {
user: {
login: "HenryShan",
following: {
nodes: [{
name: "RX-78-2",
login: "G plan",
avatarUrl: "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7b10552b-57d8-42a7-8dba-d4aaad8e7c82/"
+ "d7p3uno-38b831f7-4933-4f09-b366-b951231e1751.jpg?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ"
+"1cm46YXBwOiIsImlzcyI6InVybjphcHA6Iiwib2JqIjpbW3sicGF0aCI6IlwvZlwvN2IxMDU1MmItNTdkOC00MmE3LThkYmEtZDRhYWFk"
+"OGU3YzgyXC9kN3AzdW5vLTM4YjgzMWY3LTQ5MzMtNGYwOS1iMzY2LWI5NTEyMzFlMTc1MS5qcGcifV1dLCJhdWQiOlsidXJuOnNlcnZpY2"
+"U6ZmlsZS5kb3dubG9hZCJdfQ.PsPJAzWqHC1z07YMdxE4zYtFuUMXCtEMMI6VRr7Hq-k"
}]
}
}
}
}));
const login = "HenryShan"
const envData = require('C:/Coding/cs242-assignment3/env.json')
const endPoint = envData['endPoint']
const token = envData['token']
const navigation = { push: jest.fn() };
const tree = renderer.create(
LoadFollowingScreenModule(login, endPoint, token, navigation)
).toJSON();
expect(tree).toMatchSnapshot();
}, 70000);
\ No newline at end of file
import 'react-native';
import React from 'react';
import Profile from '../Components/Profile';
import renderer from 'react-test-renderer';
beforeEach(() => {
fetch.resetMocks();
});
test('renders correctly', () => {
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: { navigate: jest.fn() }
}
const tree = renderer.create(
<Profile data={dataFile}/>
).toJSON();
expect(tree).toMatchSnapshot();
}, 70000);
\ No newline at end of file
import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import Repo from '../Components/Repo';
beforeEach(() => {
fetch.resetMocks();
});
/** Testing repo pages */
test('renders correctly', () => {
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: { navigate: jest.fn() }
}
const tree = renderer.create(
<Repo data={dataFile}/>
).toJSON();
expect(tree).toMatchSnapshot();
}, 70000);
import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import Unfound from '../Components/Unfound';
beforeEach(() => {
fetch.resetMocks();
});
/** Testing unfound/error pages */
test('renders correctly', () => {
const dataFile = {
navi: jest.fn()
}
const tree = renderer.create(
<Unfound data={dataFile}/>
).toJSON();
expect(tree).toMatchSnapshot();
}, 50000);
\ No newline at end of file
import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import Users from '../Components/Users'
beforeEach(() => {
fetch.resetMocks();
});
/** Testing all Users pages (Followers and Following) */
test('renders correctly', () => {
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: { navigate: jest.fn() }
}
const tree = renderer.create(
<Users data={dataFile}/>
).toJSON();
expect(tree).toMatchSnapshot();
}, 70000);
\ No newline at end of file
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`In the case that a user has no avatarUrl, its avatar should be a default one set in main page 1`] = `
<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,
}
}
>
Loading......
</Text>
<Image
source={
Object {
"uri": "http://simpleicon.com/wp-content/uploads/refresh.png",
}
}
style={
Object {
"height": 200,
"width": 200,
}
}
/>
</View>
</View>
</View>
`;
exports[`In the case that a user has no avatarUrl, its avatar should be a default one set in main page 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 {
"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>
`;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment