aboutsummaryrefslogtreecommitdiffstats
path: root/test/FileControllerTest.js
blob: 75c924e619416b0541c322953719640775ae0c59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
FileControllerTest = TestCase('FileControllerTest');

FileControllerTest.prototype.XtestOnSelectUpdateView = function(){
  var view = jQuery('<span><a/><span/></span>');
  var swf = {};
  var controller = new FileController(view, null, swf);
  swf.uploadFile = function(path){};
  controller.select('A', 9, '9 bytes');
  assertEquals(view.find('a').text(), "A");
  assertEquals(view.find('span').text(), "9 bytes");
};

FileControllerTest.prototype.XtestUpdateModelView = function(){
  var view = FileController.template('');
  var input = $('<input name="value.input">');
  var controller;
  var scope = new Scope({value:{}, $binder:{updateView:function(){
      controller.updateView(scope);
    }}});
  view.data('scope', scope);
  controller = new FileController(view, 'value.input', null, "http://server_base");
  var value = '{"text":"A", "size":123, "id":"890"}';
  controller.uploadCompleteData(value);
  controller.updateView(scope);
  assertEquals(scope.get('value.input.text'), 'A');
  assertEquals(scope.get('value.input.size'), 123);
  assertEquals(scope.get('value.input.id'), '890');
  assertEquals(scope.get('value.input.url'), 'http://server_base/_attachments/890/A');
  assertEquals(view.find('a').text(), "A");
  assertEquals(view.find('a').attr('href'), "http://server_base/_attachments/890/A");
  assertEquals(view.find('span').text(), "123 bytes");
};

FileControllerTest.prototype.XtestFileUpload = function(){
  expectAsserts(1);
  var swf = {};
  var controller = new FileController(null, null, swf, "http://server_base");
  swf.uploadFile = function(path){
    assertEquals("http://server_base/_attachments", path);
  };
  controller.name = "Name";
  controller.upload();
};

FileControllerTest.prototype.XtestFileUploadNoFileIsNoop = function(){
  expectAsserts(0);
  var swf = {uploadFile:function(path){
    fail();
  }};
  var controller = new FileController(null, swf);
  controller.upload("basePath", null);
};

FileControllerTest.prototype.XtestRemoveAttachment = function(){
  var doc = FileController.template();
  var input = $('<input name="file">');
  var scope = new Scope();
  input.data('scope', scope);
  var controller = new FileController(doc, 'file', null, null);
  controller.updateView(scope);
  assertEquals(false, doc.find('input').attr('checked'));

  scope.set('file', {url:'url', size:123});
  controller.updateView(scope);
  assertEquals(true, doc.find('input').attr('checked'));

  doc.find('input').attr('checked', false);
  controller.updateModel(scope);
  assertNull(scope.get('file'));

  doc.find('input').attr('checked', true);
  controller.updateModel(scope);
  assertEquals('url', scope.get('file.url'));
  assertEquals(123, scope.get('file.size'));
};

FileControllerTest.prototype.XtestShouldEmptyOutOnUndefined = function () {
  var view = FileController.template('hello');
  var controller = new FileController(view, 'abc', null, null);

  var scope = new Scope();
  scope.set('abc', {text: 'myname', url: 'myurl', size: 1234});

  controller.updateView(scope);
  assertEquals("myurl", view.find('a').attr('href'));
  assertEquals("myname", view.find('a').text());
  assertEquals(true, view.find('input').is(':checked'));
  assertEquals("1.2 KB", view.find('span').text());

  scope.set('abc', undefined);
  controller.updateView(scope);
  assertEquals("myurl", view.find('a').attr('href'));
  assertEquals("myname", view.find('a').text());
  assertEquals(false, view.find('input').is(':checked'));
  assertEquals("1.2 KB", view.find('span').text());
};


, null, {asynchronous: false}); req.addEventListener("onSuccess", function(res) { liberator.log(res.responseText); res.getHTMLDocument(); subscribeInfo = getSubscribeInfo(res.doc); liberator.log(subscribeInfo.toSource()); }); req.get(); return subscribeInfo; } function postSubscription(info, opts) { liberator.log("subscribe:" + info.toSource()); var postBody= "url=" + encodeURIComponent(info.target_url) + "&folder_id=0" + "&rate=" + (opts.rate || "0") + "&register=1" + "&feedlink=" + encodeURIComponent(info.feedlinks[0]) + "&public=1" + "&ApiKey=" + info.apiKey; liberator.log("POST DATA:" + postBody); var req = new libly.Request( endpoint, null, { asyncronus: false, postBody: postBody } ); req.addEventListener("onSuccess", function(data) { liberator.log("Post status: " + data.responseText); liberator.echo("Subscribe feed succeed."); }); req.addEventListener("onFailure", function(data) { liberator.log("POST FAILURE: " + data.responseText); liberator.echoerr("POST FAILURE: " + data.statusText); }); req.post(); } commands.addUserCommand( command, "Register feed subscriptions to " + servicename + ".", function(args) { handleFeedRequest({rate: args["-rate"]}); }, { options: [ [["-rate", "-r"], commands.OPTION_INT] ] }, true // Use in DEVELOP ); } function getSubscribeInfo(htmldoc) { var subscribeInfo = { target_url: null, register: 1, apiKey: null, feedlinks: [] }; $LXs('id("feed_candidates")/li', htmldoc).forEach( function(item) { var feedlink = $LX('./a[@class="feedlink"]', item); var title = $LX('./a[@class="subscribe_list"]', item); var users = $LX('./span[@class="subscriber_count"]/a', item); var yet = $LX('./input[@name="feedlink"]', item); liberator.log("input:" + feedlink.href); subscribeInfo.feedlinks.push([feedlink.href, (yet != null), (title ? title.textContent : '' ) + ' / ' + (users ? users.textContent : '0 user')]); }); var target_url = $LX('id("target_url")', htmldoc); if (!target_url) throw "Cannot find subscribe info about this page!"; subscribeInfo.target_url = target_url.value; liberator.log("target_url:" + subscribeInfo.target_url); subscribeInfo.apiKey = $LX('//*[@name="ApiKey"]', htmldoc).value; if (!subscribeInfo.apiKey) throw "Can't get API key for subscription!"; return subscribeInfo; } function selectFeed(links, next) { liberator.log(links.toSource()); liberator.echo("Following feeds were found on this site. Which are you subscribe?"); commandline.input("Input feed no. ", function(selected) { liberator.echo("You select " + selected + "."); commandline.close(); if (next && typeof next == "function") next(selected); else liberator.echoerr("Your selected no is invalid."); },{ completer: function(context) { context.title = ["Available feeds", "Title / users"]; context.completions = links; } }); // Open candidates list forcibly events.feedkeys("<TAB>"); } // For convenience function $LXs(a,b) libly.$U.getNodesFromXPath(a,b); function $LX(a,b) libly.$U.getFirstNodeFromXPath(a,b); // }}} return PUBLICS; })(); // vim:sw=2 ts=2 et si fdm=marker: