Commit 76db9fbf

mo k <mo@mokhan.ca>
2012-09-18 22:44:54
when a url is entered look up info on it.
1 parent dd37d9e
Changed files (2)
app
assets
javascripts
spec
javascripts
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;
+  });
 });