2019-04-29 20:27:42 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
Fabricator(:post) do
|
2024-01-18 01:08:40 -05:00
|
|
|
user { Fabricate(:user, refresh_auto_groups: true) }
|
2013-02-05 14:16:51 -05:00
|
|
|
topic { |attrs| Fabricate(:topic, user: attrs[:user]) }
|
2013-02-25 11:42:20 -05:00
|
|
|
raw "Hello world"
|
2015-09-21 18:50:52 -04:00
|
|
|
post_type Post.types[:regular]
|
2022-02-06 22:23:34 -05:00
|
|
|
|
|
|
|
# Fabrication bypasses PostCreator, for performance reasons, where the counts are updated so we have to handle this manually here.
|
|
|
|
after_create { |post, _transients| UserStatCountUpdater.increment!(post) }
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2014-04-11 16:07:39 -04:00
|
|
|
Fabricator(:post_with_long_raw_content, from: :post) do
|
|
|
|
raw "This is a sample post with semi-long raw content. The raw content is also more than
|
|
|
|
two hundred characters to satisfy any test conditions that require content longer
|
2020-05-23 00:56:13 -04:00
|
|
|
than the typical test post raw content. It really is some long content, folks."
|
2014-04-11 16:07:39 -04:00
|
|
|
end
|
|
|
|
|
2023-06-01 14:55:27 -04:00
|
|
|
Fabricator(:post_with_very_long_raw_content, from: :post) do
|
|
|
|
raw "This is a sample post with very long raw content. The raw content is actually so long
|
|
|
|
that there is no way it could be longer. It is adding so many characters to the post content
|
|
|
|
so that we can use it in testing for scenarios where a post is very long and might cause issues.
|
|
|
|
The post is so long in fact, that the text is split into various paragraphs. Some people are not
|
|
|
|
very concise in their words. They tend to ramble and ramble on about certain information. This
|
|
|
|
is why we need to make sure that we are going about testing in certain ways so that when people
|
|
|
|
such as those that ramble on, are making posts, we can be sure that the posts are not causing
|
|
|
|
any issues. When issues happen it can cause lots of problems. For example, if a post is too long,
|
|
|
|
it affects the way it can be viewed by others.
|
|
|
|
Depending on the screen size, it may cause a lot of scrolling to take place. This is not good.
|
|
|
|
In certain cases, we want to truncate the content of the post when its too long so that it does
|
|
|
|
not cause issues. This is why we need to make sure that we are testing for these scenarios. I think
|
|
|
|
this post has gotten very long, however, I would like to make sure that it is a bit longer, so I
|
|
|
|
will add one final sentence. This is my final sentence, thank you for reading, goodbye."
|
|
|
|
end
|
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
Fabricator(:post_with_youtube, from: :post) do
|
2015-09-29 12:51:26 -04:00
|
|
|
raw "http://www.youtube.com/watch?v=9bZkp7q19f0"
|
2013-04-10 03:52:38 -04:00
|
|
|
cooked '<p><a href="http://www.youtube.com/watch?v=9bZkp7q19f0" class="onebox" target="_blank">http://www.youtube.com/watch?v=9bZkp7q19f0</a></p>'
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
Fabricator(:old_post, from: :post) do
|
|
|
|
topic { |attrs| Fabricate(:topic, user: attrs[:user], created_at: (DateTime.now - 100)) }
|
2020-04-22 14:49:53 -04:00
|
|
|
created_at { 100.days.ago }
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
Fabricator(:moderator_post, from: :post) do
|
|
|
|
user
|
|
|
|
topic { |attrs| Fabricate(:topic, user: attrs[:user]) }
|
2013-03-18 16:03:46 -04:00
|
|
|
post_type Post.types[:moderator_action]
|
2013-02-25 11:42:20 -05:00
|
|
|
raw "Hello world"
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
Fabricator(:basic_reply, from: :post) do
|
2019-01-15 21:40:16 -05:00
|
|
|
user(fabricator: :coding_horror)
|
2013-02-05 14:16:51 -05:00
|
|
|
reply_to_post_number 1
|
|
|
|
topic
|
|
|
|
raw "this reply has no quotes"
|
|
|
|
end
|
|
|
|
|
|
|
|
Fabricator(:reply, from: :post) do
|
2019-01-15 21:40:16 -05:00
|
|
|
user(fabricator: :coding_horror)
|
2013-02-05 14:16:51 -05:00
|
|
|
topic
|
|
|
|
raw '
|
|
|
|
[quote="Evil Trout, post:1"]hello[/quote]
|
|
|
|
Hmmm!
|
|
|
|
'
|
|
|
|
end
|
|
|
|
|
2015-08-05 06:57:31 -04:00
|
|
|
Fabricator(:post_with_plenty_of_images, from: :post) { cooked <<~HTML }
|
2019-12-18 00:51:57 -05:00
|
|
|
<aside class="quote"><img src="/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg"></aside>
|
|
|
|
<div class="onebox-result"><img src="/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg"></div>
|
|
|
|
<div class="onebox"><img src="/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg"></div>
|
2022-02-09 06:18:59 -05:00
|
|
|
<p>With an emoji! <img src="//cdn.discourse.org/meta/images/emoji/twitter/smile.png?v=#{Emoji::EMOJI_VERSION}" title=":smile:" class="emoji" alt="smile" loading="lazy" width="20" height="20"></p>
|
2018-08-16 07:45:30 -04:00
|
|
|
HTML
|
2013-07-07 19:39:08 -04:00
|
|
|
|
2013-07-21 18:37:23 -04:00
|
|
|
Fabricator(:post_with_uploaded_image, from: :post) do
|
FEATURE: Include optimized thumbnails for topics (#9215)
This introduces new APIs for obtaining optimized thumbnails for topics. There are a few building blocks required for this:
- Introduces new `image_upload_id` columns on the `posts` and `topics` table. This replaces the old `image_url` column, which means that thumbnails are now restricted to uploads. Hotlinked thumbnails are no longer possible. In normal use (with pull_hotlinked_images enabled), this has no noticeable impact
- A migration attempts to match existing urls to upload records. If a match cannot be found then the posts will be queued for rebake
- Optimized thumbnails are generated during post_process_cooked. If thumbnails are missing when serializing a topic list, then a sidekiq job is queued
- Topic lists and topics now include a `thumbnails` key, which includes all the available images:
```
"thumbnails": [
{
"max_width": null,
"max_height": null,
"url": "//example.com/original-image.png",
"width": 1380,
"height": 1840
},
{
"max_width": 1024,
"max_height": 1024,
"url": "//example.com/optimized-image.png",
"width": 768,
"height": 1024
}
]
```
- Themes can request additional thumbnail sizes by using a modifier in their `about.json` file:
```
"modifiers": {
"topic_thumbnail_sizes": [
[200, 200],
[800, 800]
],
...
```
Remember that these are generated asynchronously, so your theme should include logic to fallback to other available thumbnails if your requested size has not yet been generated
- Two new raw plugin outlets are introduced, to improve the customisability of the topic list. `topic-list-before-columns` and `topic-list-before-link`
2020-05-05 04:07:50 -04:00
|
|
|
raw { "<img src=\"#{Fabricate(:image_upload)}\" width=\"1500\" height=\"2000\">" }
|
2013-07-07 19:39:08 -04:00
|
|
|
end
|
|
|
|
|
2013-07-10 16:59:07 -04:00
|
|
|
Fabricator(:post_with_an_attachment, from: :post) do
|
2024-02-29 06:24:37 -05:00
|
|
|
raw "<a class=\"attachment\" href=\"/#{Discourse.store.upload_path}/original/1X/66b3ed1503efc936.zip\">archive.zip</a>"
|
2013-07-10 16:59:07 -04:00
|
|
|
end
|
|
|
|
|
2013-07-07 19:39:08 -04:00
|
|
|
Fabricator(:post_with_unsized_images, from: :post) do
|
2019-12-18 00:51:57 -05:00
|
|
|
raw "
|
|
|
|
<img src=\"http://foo.bar/image.png\">
|
|
|
|
<img src=\"/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg\">
|
|
|
|
"
|
2013-07-07 19:39:08 -04:00
|
|
|
end
|
|
|
|
|
2013-11-25 12:36:13 -05:00
|
|
|
Fabricator(:post_with_image_urls, from: :post) do
|
2015-09-29 12:51:26 -04:00
|
|
|
raw '
|
2013-11-25 12:36:13 -05:00
|
|
|
<img src="http://foo.bar/image.png">
|
|
|
|
<img src="http://domain.com/picture.jpg" width="50" height="42">
|
|
|
|
'
|
2013-07-07 19:39:08 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
Fabricator(:post_with_large_image, from: :post) do
|
2019-12-18 00:51:57 -05:00
|
|
|
raw "<img src=\"/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg\">"
|
2013-07-07 19:39:08 -04:00
|
|
|
end
|
|
|
|
|
2014-11-03 16:03:06 -05:00
|
|
|
Fabricator(:post_with_large_image_and_title, from: :post) do
|
2019-12-18 00:51:57 -05:00
|
|
|
raw "<img src=\"/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg\" title=\"WAT\">"
|
2014-11-03 16:03:06 -05:00
|
|
|
end
|
|
|
|
|
2016-03-09 22:50:07 -05:00
|
|
|
Fabricator(:post_with_large_image_on_subfolder, from: :post) do
|
2019-12-18 00:51:57 -05:00
|
|
|
raw "<img src=\"/subfolder/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg\">"
|
2016-03-09 22:50:07 -05:00
|
|
|
end
|
|
|
|
|
2013-11-05 13:04:47 -05:00
|
|
|
Fabricator(:post_with_uploads, from: :post) do
|
2019-12-18 00:51:57 -05:00
|
|
|
raw "
|
|
|
|
<a href=\"/#{Discourse.store.upload_path}/original/2X/2345678901234567.jpg\">Link</a>
|
|
|
|
<img src=\"/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg\">
|
|
|
|
"
|
2013-11-05 13:04:47 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
Fabricator(:post_with_uploads_and_links, from: :post) { raw <<~MD }
|
2019-12-18 00:51:57 -05:00
|
|
|
<a href="/#{Discourse.store.upload_path}/original/2X/2345678901234567.jpg">Link</a>
|
|
|
|
<img src="/#{Discourse.store.upload_path}/original/1X/1234567890123456.jpg">
|
2018-12-11 02:03:13 -05:00
|
|
|
<a href="http://www.google.com">Google</a>
|
|
|
|
<img src="http://foo.bar/image.png">
|
2019-12-18 00:51:57 -05:00
|
|
|
<a class="attachment" href="/#{Discourse.store.upload_path}/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)
|
2018-12-11 02:03:13 -05:00
|
|
|
:smile:
|
DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.
Heredoc tag names we use:
languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-02-28 14:50:55 -05:00
|
|
|
MD
|
2013-11-05 13:04:47 -05:00
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
Fabricator(:post_with_external_links, from: :post) do
|
2024-01-18 01:08:40 -05:00
|
|
|
user { Fabricate(:user, refresh_auto_groups: true) }
|
2013-02-05 14:16:51 -05:00
|
|
|
topic
|
DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.
Heredoc tag names we use:
languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-02-28 14:50:55 -05:00
|
|
|
raw <<~MD
|
2018-12-11 02:03:13 -05:00
|
|
|
Here's a link to twitter: http://twitter.com
|
|
|
|
And a link to google: http://google.com
|
|
|
|
And a secure link to google: https://google.com
|
|
|
|
And a markdown link: [forumwarz](http://forumwarz.com)
|
|
|
|
And a markdown link with a period after it [codinghorror](http://www.codinghorror.com/blog).
|
|
|
|
And one with a hash http://discourse.org#faq
|
|
|
|
And one with a two hash http://discourse.org#a#b
|
DEV: Correctly tag heredocs (#16061)
This allows text editors to use correct syntax coloring for the heredoc sections.
Heredoc tag names we use:
languages: SQL, JS, RUBY, LUA, HTML, CSS, SCSS, SH, HBS, XML, YAML/YML, MF, ICS
other: MD, TEXT/TXT, RAW, EMAIL
2022-02-28 14:50:55 -05:00
|
|
|
MD
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
2013-04-03 13:25:52 -04:00
|
|
|
|
|
|
|
Fabricator(:private_message_post, from: :post) do
|
2022-08-10 01:25:39 -04:00
|
|
|
transient :recipient
|
2013-04-03 13:25:52 -04:00
|
|
|
user
|
|
|
|
topic do |attrs|
|
|
|
|
Fabricate(
|
|
|
|
:private_message_topic,
|
|
|
|
user: attrs[:user],
|
|
|
|
created_at: attrs[:created_at],
|
2013-04-16 16:56:18 -04:00
|
|
|
subtype: TopicSubtype.user_to_user,
|
2013-04-03 13:25:52 -04:00
|
|
|
topic_allowed_users: [
|
2017-04-26 23:53:53 -04:00
|
|
|
Fabricate.build(:topic_allowed_user, user: attrs[:user]),
|
2022-08-10 01:25:39 -04:00
|
|
|
Fabricate.build(:topic_allowed_user, user: attrs[:recipient] || Fabricate(:user)),
|
2013-04-03 13:25:52 -04:00
|
|
|
],
|
|
|
|
)
|
|
|
|
end
|
|
|
|
raw "Ssshh! This is our secret conversation!"
|
2013-04-10 03:52:38 -04:00
|
|
|
end
|
2017-11-10 10:10:25 -05:00
|
|
|
|
2022-09-30 01:44:04 -04:00
|
|
|
Fabricator(:group_private_message_post, from: :post) do
|
|
|
|
transient :recipients
|
|
|
|
user
|
|
|
|
topic do |attrs|
|
|
|
|
Fabricate(
|
|
|
|
:private_message_topic,
|
|
|
|
user: attrs[:user],
|
|
|
|
created_at: attrs[:created_at],
|
|
|
|
subtype: TopicSubtype.user_to_user,
|
|
|
|
topic_allowed_users: [Fabricate.build(:topic_allowed_user, user: attrs[:user])],
|
|
|
|
topic_allowed_groups: [
|
|
|
|
Fabricate.build(:topic_allowed_group, group: attrs[:recipients] || Fabricate(:group)),
|
|
|
|
],
|
|
|
|
)
|
|
|
|
end
|
|
|
|
raw "Ssshh! This is our group secret conversation!"
|
|
|
|
end
|
|
|
|
|
2019-07-22 10:55:49 -04:00
|
|
|
Fabricator(:private_message_post_one_user, from: :post) do
|
|
|
|
user
|
|
|
|
topic do |attrs|
|
|
|
|
Fabricate(
|
|
|
|
:private_message_topic,
|
|
|
|
user: attrs[:user],
|
|
|
|
created_at: attrs[:created_at],
|
|
|
|
subtype: TopicSubtype.user_to_user,
|
|
|
|
topic_allowed_users: [Fabricate.build(:topic_allowed_user, user: attrs[:user])],
|
|
|
|
)
|
|
|
|
end
|
|
|
|
raw "Ssshh! This is our secret conversation!"
|
|
|
|
end
|
|
|
|
|
2017-11-10 10:10:25 -05:00
|
|
|
Fabricator(:post_via_email, from: :post) do
|
|
|
|
incoming_email
|
|
|
|
via_email true
|
|
|
|
|
|
|
|
after_create do |post|
|
|
|
|
incoming_email.topic = post.topic
|
|
|
|
incoming_email.post = post
|
|
|
|
incoming_email.user = post.user
|
|
|
|
end
|
|
|
|
end
|
2019-09-06 14:48:57 -04:00
|
|
|
|
|
|
|
Fabricator(:whisper, from: :post) { post_type Post.types[:whisper] }
|
2021-08-30 01:07:53 -04:00
|
|
|
|
|
|
|
Fabricator(:small_action, from: :post) { post_type Post.types[:small_action] }
|