mirror of
https://github.com/discourse/discourse.git
synced 2025-06-03 00:55:22 +08:00
FEATURE: pasting a link into the title of the composer can automatically onebox it and update the title
This commit is contained in:
42
test/javascripts/acceptance/composer-topic-links-test.js.es6
Normal file
42
test/javascripts/acceptance/composer-topic-links-test.js.es6
Normal file
@ -0,0 +1,42 @@
|
||||
import { acceptance } from "helpers/qunit-helpers";
|
||||
|
||||
acceptance("Composer topic featured links", {
|
||||
loggedIn: true,
|
||||
settings: {
|
||||
topic_featured_link_enabled: true
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
test("onebox with title", () => {
|
||||
visit("/");
|
||||
click('#create-topic');
|
||||
fillIn('#reply-title', "http://www.example.com/has-title.html");
|
||||
andThen(() => {
|
||||
ok(find('.d-editor-preview').html().trim().indexOf('onebox') > 0, "it pastes the link into the body and previews it");
|
||||
ok(exists('.d-editor-textarea-wrapper .popup-tip.good'), 'the body is now good');
|
||||
equal(find('.title-input input').val(), "An interesting article", "title is from the oneboxed article");
|
||||
});
|
||||
});
|
||||
|
||||
test("onebox result doesn't include a title", () => {
|
||||
visit("/");
|
||||
click('#create-topic');
|
||||
fillIn('#reply-title', 'http://www.example.com/no-title.html');
|
||||
andThen(() => {
|
||||
ok(find('.d-editor-preview').html().trim().indexOf('onebox') > 0, "it pastes the link into the body and previews it");
|
||||
ok(exists('.d-editor-textarea-wrapper .popup-tip.good'), 'the body is now good');
|
||||
equal(find('.title-input input').val(), "no-title.html", "title is from the end of the url");
|
||||
});
|
||||
});
|
||||
|
||||
test("no onebox result", () => {
|
||||
visit("/");
|
||||
click('#create-topic');
|
||||
fillIn('#reply-title', "http://www.example.com/nope-onebox.html");
|
||||
andThen(() => {
|
||||
equal(find('.d-editor-preview').html().trim().indexOf('onebox'), -1, "link isn't put into the post");
|
||||
equal(find('.d-editor-input').val().length, 0, "link isn't put into the post");
|
||||
equal(find('.title-input input').val(), "http://www.example.com/nope-onebox.html", "title is unchanged");
|
||||
});
|
||||
});
|
@ -320,6 +320,26 @@ export default function() {
|
||||
this.delete('/admin/users/:user_id/revoke_api_key', success);
|
||||
this.post('/admin/badges', success);
|
||||
this.delete('/admin/badges/:id', success);
|
||||
|
||||
this.get('/onebox', request => {
|
||||
if (request.queryParams.url === 'http://www.example.com/has-title.html') {
|
||||
return [
|
||||
200,
|
||||
{"Content-Type": "application/html"},
|
||||
'<aside class="onebox"><article class="onebox-body"><h3><a href="http://www.example.com/article.html">An interesting article</a></h3></article></aside>'
|
||||
];
|
||||
}
|
||||
|
||||
if (request.queryParams.url === 'http://www.example.com/no-title.html') {
|
||||
return [
|
||||
200,
|
||||
{"Content-Type": "application/html"},
|
||||
'<aside class="onebox"><article class="onebox-body"><p>No title</p></article></aside>'
|
||||
];
|
||||
}
|
||||
|
||||
return [404, {"Content-Type": "application/html"}, ''];;
|
||||
});
|
||||
});
|
||||
|
||||
server.prepareBody = function(body){
|
||||
|
@ -231,3 +231,19 @@ test("Title length for static page topics as admin", function() {
|
||||
composer.set('title', '');
|
||||
ok(!composer.get('titleLengthValid'), "admins must set title to at least 1 character");
|
||||
});
|
||||
|
||||
test("title placeholder depends on what you're doing", function() {
|
||||
let composer = createComposer({action: Composer.CREATE_TOPIC});
|
||||
equal(composer.get('titlePlaceholder'), 'composer.title_placeholder', "placeholder for normal topic");
|
||||
|
||||
composer = createComposer({action: Composer.PRIVATE_MESSAGE});
|
||||
equal(composer.get('titlePlaceholder'), 'composer.title_placeholder', "placeholder for private message");
|
||||
|
||||
Discourse.SiteSettings.topic_featured_link_enabled = true;
|
||||
|
||||
composer = createComposer({action: Composer.CREATE_TOPIC});
|
||||
equal(composer.get('titlePlaceholder'), 'composer.title_or_link_placeholder', "placeholder invites you to paste a link");
|
||||
|
||||
composer = createComposer({action: Composer.PRIVATE_MESSAGE});
|
||||
equal(composer.get('titlePlaceholder'), 'composer.title_placeholder', "placeholder for private message with topic links enabled");
|
||||
});
|
||||
|
Reference in New Issue
Block a user