71 lines
3.1 KiB
JavaScript
71 lines
3.1 KiB
JavaScript
import { moduleForWidget, widgetTest } from 'helpers/widget-test';
|
|
import Topic from 'discourse/models/topic';
|
|
import Post from 'discourse/models/post';
|
|
|
|
moduleForWidget('post-stream');
|
|
|
|
function postStreamTest(name, attrs) {
|
|
widgetTest(name, {
|
|
template: `{{mount-widget widget="post-stream" args=(hash posts=posts)}}`,
|
|
beforeEach() {
|
|
const site = this.container.lookup('site:main');
|
|
let posts = attrs.posts.call(this);
|
|
posts.forEach(p => p.set('site', site));
|
|
this.set('posts', posts);
|
|
},
|
|
test: attrs.test
|
|
});
|
|
}
|
|
|
|
postStreamTest('basics', {
|
|
posts() {
|
|
const site = this.container.lookup('site:main');
|
|
const topic = Topic.create({ details: { created_by: { id: 123 } } });
|
|
return [
|
|
Post.create({ topic, id: 1, post_number: 1, user_id: 123, primary_group_name: 'trout', avatar_template: '/images/avatar.png' }),
|
|
Post.create({ topic, id: 2, post_number: 2, post_type: site.get('post_types.moderator_action') }),
|
|
Post.create({ topic, id: 3, post_number: 3, hidden: true }),
|
|
Post.create({ topic, id: 4, post_number: 4, post_type: site.get('post_types.whisper') }),
|
|
Post.create({ topic, id: 5, post_number: 5, wiki: true, via_email: true }),
|
|
Post.create({ topic, id: 6, post_number: 6, via_email: true, is_auto_generated: true }),
|
|
];
|
|
},
|
|
|
|
test(assert) {
|
|
assert.equal(this.$('.post-stream').length, 1);
|
|
assert.equal(this.$('.topic-post').length, 6, 'renders all posts');
|
|
|
|
// look for special class bindings
|
|
assert.equal(this.$('.topic-post:eq(0).topic-owner').length, 1, 'it applies the topic owner class');
|
|
assert.equal(this.$('.topic-post:eq(0).group-trout').length, 1, 'it applies the primary group class');
|
|
assert.equal(this.$('.topic-post:eq(0).regular').length, 1, 'it applies the regular class');
|
|
assert.equal(this.$('.topic-post:eq(1).moderator').length, 1, 'it applies the moderator class');
|
|
assert.equal(this.$('.topic-post:eq(2).post-hidden').length, 1, 'it applies the hidden class');
|
|
assert.equal(this.$('.topic-post:eq(3).whisper').length, 1, 'it applies the whisper class');
|
|
assert.equal(this.$('.topic-post:eq(4).wiki').length, 1, 'it applies the wiki class');
|
|
|
|
// it renders an article for the body with appropriate attributes
|
|
assert.equal(this.$('article#post_2').length, 1);
|
|
assert.equal(this.$('article[data-user-id=123]').length, 1);
|
|
assert.equal(this.$('article[data-post-id=3]').length, 1);
|
|
assert.equal(this.$('article#post_5.via-email').length, 1);
|
|
assert.equal(this.$('article#post_6.is-auto-generated').length, 1);
|
|
|
|
assert.equal(this.$('article:eq(0) .main-avatar').length, 1, 'renders the main avatar');
|
|
}
|
|
});
|
|
|
|
postStreamTest('deleted posts', {
|
|
posts() {
|
|
const topic = Topic.create({ details: { created_by: { id: 123 } } });
|
|
return [
|
|
Post.create({ topic, id: 1, post_number: 1, deleted_at: new Date().toString() }),
|
|
];
|
|
},
|
|
|
|
test(assert) {
|
|
assert.equal(this.$('.topic-post.deleted').length, 1, 'it applies the deleted class');
|
|
assert.equal(this.$('.deleted-user-avatar').length, 1, 'it has the trash avatar');
|
|
}
|
|
});
|