mattermost-mobile/test/service/actions/posts.test.js
enahum aa01be831f include posts into store (#125)
* include posts into store

* addressing feedback
2016-12-13 09:07:16 -05:00

384 lines
16 KiB
JavaScript

// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import assert from 'assert';
import * as Actions from 'service/actions/posts';
import Client from 'service/client';
import configureStore from 'app/store';
import {Constants, RequestStatus} from 'service/constants';
import TestHelper from 'test/test_helper';
describe('Actions.Posts', () => {
it('createPost', (done) => {
TestHelper.initBasic(Client).then(() => {
const store = configureStore();
store.subscribe(() => {
const createRequest = store.getState().requests.posts.createPost;
const postsInfo = store.getState().entities.posts.postsInfo;
if (createRequest.status === RequestStatus.SUCCESS || createRequest.status === RequestStatus.FAILURE) {
if (createRequest.error) {
done(new Error(JSON.stringify(createRequest.error)));
} else {
assert.ok(postsInfo[TestHelper.basicChannel.id]);
assert.ok(postsInfo[TestHelper.basicChannel.id].order.length);
assert.ok(Object.keys(postsInfo[TestHelper.basicChannel.id].posts).length);
done();
}
}
});
const post = TestHelper.fakePost(TestHelper.basicChannel.id);
Actions.createPost(
TestHelper.basicTeam.id,
post
)(store.dispatch, store.getState);
});
});
it('editPost', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
const post = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const message = post.message;
store.subscribe(() => {
const editRequest = store.getState().requests.posts.editPost;
const postsInfo = store.getState().entities.posts.postsInfo;
if (editRequest.status === RequestStatus.SUCCESS || editRequest.status === RequestStatus.FAILURE) {
if (editRequest.error) {
done(new Error(JSON.stringify(editRequest.error)));
} else {
assert.ok(postsInfo[TestHelper.basicChannel.id]);
assert.ok(postsInfo[TestHelper.basicChannel.id].order.length);
assert.strictEqual(
postsInfo[TestHelper.basicChannel.id].posts[post.id].message,
`${message} (edited)`
);
done();
}
}
});
post.message = `${message} (edited)`;
Actions.editPost(
TestHelper.basicTeam.id,
post
)(store.dispatch, store.getState);
});
});
it('deletePost', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
let created;
store.subscribe(() => {
const createRequest = store.getState().requests.posts.createPost;
const deleteRequest = store.getState().requests.posts.deletePost;
const postsInfo = store.getState().entities.posts.postsInfo;
if (deleteRequest.status === RequestStatus.SUCCESS || deleteRequest.status === RequestStatus.FAILURE) {
if (deleteRequest.error) {
done(new Error(JSON.stringify(deleteRequest.error)));
} else {
assert.ok(postsInfo[TestHelper.basicChannel.id]);
assert.strictEqual(
postsInfo[TestHelper.basicChannel.id].posts[created.id].state,
Constants.POST_DELETED
);
done();
}
}
if (deleteRequest.status === RequestStatus.NOT_STARTED &&
(createRequest.status === RequestStatus.SUCCESS || createRequest.status === RequestStatus.FAILURE)) {
if (createRequest.error) {
done(new Error(JSON.stringify(createRequest.error)));
} else {
const posts = postsInfo[TestHelper.basicChannel.id].posts;
created = posts[Object.keys(posts)[0]];
Actions.deletePost(TestHelper.basicTeam.id, created)(store.dispatch, store.getState);
}
}
});
const post = TestHelper.fakePost(TestHelper.basicChannel.id);
Actions.createPost(
TestHelper.basicTeam.id,
post
)(store.dispatch, store.getState);
});
});
it('removePost', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
const post1a = await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: TestHelper.basicPost.id}
);
await Actions.getPosts(
TestHelper.basicTeam.id,
TestHelper.basicChannel.id
)(store.dispatch, store.getState);
store.subscribe(() => {
const postsInfo = store.getState().entities.posts.postsInfo;
const postList = postsInfo[TestHelper.basicChannel.id];
assert.strictEqual(postList.order.length, 0);
assert.ifError(postList.posts[post1a.id]);
assert.ifError(postList.posts[TestHelper.basicPost.id]);
done();
});
Actions.removePost(
TestHelper.basicPost
)(store.dispatch, store.getState);
});
});
it('getPost', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
const post = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
store.subscribe(() => {
const getRequest = store.getState().requests.posts.getPost;
const postsInfo = store.getState().entities.posts.postsInfo;
if (getRequest.status === RequestStatus.SUCCESS || getRequest.status === RequestStatus.FAILURE) {
if (getRequest.error) {
done(new Error(JSON.stringify(getRequest.error)));
} else {
assert.ok(postsInfo[TestHelper.basicChannel.id]);
assert.ok(postsInfo[TestHelper.basicChannel.id].order.length);
assert.ok(postsInfo[TestHelper.basicChannel.id].posts[post.id]);
done();
}
}
});
Actions.getPost(
TestHelper.basicTeam.id,
TestHelper.basicChannel.id,
post.id
)(store.dispatch, store.getState);
});
});
it('getPosts', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
const post1 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post1a = await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post1.id}
);
const post2 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post3 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post3a = await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post3.id}
);
store.subscribe(() => {
const getRequest = store.getState().requests.posts.getPosts;
const postsInfo = store.getState().entities.posts.postsInfo;
if (getRequest.status === RequestStatus.SUCCESS || getRequest.status === RequestStatus.FAILURE) {
if (getRequest.error) {
done(new Error(JSON.stringify(getRequest.error)));
} else {
const postsList = postsInfo[TestHelper.basicChannel.id];
assert.ok(postsList);
assert.equal(postsList.order[0], post3a.id, 'wrong order');
assert.equal(postsList.order[1], post3.id, 'wrong order');
assert.equal(postsList.order[3], post1a.id, 'wrong order');
assert.ok(postsList.posts[post1.id], 'should exists');
assert.ok(postsList.posts[post2.id], 'should exists');
done();
}
}
});
Actions.getPosts(
TestHelper.basicTeam.id,
TestHelper.basicChannel.id
)(store.dispatch, store.getState);
});
}).timeout(3000);
it('getPostsSince', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
const post1 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post1.id}
);
const post2 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post3 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post3a = await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post3.id}
);
store.subscribe(() => {
const getRequest = store.getState().requests.posts.getPostsSince;
const postsInfo = store.getState().entities.posts.postsInfo;
if (getRequest.status === RequestStatus.SUCCESS || getRequest.status === RequestStatus.FAILURE) {
if (getRequest.error) {
done(new Error(JSON.stringify(getRequest.error)));
} else {
const postsList = postsInfo[TestHelper.basicChannel.id];
assert.ok(postsList);
assert.equal(postsList.order[0], post3a.id, 'wrong order');
assert.equal(postsList.order[1], post3.id, 'wrong order');
assert.equal(Object.keys(postsList.posts).length, 2, 'wrong size');
done();
}
}
});
Actions.getPostsSince(
TestHelper.basicTeam.id,
TestHelper.basicChannel.id,
post2.create_at
)(store.dispatch, store.getState);
});
}).timeout(3000);
it('getPostsBefore', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
const post1 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post1a = await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post1.id}
);
const post2 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post3 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post3.id}
);
store.subscribe(() => {
const getRequest = store.getState().requests.posts.getPostsBefore;
const postsInfo = store.getState().entities.posts.postsInfo;
if (getRequest.status === RequestStatus.SUCCESS || getRequest.status === RequestStatus.FAILURE) {
if (getRequest.error) {
done(new Error(JSON.stringify(getRequest.error)));
} else {
const postsList = postsInfo[TestHelper.basicChannel.id];
assert.ok(postsList);
assert.equal(postsList.order[0], post1a.id, 'wrong order');
assert.equal(postsList.order[1], post1.id, 'wrong order');
assert.equal(Object.keys(postsList.posts).length, 3, 'wrong size');
done();
}
}
});
Actions.getPostsBefore(
TestHelper.basicTeam.id,
TestHelper.basicChannel.id,
post2.id,
0,
10
)(store.dispatch, store.getState);
});
}).timeout(3000);
it('getPostsAfter', (done) => {
TestHelper.initBasic(Client).then(async () => {
const store = configureStore();
const post1 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post1.id}
);
const post2 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post3 = await Client.createPost(
TestHelper.basicTeam.id,
TestHelper.fakePost(TestHelper.basicChannel.id)
);
const post3a = await Client.createPost(
TestHelper.basicTeam.id,
{...TestHelper.fakePost(TestHelper.basicChannel.id), root_id: post3.id}
);
store.subscribe(() => {
const getRequest = store.getState().requests.posts.getPostsAfter;
const postsInfo = store.getState().entities.posts.postsInfo;
if (getRequest.status === RequestStatus.SUCCESS || getRequest.status === RequestStatus.FAILURE) {
if (getRequest.error) {
done(new Error(JSON.stringify(getRequest.error)));
} else {
const postsList = postsInfo[TestHelper.basicChannel.id];
assert.ok(postsList);
assert.equal(postsList.order[0], post3a.id, 'wrong order');
assert.equal(postsList.order[1], post3.id, 'wrong order');
assert.equal(Object.keys(postsList.posts).length, 2, 'wrong size');
done();
}
}
});
Actions.getPostsAfter(
TestHelper.basicTeam.id,
TestHelper.basicChannel.id,
post2.id,
0,
10
)(store.dispatch, store.getState);
});
}).timeout(3000);
});