This repository was archived by the owner on Dec 15, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 402
/
Copy pathremote-container.test.js
100 lines (82 loc) · 2.95 KB
/
remote-container.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import React from 'react';
import {shallow} from 'enzyme';
import {QueryRenderer} from 'react-relay';
import RemoteContainer from '../../lib/containers/remote-container';
import {queryBuilder} from '../builder/graphql/query';
import Remote from '../../lib/models/remote';
import RemoteSet from '../../lib/models/remote-set';
import Branch, {nullBranch} from '../../lib/models/branch';
import BranchSet from '../../lib/models/branch-set';
import {DOTCOM} from '../../lib/models/endpoint';
import Refresher from '../../lib/models/refresher';
import remoteQuery from '../../lib/containers/__generated__/remoteContainerQuery.graphql';
describe('RemoteContainer', function() {
let atomEnv;
beforeEach(function() {
atomEnv = global.buildAtomEnvironment();
});
afterEach(function() {
atomEnv.destroy();
});
function buildApp(overrideProps = {}) {
const origin = new Remote('origin', '[email protected]:atom/github.git');
const remotes = new RemoteSet([origin]);
const branch = new Branch('master', nullBranch, nullBranch, true);
const branches = new BranchSet([branch]);
return (
<RemoteContainer
endpoint={DOTCOM}
token="1234"
refresher={new Refresher()}
pushInProgress={false}
workingDirectory={__dirname}
workspace={atomEnv.workspace}
remote={origin}
remotes={remotes}
branches={branches}
aheadCount={0}
handleLogin={() => {}}
handleLogout={() => {}}
onPushBranch={() => {}}
{...overrideProps}
/>
);
}
it('renders a loading spinner while the GraphQL query is being performed', function() {
const wrapper = shallow(buildApp());
const resultWrapper = wrapper.find(QueryRenderer).renderProp('render')({
error: null,
props: null,
retry: () => {},
});
assert.isTrue(resultWrapper.exists('LoadingView'));
});
it('renders an error message if the GraphQL query fails', function() {
const wrapper = shallow(buildApp());
const error = new Error('oh shit!');
error.rawStack = error.stack;
const resultWrapper = wrapper.find(QueryRenderer).renderProp('render')({error, props: null, retry: () => {}});
assert.strictEqual(resultWrapper.find('QueryErrorView').prop('error'), error);
});
it('renders the controller once results have arrived', function() {
const wrapper = shallow(buildApp());
const props = queryBuilder(remoteQuery)
.repository(r => {
r.id('the-repo');
r.defaultBranchRef(dbr => {
dbr.prefix('refs/heads/');
dbr.name('devel');
});
})
.build();
const resultWrapper = wrapper.find(QueryRenderer).renderProp('render')({error: null, props, retry: () => {}});
const controller = resultWrapper.find('RemoteController');
assert.deepEqual(controller.prop('repository'), {
id: 'the-repo',
defaultBranchRef: {
prefix: 'refs/heads/',
name: 'devel',
},
});
});
});