Skip to content

Commit ed76cee

Browse files
committed
follows integration tests
1 parent 7ed7489 commit ed76cee

File tree

4 files changed

+119
-2
lines changed

4 files changed

+119
-2
lines changed

App/Components/SegmentedControl.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,12 @@ var SegmentedControl = React.createClass({
1616
var out = [];
1717
for(var i = 0; i < this.props.items.length; i++) {
1818
var item = this.props.items[i];
19+
var testID = null;
20+
if (!item.testID && this.props.appendTestId) {
21+
testID = 'seg' + item.title + '_' + this.props.appendTestId;
22+
}
1923
out.push(
20-
<Segment {...item} key={"item" + i} currentRoute={this.props.currentRoute} />
24+
<Segment {...item} key={"item" + i} testID={testID} currentRoute={this.props.currentRoute} />
2125
);
2226
};
2327
return out;
@@ -58,6 +62,7 @@ var Segment = React.createClass({
5862
<TouchableHighlight
5963
style={styles.flex}
6064
underlayColor='#FFFFFF'
65+
testID={this.props.testID}
6166
onPress={this.onSelection}
6267
>
6368
<View style={[styles.button, styles.linkButton]}>

App/Mixins/ListHelper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ var ListHelper = {
9494
renderHeader: function() {
9595
if (!this.props.segment) return null;
9696
return (
97-
<SegmentedControl currentRoute={this.props.currentRoute} {...this.props.segment} />
97+
<SegmentedControl currentRoute={this.props.currentRoute} appendTestId={this.getUsername()} {...this.props.segment} />
9898
);
9999
},
100100

test/helpers/fixtures.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ var Fixtures = {
1919
};
2020
},
2121

22+
myFollows: function() {
23+
return {
24+
username: 'tester',
25+
follows: [
26+
{ id: 42, username: "friend" },
27+
{ id: 2, username: "follow2" }
28+
]
29+
};
30+
},
31+
2232
friend: function() {
2333
return {
2434
username: 'friend',
@@ -29,6 +39,16 @@ var Fixtures = {
2939
};
3040
},
3141

42+
friendFollows: function() {
43+
return {
44+
username: 'friend',
45+
follows: [
46+
{ id: 123, username: "tester" },
47+
{ id: 4, username: "follow4" }
48+
]
49+
};
50+
},
51+
3252
error: function(message, status, key, code) {
3353
return {
3454
status: (status ? status : 422),

test/integration/follows.test.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import it from '../helpers/appium';
2+
import server from '../helpers/server';
3+
import fixtures from '../helpers/fixtures';
4+
import bootstrap from '../helpers/bootstrap';
5+
6+
describe("Follows", () => {
7+
it("should show my follows", function* (driver, done) {
8+
server.get("/api/follows/tester", fixtures.myFollows());
9+
10+
yield bootstrap().login().nav("dashboard/follows").launch(driver);
11+
12+
yield driver.elementById('Dashboard');
13+
yield driver.elementById('friend');
14+
yield driver.elementById('follow2');
15+
16+
done();
17+
});
18+
19+
it("should show an empty list", function* (driver, done) {
20+
server.get("/api/follows/tester", { username: "tester", follows: [] });
21+
22+
yield bootstrap().login().nav("dashboard/follows").launch(driver);
23+
24+
yield driver.elementById('Follows');
25+
yield driver.elementById('No items');
26+
27+
done();
28+
});
29+
30+
it("should my friends's follows", function* (driver, done) {
31+
server.get("/api/follows/friend", fixtures.friendFollows());
32+
33+
yield bootstrap().login().nav("dashboard/follows/friend/follows").launch(driver);
34+
35+
yield driver.elementById('friend');
36+
yield driver.elementById('tester');
37+
yield driver.elementById('follow4');
38+
39+
done();
40+
});
41+
42+
it("should navigate follows recursively", function* (driver, done) {
43+
server.get("/api/posts/tester", fixtures.home());
44+
server.get("/api/posts/friend", fixtures.friend());
45+
server.get("/api/posts/follow4", {
46+
username: "follow4",
47+
posts: [ { id: 1000, username: 'follow4', content: 'post1000' }]
48+
});
49+
50+
server.get("/api/follows/friend", fixtures.friendFollows());
51+
server.get("/api/follows/tester", fixtures.myFollows());
52+
server.get("/api/follows/follow4", { username: "follow4", follows: [ { id: 123, username: 'tester' }] });
53+
54+
yield bootstrap().login().launch(driver);
55+
56+
yield driver.elementById("Dashboard");
57+
yield driver.elementById("post1"); // my post
58+
// yield driver.sleep(90000000);
59+
yield driver.elementById("segFollows_tester").click(); // open my follows
60+
61+
yield driver.elementById('friend').click(); // click on friend
62+
63+
yield driver.elementById("friend"); // friend's list
64+
yield driver.elementById("post4"); // friend's post
65+
yield driver.elementById("segFollows_friend").click(); // open friend's follows
66+
67+
yield driver.elementById('follow4').click(); // click on other
68+
69+
yield driver.elementById("follow4"); // other's list
70+
yield driver.elementById("post100"); // other's post
71+
yield driver.elementById("segFollows_follow4").click(); // open other's follows
72+
73+
yield driver.elementById('tester').click(); // click on me
74+
75+
// TODO: it should NOT say "Dashboard"
76+
yield driver.elementById("tester"); // my list
77+
yield driver.elementById("post1"); // my post
78+
79+
// Now pop everything
80+
yield driver.elementById("back").click(); // back
81+
yield driver.elementById("follow4");
82+
83+
yield driver.elementById("back").click(); // back
84+
yield driver.elementById("friend");
85+
86+
yield driver.elementById("back").click(); // back
87+
88+
yield driver.elementById("Dashboard");
89+
90+
done();
91+
});
92+
});

0 commit comments

Comments
 (0)