Skip to content
Snippets Groups Projects
ErrorInProfile-test.js 2.64 KiB
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);