parlement 0.6 → 0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. data/CHANGES +13 -0
  2. data/README +51 -38
  3. data/app/controllers/account_controller.rb +65 -37
  4. data/app/controllers/application.rb +1 -1
  5. data/app/controllers/elt_controller.rb +1 -0
  6. data/app/models/elt.rb +25 -14
  7. data/app/models/mail.rb +36 -35
  8. data/app/models/mail_notify.rb +23 -0
  9. data/app/views/account/_login.rhtml +1 -1
  10. data/app/views/account/_show.rhtml +22 -5
  11. data/app/views/elt/_elt.rhtml +44 -47
  12. data/app/views/elt/_listByDate.rhtml +7 -7
  13. data/app/views/elt/show.rhtml +3 -3
  14. data/app/views/layouts/top.rhtml +1 -0
  15. data/app/views/person/show.rhtml +5 -0
  16. data/config/environment.rb +1 -1
  17. data/db/ROOT/parlement/Parlement_fr.txt +46 -0
  18. data/db/ROOT/parlement/news/Version_06.txt +25 -0
  19. data/db/ROOT/parlement/news/Version_07.txt +12 -0
  20. data/db/ROOT/parlement/test.txt +14 -5
  21. data/db/ROOT/parlement.txt +2 -0
  22. data/db/development_structure.sql +119 -44
  23. data/db/migrate/004_people_image.rb +9 -0
  24. data/lib/data_import.rb +9 -13
  25. data/public/javascripts/mybehaviour.js +41 -0
  26. data/test/fixtures/img.png +0 -0
  27. data/test/fixtures/mail/avatar +249 -0
  28. data/test/fixtures/people.yml +1 -1
  29. data/test/functional/account_controller_test.rb +108 -56
  30. data/test/functional/elt_controller_test.rb +6 -6
  31. data/test/unit/elt_test.rb +1 -1
  32. data/test/unit/mail_test.rb +17 -0
  33. data/vendor/plugins/engines/CHANGELOG +91 -53
  34. data/vendor/plugins/engines/README +1 -1
  35. data/vendor/plugins/engines/generators/engine/templates/init_engine.erb +6 -4
  36. data/vendor/plugins/engines/generators/engine/templates/test/test_helper.erb +5 -1
  37. data/vendor/plugins/engines/init.rb +8 -3
  38. data/vendor/plugins/engines/lib/engines/action_mailer_extensions.rb +6 -5
  39. data/vendor/plugins/engines/lib/engines/action_view_extensions.rb +10 -6
  40. data/vendor/plugins/engines/lib/engines/active_record_extensions.rb +3 -1
  41. data/vendor/plugins/engines/lib/engines/dependencies_extensions.rb +27 -16
  42. data/vendor/plugins/engines/lib/engines/routing_extensions.rb +28 -0
  43. data/vendor/plugins/engines/lib/engines/testing_extensions.rb +6 -2
  44. data/vendor/plugins/engines/lib/engines.rb +77 -12
  45. data/vendor/plugins/engines/tasks/deprecated_engines.rake +7 -0
  46. data/vendor/plugins/engines/tasks/engines.rake +25 -10
  47. data/vendor/plugins/login_engine/CHANGELOG +8 -0
  48. data/vendor/plugins/login_engine/README +2 -2
  49. data/vendor/plugins/login_engine/app/controllers/user_controller.rb +4 -1
  50. data/vendor/plugins/login_engine/app/views/user/forgot_password.rhtml +1 -1
  51. data/vendor/plugins/login_engine/init_engine.rb +6 -5
  52. data/vendor/plugins/login_engine/lib/login_engine/authenticated_user.rb +1 -1
  53. data/vendor/plugins/output_compression/CHANGELOG +0 -0
  54. data/vendor/plugins/output_compression/MIT-LICENSE +20 -0
  55. data/vendor/plugins/output_compression/README +4 -4
  56. data/vendor/plugins/output_compression/init.rb +1 -2
  57. data/vendor/plugins/output_compression/lib/output_compression.rb +84 -66
  58. data/vendor/plugins/output_compression/{Rakefile → rakefile} +22 -22
  59. data/vendor/plugins/output_compression/test/output_test.rb +11 -0
  60. data/vendor/plugins/output_compression/test/test_controller.rb +3 -0
  61. data/vendor/plugins/output_compression/test/test_helper.rb +14 -0
  62. data/vendor/plugins/responds_to_parent/MIT-LICENSE +20 -0
  63. data/vendor/plugins/responds_to_parent/README +42 -0
  64. data/vendor/plugins/responds_to_parent/Rakefile +22 -0
  65. data/vendor/plugins/responds_to_parent/init.rb +1 -0
  66. data/vendor/plugins/responds_to_parent/lib/responds_to_parent.rb +45 -0
  67. data/vendor/plugins/responds_to_parent/test/responds_to_parent_test.rb +115 -0
  68. metadata +33 -16
  69. data/vendor/plugins/login_engine/tasks/tasks.rake +0 -4
  70. data/vendor/plugins/output_compression/tasks/output_compression_tasks.rake +0 -4
  71. data/vendor/plugins/output_compression/test/output_compression_test.rb +0 -8
  72. /data/db/ROOT/parlement/news/{release0.1.txt → Version_01.txt} +0 -0
  73. /data/db/ROOT/parlement/news/{release0.2.txt → Version_02.txt} +0 -0
  74. /data/db/ROOT/parlement/news/{release0.3.txt → Version_03.txt} +0 -0
  75. /data/db/ROOT/parlement/news/{release0.4.txt → Version_04.txt} +0 -0
  76. /data/db/ROOT/parlement/news/{release0.5.txt → Version_05.txt} +0 -0
data/lib/data_import.rb CHANGED
@@ -5,7 +5,7 @@ require 'config/environment'
5
5
 
6
6
  dir = 'db/ROOT'
7
7
 
8
- ICONV = Iconv.new('UTF-8', 'ISO-8859-15')
8
+ ICONV = Iconv.new 'UTF-8', 'ISO-8859-15'
9
9
 
10
10
  def inputDir(directory)
11
11
  Dir.glob(directory+'/*.txt') do |file|
@@ -25,19 +25,17 @@ def inputDir(directory)
25
25
  end
26
26
 
27
27
  def inputFile(d, fileName)
28
- puts 'Loading: '+fileName
28
+ puts 'Loading: '+File.basename(fileName).gsub(/.txt/, '')
29
29
 
30
- elt = Elt.find_by_id(File.basename(fileName).gsub(/.txt/, ''))
30
+ elt = Elt.find_by_id File.basename(fileName).gsub(/.txt/, '')
31
31
 
32
- file = File.new(fileName)
33
-
34
- if elt == nil
35
- elt = Elt.new
36
- elt.id = File.basename(fileName).gsub(/.txt/, '')
37
- elt.created_on = nil
32
+ unless elt
33
+ elt = Elt.new :id => File.basename(fileName).gsub(/.txt/, ''), :created_on => nil
38
34
  end
39
35
 
40
- if elt.created_on == nil or elt.created_on < file.mtime
36
+ file = File.new fileName
37
+
38
+ if !elt.created_on or elt.created_on < file.mtime
41
39
  elt.mail = nil
42
40
 
43
41
  elt.parent_id = d
@@ -45,9 +43,7 @@ def inputFile(d, fileName)
45
43
  puts elt.created_on.class
46
44
  elt.subject = ICONV.iconv(file.gets.strip)
47
45
  elt.body = format(ICONV.iconv(file.gets('\n')))
48
- print "subject: "+elt.subject
49
- #puts "body: "+elt.body
50
- puts " (created_on: "+elt.created_on.to_s+")"
46
+ puts "subject: #{elt.subject} (created_on: #{elt.created_on.to_s})"
51
47
  elt.save
52
48
  end
53
49
  end
@@ -94,3 +94,44 @@ function updateChoices(choices) {
94
94
  });
95
95
  }
96
96
 
97
+ function setSize(img) {
98
+ var divHeight = findPosY(img.parentNode.nextSibling) - findPosY(img);
99
+ if (findPosY(img.parentNode.nextSibling) == 0) divHeight = findPosY(img.parentNode.nextSibling.nextSibling) - findPosY(img);
100
+
101
+ if (false && img.offsetWidth > 1) {
102
+ var debug = document.createElement("span");
103
+ debug.appendChild(document.createTextNode(
104
+ "divHeight: "+divHeight
105
+ +"; img.offsetHeight:"+img.offsetHeight
106
+ +"; img.offsetParent.offsetWidth: "+img.offsetParent.offsetWidth
107
+ +"; img.offsetWidth:"+img.offsetWidth
108
+ +"; findPosY(img):"+findPosY(img)
109
+ +"; findPosY(img.parentNode.nextSibling):"
110
+ +findPosY(img.parentNode.nextSibling)));
111
+ if (img.parentNode.parentNode) img.parentNode.parentNode.insertBefore(debug, img.parentNode);
112
+ }
113
+
114
+ if (divHeight > 0 && img.offsetHeight > divHeight) img.style.height = divHeight+"px";
115
+
116
+ // For IE
117
+ // Only touch the width, in order to keep the width/height ratio
118
+ while (img.offsetHeight > 0 && img.offsetWidth > img.offsetParent.offsetWidth / 3) {
119
+ img.style.height = (img.offsetHeight - 30) + "px";
120
+ }
121
+ }
122
+
123
+ function findPosY(obj) {
124
+ if (!obj) return 0;
125
+ var curtop = 0;
126
+ if (obj.offsetParent)
127
+ while (1) {
128
+ curtop += obj.offsetTop;
129
+ if (!obj.offsetParent)
130
+ break;
131
+ obj = obj.offsetParent;
132
+ }
133
+ else if (obj.y)
134
+ curtop += obj.y;
135
+ return curtop;
136
+ }
137
+
Binary file
@@ -0,0 +1,249 @@
1
+ From emmanuel.charpentier@free.fr Sun Jul 09 00:17:52 2006
2
+ Return-path: <emmanuel.charpentier@free.fr>
3
+ X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on achilles
4
+ X-Spam-Level:
5
+ X-Spam-Status: No, score=-5.6 required=4.0 tests=ALL_TRUSTED,BAYES_00,
6
+ MIME_BASE64_NO_NAME,NO_REAL_NAME autolearn=ham version=3.1.3
7
+ Envelope-to: manu@localhost
8
+ Delivery-date: Sun, 09 Jul 2006 00:17:52 +0200
9
+ Received: from [127.0.0.1] (helo=localhost)
10
+ by localhost.localdomain with esmtp (Exim 4.62)
11
+ (envelope-from <manu@localhost>)
12
+ id 1FzL7Y-00063H-Hi
13
+ for manu@localhost; Sun, 09 Jul 2006 00:17:52 +0200
14
+ Date: Sun, 9 Jul 2006 00:17:52 +0200
15
+ From: manu@leparlement.org
16
+ To: people@leparlement.org
17
+ Subject: Re: people
18
+ Message-ID: <20060708221752.GB23151@echarp.org>
19
+ MIME-Version: 1.0
20
+ Content-Type: multipart/mixed; boundary="dTy3Mrz/UPE2dbVg"
21
+ Content-Disposition: inline
22
+ User-Agent: Mutt/1.5.11+cvs20060403
23
+ Status: RO
24
+ Content-Length: 15459
25
+ Lines: 222
26
+
27
+
28
+ --dTy3Mrz/UPE2dbVg
29
+ Content-Type: text/plain; charset=us-ascii
30
+ Content-Disposition: inline
31
+
32
+ Test de mon propre avatar
33
+
34
+ --dTy3Mrz/UPE2dbVg
35
+ Content-Type: image/jpeg
36
+ Content-Disposition: attachment; filename="20030520echarp.jpg"
37
+ Content-Transfer-Encoding: base64
38
+
39
+ /9j/4AAQSkZJRgABAQEASABIAAD/4RS/RXhpZgAASUkqAAgAAAALAA4BAgAgAAAAkgAAAA8B
40
+ AgAYAAAAsgAAABABAgAMAAAAygAAABIBAwABAAAAAQAAABoBBQABAAAA1gAAABsBBQABAAAA
41
+ 3gAAACgBAwABAAAAAgAAADEBAgAIAAAA5gAAADIBAgAUAAAA7gAAABMCAwABAAAAAgAAAGmH
42
+ BAABAAAAAgEAAIkEAABPTFlNUFVTIERJR0lUQUwgQ0FNRVJBICAgICAgICAgAE9MWU1QVVMg
43
+ T1BUSUNBTCBDTy4sTFREAEM4MzBMLEQzNDBSAEgAAAABAAAASAAAAAEAAAB2ODVwLTcxADAw
44
+ MDA6MDA6MDAgMDA6MDA6MDAAFgCaggUAAQAAABACAACdggUAAQAAABgCAAAniAMAAQAAAGQA
45
+ AAAAkAcABAAAADAyMTADkAIAFAAAACACAAAEkAIAFAAAADQCAAABkQcABAAAAAECAwACkQUA
46
+ AQAAAEgCAAAEkgoAAQAAAFACAAAFkgUAAQAAAFgCAAAHkgMAAQAAAAEAAAAIkgMAAQAAAAAA
47
+ AAAJkgMAAQAAAAAAAAAKkgUAAQAAAGACAAB8kgcAhgEAAGgCAACGkgcAfQAAAO4DAAAAoAcA
48
+ BAAAADAxMDABoAMAAQAAAAEAAAACoAQAAQAAAIACAAADoAQAAQAAAOABAAAAowcAAQAAAAMA
49
+ AAAFoAQAAQAAAGsEAAAAAAAAAQAAAC8AAAAcAAAACgAAADAwMDA6MDA6MDAgMDA6MDA6MDAA
50
+ MDAwMDowMDowMCAwMDowMDowMAABAAAAAQAAAAAAAAAKAAAAAwAAAAEAAAA3AAAACgAAAE9M
51
+ WU1QAAAACwAAAgQAAwAAAPYCAAABAgMAAQAAAAEAAAACAgMAAQAAAAAAAAADAgMAAQAAAAAA
52
+ AAAEAgUAAQAAAAIDAAAFAgUAAQAAAAoDAAAGAggABgAAABIDAAAHAgIABQAAAB4DAAAIAgIA
53
+ MwAAACMDAAAJAgcAIAAAAFYDAAAADwQAHgAAAHYDAAAAAAAAAAAAAAAAAAAAAAAACgAAAJgC
54
+ AABkAAAAEv9T/jH+Mf+u/q7+U1I4NQBbcGljdHVyZUluZm9dIFJlc29sdXRpb249MSBbQ2Ft
55
+ ZXJhIEluZm9dIFR5cGU9U1I4NQBPTFlNUFVTIERJR0lUQUwgQ0FNRVJBAAAAAAAAAAAAAACA
56
+ AIABelgAAAAAAQAAA8dIvAAACjAAAFC+AAArWgAAU68AAC48AAAw9gECAAAIbQAACDwJPwlV
57
+ CJUAALk5AQAAAAAAAAAxMAcAAAAAAAIAAAAAAAAAFQgAADxwGkAHMXoAAGRkAACyDQ3///8A
58
+ AAAAAAAAVS8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
59
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
60
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgABAAIABAAAAFI5OAACAAcABAAAADAxMDAA
61
+ AAAABgADAQMAAQAAAAYAAAAaAQUAAQAAANcEAAAbAQUAAQAAAN8EAAAoAQMAAQAAAAIAAAAB
62
+ AgQAAQAAAOcEAAACAgQAAQAAANAPAAAAAAAASAAAAAEAAABIAAAAAQAAAP/Y/9sAxQANCQoM
63
+ CggNDAsMDw4NEBQiFhQSEhQpHR8YIjErMzIwKy8uNjxNQjY5STouL0NcRElQUldXVzRBX2Ze
64
+ VGVNVVdTAQ4PDxQSFCcWFidTNy83U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NT
65
+ U1NTU1NTU1NTU1NTU1NTU1MCDg8PFBIUJxYWJ1M3LzdTU1NTU1NTU1NTU1NTU1NTU1NTU1NT
66
+ U1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU//EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgME
67
+ BQYHCAkKCxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS
68
+ 0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1
69
+ dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW
70
+ 19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsR
71
+ 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
247
+
248
+ --dTy3Mrz/UPE2dbVg--
249
+
@@ -7,7 +7,7 @@ first_person:
7
7
  echarp:
8
8
  id: echarp
9
9
  name: echarp
10
- email: manu@noos.fr
10
+ email: manu@leparlement.org
11
11
  created_on: 2006-03-02
12
12
  another_person:
13
13
  id: second
@@ -10,18 +10,18 @@ class AccountController; def rescue_action(e) raise e end; end
10
10
 
11
11
  class AccountControllerTest < Test::Unit::TestCase
12
12
 
13
- fixtures :people, LoginEngine.config(:user_table).to_sym, :subscribers
13
+ fixtures :people, LoginEngine.config(:user_table).to_sym, :elts, :mails, :attachments, :subscribers
14
14
  #fixtures :people, :users
15
15
 
16
16
  def setup
17
17
  LoginEngine::CONFIG[:salt] = "test-salt"
18
18
 
19
- @controller = AccountController.new
20
- @request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new
21
- @request.host = "localhost"
19
+ @controller = AccountController.new
20
+ @request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new
21
+ @request.host = "localhost"
22
22
 
23
23
  @elt = Elt.find '1'
24
- end
24
+ end
25
25
 
26
26
 
27
27
  """ _ _
@@ -32,28 +32,28 @@ class AccountControllerTest < Test::Unit::TestCase
32
32
  |_| |___/
33
33
  """
34
34
  def test_signup
35
- post :login, :person => { :name => "my_bob", :email => "" },
35
+ post :login, :person => { :name => "my_bob", :email => "" },
36
36
  :user => { :password => "" }
37
37
  assert_not_nil session[:person]
38
38
  assert_nil session[:user]
39
- end
40
-
41
- def test_login_logoff_no_password
42
- post :login, :person => { :name => "bob_other", :email => "" },
39
+ end
40
+
41
+ def test_login_logoff_no_password
42
+ post :login, :person => { :name => "bob_other", :email => "" },
43
43
  :user => { :password => "" }
44
44
  assert_equal people(:bob_other), @request.session[:person]
45
45
  assert_nil session[:user]
46
- get :logout
46
+ get :logout
47
47
  assert_nil session[:person]
48
- end
48
+ end
49
49
 
50
- def test_bad_pseudo
50
+ def test_bad_pseudo
51
51
  post :login, :person => { :name => "yo", :email => "" },
52
52
  :user => { :password => "" }
53
- assert_invalid_column_on_record "person", :name
54
- assert_success
53
+ assert_invalid_column_on_record "person", :name
54
+ assert_success
55
55
  assert_nil session[:person]
56
- end
56
+ end
57
57
 
58
58
 
59
59
  """ _
@@ -63,48 +63,48 @@ class AccountControllerTest < Test::Unit::TestCase
63
63
  | .__/ \__,_|___/___/ \_/\_/ \___/|_| \__,_|
64
64
  |_|
65
65
  """
66
- def test_password_protect
67
- post :login, :person => { :name => "bob_another", :email => "" },
66
+ def test_password_protect
67
+ post :login, :person => { :name => "bob_another", :email => "" },
68
68
  :user => { :password => "atest" }
69
69
  assert_not_nil session[:person]
70
70
  assert_not_nil session[:user]
71
- end
72
-
73
- def test_auth_bob
74
- post :login, :person => { :name => "bob", :email => "" },
71
+ end
72
+
73
+ def test_auth_bob
74
+ post :login, :person => { :name => "bob", :email => "" },
75
75
  :user => { :password => "atest" }
76
- assert_equal people(:bob), @response.session[:person]
76
+ assert_equal people(:bob), @response.session[:person]
77
77
  assert_not_nil session[:person]
78
78
  assert_not_nil session[:user]
79
- end
79
+ end
80
80
 
81
- def test_bad_password
82
- post :login, :person => { :name => "newbob", :email => "" },
81
+ def test_bad_password
82
+ post :login, :person => { :name => "newbob", :email => "" },
83
83
  :user => { :password => "newpassword", :password_confirmation => "wrong" }
84
- #assert_invalid_column_on_record "user", :password
85
- assert_success
86
- end
84
+ #assert_invalid_column_on_record "user", :password
85
+ assert_success
86
+ end
87
87
 
88
- def test_login_logoff_password
89
- post :login, :person => { :name => "my_bob", :email => "" },
88
+ def test_login_logoff_password
89
+ post :login, :person => { :name => "my_bob", :email => "" },
90
90
  :user => { :password => "my_bob" }
91
91
  assert_not_nil session[:person]
92
- get :logout
92
+ get :logout
93
93
  assert_nil session[:user]
94
- end
94
+ end
95
95
 
96
- def test_invalid_password
97
- post :login, :person => { :name => "my_bob", :email => "" },
96
+ def test_invalid_password
97
+ post :login, :person => { :name => "my_bob", :email => "" },
98
98
  :user => { :password => "my_bob" }
99
99
  assert_not_nil session[:person]
100
100
  assert_not_nil session[:user]
101
- get :logout
102
- post :login, :person => { :name => "my_bob", :email => "" },
101
+ get :logout
102
+ post :login, :person => { :name => "my_bob", :email => "" },
103
103
  :user => { :password => "my_bo" }
104
104
  assert_nil session[:person]
105
105
  assert_nil session[:user]
106
- #assert_template_has "login"
107
- end
106
+ #assert_template_has "login"
107
+ end
108
108
 
109
109
 
110
110
  """ _ _
@@ -113,8 +113,8 @@ class AccountControllerTest < Test::Unit::TestCase
113
113
  | __/ | | | | | (_| | | |
114
114
  \___|_| |_| |_|\__,_|_|_|
115
115
  """
116
- def test_password_and_email_protect
117
- post :login, :person => { :name => "my_bob", :email => "manu@noos.fr" },
116
+ def test_password_and_email_protect
117
+ post :login, :person => { :name => "my_bob", :email => "manu@noos.fr" },
118
118
  :user => { :password => "my_bob" }
119
119
  assert_not_nil session[:person]
120
120
  assert_not_nil session[:user]
@@ -122,18 +122,17 @@ class AccountControllerTest < Test::Unit::TestCase
122
122
  assert_equal "manu@noos.fr", @request.session[:user].email
123
123
  assert_not_equal @request.session[:person].email, @request.session[:user].email
124
124
  assert_not_nil @request.session[:user].security_token
125
- end
126
-
127
- def invalid_email
128
- post :login, :person => { :name => "bob", :email => "" },
125
+ end
126
+
127
+ def invalid_email
128
+ post :login, :person => { :name => "bob", :email => "" },
129
129
  :user => { :password => "not_correct" }
130
130
 
131
131
  assert_nil session[:person]
132
132
  assert_nil session[:user]
133
-
134
- assert_template_has "login"
135
- end
136
133
 
134
+ assert_template_has "login"
135
+ end
137
136
 
138
137
  def test_email_protect
139
138
  LoginEngine::CONFIG[:use_email_notification] = true
@@ -184,7 +183,7 @@ class AccountControllerTest < Test::Unit::TestCase
184
183
  user = User.find_by_email("newbob@test.com")
185
184
  person = Person.find_by_name(user.login)
186
185
  assert_equal user.email, person.email
187
-
186
+
188
187
  post :login, :person => { :name => "newbob", :email => "" },
189
188
  :user => { :password => "newpassword" }
190
189
  assert_not_nil session[:person]
@@ -240,26 +239,79 @@ class AccountControllerTest < Test::Unit::TestCase
240
239
  get :logout
241
240
  end
242
241
 
243
- def test_update_subscribe
244
- post :login, :person => { :name => "bob_other", :email => "" },
242
+ def test_update_subscribe
243
+ post :login, :person => { :name => "bob_other", :email => "" },
245
244
  :user => { :password => "" }, :divId => 'author_ROOT'
246
245
 
247
246
  controller = @controller
248
247
  @controller = EltController.new
249
248
  post :create, :id => @elt.id, :commit => "Propose!",
250
249
  :elt =>{
251
- :body => "+1", :subject => "test_create", :parent_id => @elt.id }
250
+ :body => "+1", :subject => "test_create", :parent_id => @elt.id }
252
251
  @controller = controller
253
- get :logout
252
+ get :logout
254
253
 
255
- post :login, :person => { :name => "bob_other", :email => "" },
254
+ post :login, :person => { :name => "bob_other", :email => "" },
256
255
  :user => { :password => "" }, :divId => 'author_1'
257
256
 
258
- assert_success
257
+ assert_success
259
258
  assert_not_nil session[:person]
260
259
  assert_template 'account/_show'
261
260
 
262
261
  assert_tag :tag => "div", :attributes => { :class => "choicesToUpdate" }
263
- end
262
+ end
263
+
264
+ """ _
265
+ __ ___ ____ _| |_ __ _ _ __
266
+ / _` \ \ / / _` | __/ _` | '__|
267
+ | (_| |\ V / (_| | || (_| | |
268
+ \__,_| \_/ \__,_|\__\__,_|_|
269
+ """
270
+ def test_set_avatar
271
+ ActionMailer::Base.deliveries = []
272
+ post :login, :person => { :name => "bob_other", :email => "" },
273
+ :user => { :password => "" }, :divId => 'author_ROOT'
274
+
275
+ eltsCount = Elt.count
276
+ img = uploaded_png("#{File.expand_path(RAILS_ROOT)}/test/fixtures/img.png")
277
+ post :setAvatar, :person => { :image => img }
278
+ assert_equal eltsCount + 2, Elt.count
279
+ assert Person.find('bob_other').image.match(/^\/attachment\/file\/imgpng\/img.png$/)
280
+
281
+ #puts ActionMailer::Base.deliveries.last.to_yaml
282
+ assert_equal 3, ActionMailer::Base.deliveries.last.parts.size
283
+ assert_equal "image/png", ActionMailer::Base.deliveries.last.parts.last.content_type
284
+ assert_equal "img.png", ActionMailer::Base.deliveries.last.parts.last.disposition_param('filename')
285
+ assert_equal 90173, ActionMailer::Base.deliveries.last.parts.last.body.size
286
+ end
287
+
288
+ private
289
+ # get us an object that represents an uploaded file
290
+ def uploaded_file(path, content_type="application/octet-stream", filename=nil)
291
+ filename ||= File.basename(path)
292
+ t = Tempfile.new(filename)
293
+ FileUtils.copy_file(path, t.path)
294
+ (class << t; self; end;).class_eval do
295
+ alias local_path path
296
+ define_method(:original_filename) { filename }
297
+ define_method(:content_type) { content_type }
298
+ end
299
+ return t
300
+ end
301
+
302
+ # a PNG helper
303
+ def uploaded_png(path, filename=nil)
304
+ uploaded_file(path, 'image/png', filename)
305
+ end
306
+
307
+ # a JPEG helper
308
+ def uploaded_jpeg(path, filename=nil)
309
+ uploaded_file(path, 'image/jpeg', filename)
310
+ end
311
+
312
+ # a GIF helper
313
+ def uploaded_gif(path, filename=nil)
314
+ uploaded_file(path, 'image/gif', filename)
315
+ end
264
316
  end
265
317
 
@@ -5,15 +5,15 @@ require 'elt_controller'
5
5
  class EltController; def rescue_action(e) raise e end; end
6
6
 
7
7
  class EltControllerTest < Test::Unit::TestCase
8
- #fixtures :people, :users, :elts, :mails, :attachments, :subscribers
8
+ fixtures :people, LoginEngine.config(:user_table).to_sym, :elts, :mails, :attachments, :subscribers
9
9
 
10
- def setup
11
- @controller = EltController.new
12
- @request = ActionController::TestRequest.new
13
- @response = ActionController::TestResponse.new
10
+ def setup
11
+ @controller = EltController.new
12
+ @request = ActionController::TestRequest.new
13
+ @response = ActionController::TestResponse.new
14
14
 
15
15
  @elt = Elt.find 'ROOT'
16
- end
16
+ end
17
17
 
18
18
  def test_create
19
19
  post :create, :id => @elt.id, :commit => "Propose!",
@@ -9,7 +9,7 @@ class EltTest < Test::Unit::TestCase
9
9
 
10
10
  def test_generated_id
11
11
  e = @elt.children.new
12
- e.subject = "Test: /de\ #?&subject"
12
+ e.subject = "\"Test: /de, .. -\ #?&subject!\""
13
13
  e.body = "Test de body"
14
14
  e.save
15
15
  @elt.add_child e