Commit 76db9fbf
Changed files (2)
app
assets
javascripts
presenters
spec
javascripts
presenters
app/assets/javascripts/presenters/new_tutorial_presenter.js.coffee
@@ -1,9 +1,11 @@
class window.NewTutorialPresenter
- constructor:(@view) ->
+ constructor:(@view, @service) ->
present:() ->
@view.add_tag_button.bind 'click', (event) =>
this.add_tag(@view.tag_input.val())
+ @view.url_input.bind 'change', (event) =>
+ @service.retrieve_info_on(@view.url_input.val(), this.display_url_info)
create_list_item_for:(tag) ->
'<a href="tags/"><span class="label">'+tag+'</span></a>'
@@ -15,3 +17,4 @@ class window.NewTutorialPresenter
else
@view.hidden_tag_list.val( @view.hidden_tag_list.val() + ', ' + new_tag)
+ display_url_info:(data) ->
spec/javascripts/presenters/new_tutorial_presenter_spec.js
@@ -5,11 +5,17 @@ describe ("NewTutorialPresenter", function() {
tag_list: $('<ul id="tag-list">'),
tag_input: $('<input type="text" />'),
hidden_tag_list: $('<input type="hidden" />'),
+ url_input: $('<input type="text" />')
};
- sut = new NewTutorialPresenter(view);
+ service = {
+ retrieve_info_on:null
+ };
+ sut = new NewTutorialPresenter(view, service);
});
var sut;
var view;
+ var service;
+
describe ("when the add tag button is clicked", function() {
it ("should add the new tag to the list of tags", function() {
expect(view.tag_list.html()).toEqual('<a href="tags/"><span class="label">ruby</span></a>');
@@ -35,4 +41,17 @@ describe ("NewTutorialPresenter", function() {
view.add_tag_button.trigger('click');
});
});
+ describe ("when a url is entered", function() {
+ it ("should connect to embedly to retrieve information about the url", function() {
+ expect(service.retrieve_info_on).toHaveBeenCalledWith(url, sut.display_url_info);
+ });
+ beforeEach (function() {
+ spyOn(service, 'retrieve_info_on');
+ sut.present();
+ url = 'http://mokhan.ca/';
+ view.url_input.val(url);
+ view.url_input.trigger('change');
+ });
+ var url;
+ });
});