message_train 0.1.7 → 0.2.0

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 (144) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +8 -0
  3. data/.travis.yml +7 -2
  4. data/Gemfile +3 -0
  5. data/README.rdoc +37 -1
  6. data/Rakefile +5 -6
  7. data/VERSION +1 -1
  8. data/app/assets/javascripts/message_train.js +33 -0
  9. data/app/assets/stylesheets/message_train.scss +26 -0
  10. data/app/controllers/concerns/message_train_support.rb +127 -0
  11. data/app/controllers/message_train/application_controller.rb +1 -60
  12. data/app/controllers/message_train/boxes_controller.rb +0 -4
  13. data/app/controllers/message_train/messages_controller.rb +12 -6
  14. data/app/controllers/message_train/participants_controller.rb +1 -1
  15. data/app/controllers/message_train/unsubscribes_controller.rb +59 -0
  16. data/app/helpers/message_train/application_helper.rb +26 -0
  17. data/app/helpers/message_train/attachments_helper.rb +19 -0
  18. data/app/helpers/message_train/boxes_helper.rb +16 -11
  19. data/app/helpers/message_train/collectives_helper.rb +48 -0
  20. data/app/helpers/message_train/conversations_helper.rb +24 -16
  21. data/app/helpers/message_train/messages_helper.rb +14 -12
  22. data/app/mailers/message_train/application_mailer.rb +8 -0
  23. data/app/mailers/message_train/previews/receipt_mailer_preview.rb +10 -0
  24. data/app/mailers/message_train/receipt_mailer.rb +17 -0
  25. data/app/models/message_train/attachment.rb +28 -10
  26. data/app/models/message_train/box.rb +114 -83
  27. data/app/models/message_train/conversation.rb +48 -39
  28. data/app/models/message_train/ignore.rb +2 -6
  29. data/app/models/message_train/message.rb +40 -24
  30. data/app/models/message_train/receipt.rb +20 -10
  31. data/app/models/message_train/unsubscribe.rb +7 -0
  32. data/app/views/layouts/mailer.html.haml +6 -0
  33. data/app/views/message_train/application/_attachment_fields.html.haml +7 -0
  34. data/app/views/message_train/application/_attachment_link.html.haml +4 -0
  35. data/app/views/message_train/application/_widget.html.haml +6 -0
  36. data/app/views/message_train/boxes/_dropdown_list.html.haml +1 -2
  37. data/app/views/message_train/boxes/_list_item.html.haml +2 -2
  38. data/app/views/message_train/boxes/_widget.html.haml +4 -1
  39. data/app/views/message_train/boxes/show.html.haml +12 -4
  40. data/app/views/message_train/collectives/_dropdown_list.html.haml +6 -0
  41. data/app/views/message_train/collectives/_list_item.html.haml +5 -0
  42. data/app/views/message_train/collectives/_widget.html.haml +7 -0
  43. data/app/views/message_train/conversations/_conversation.html.haml +22 -7
  44. data/app/views/message_train/conversations/_deleted_toggle.html.haml +1 -1
  45. data/app/views/message_train/conversations/_ignored_toggle.html.haml +3 -3
  46. data/app/views/message_train/conversations/_read_toggle.html.haml +3 -3
  47. data/app/views/message_train/conversations/_toggle.html.haml +4 -1
  48. data/app/views/message_train/conversations/_trashed_toggle.html.haml +3 -3
  49. data/app/views/message_train/conversations/show.html.haml +4 -3
  50. data/app/views/message_train/messages/_deleted_toggle.html.haml +1 -1
  51. data/app/views/message_train/messages/_form.html.haml +22 -7
  52. data/app/views/message_train/messages/_message.html.haml +14 -4
  53. data/app/views/message_train/messages/_read_toggle.html.haml +1 -1
  54. data/app/views/message_train/messages/_trashed_toggle.html.haml +1 -1
  55. data/app/views/message_train/messages/edit.html.haml +1 -1
  56. data/app/views/message_train/messages/new.html.haml +4 -1
  57. data/app/views/message_train/participants/_field.html.haml +1 -1
  58. data/app/views/message_train/participants/_prefilled_field.html.haml +4 -0
  59. data/app/views/message_train/receipt_mailer/notification_email.html.haml +13 -0
  60. data/app/views/message_train/unsubscribes/index.html.haml +10 -0
  61. data/config/environment.rb +1 -0
  62. data/config/locales/en.yml +49 -7
  63. data/config/routes.rb +10 -2
  64. data/db/migrate/20150901183458_add_received_through_to_message_train_receipts.rb +6 -0
  65. data/db/migrate/20151004184347_add_unique_index_to_receipts.rb +5 -0
  66. data/db/migrate/20151124000820_create_message_train_unsubscribes.rb +14 -0
  67. data/lib/generators/message_train/install/install_generator.rb +8 -2
  68. data/lib/generators/message_train/install/templates/initializer.rb +5 -1
  69. data/lib/message_train/configuration.rb +11 -1
  70. data/lib/message_train/engine.rb +1 -0
  71. data/lib/message_train/mixin.rb +206 -21
  72. data/message_train.gemspec +66 -13
  73. data/spec/controllers/message_train/boxes_controller_spec.rb +10 -3
  74. data/spec/controllers/message_train/concerns_spec.rb +40 -0
  75. data/spec/controllers/message_train/conversations_controller_spec.rb +3 -3
  76. data/spec/controllers/message_train/messages_controller_spec.rb +60 -27
  77. data/spec/controllers/message_train/participants_controller_spec.rb +41 -6
  78. data/spec/controllers/message_train/unsubscribes_controller_spec.rb +56 -0
  79. data/spec/dummy/app/assets/files/message_train/attachments/{1917-Boys_Race_Above-Wiki.jpg → image-sample.jpg} +0 -0
  80. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  81. data/spec/dummy/app/models/group.rb +16 -1
  82. data/spec/dummy/app/models/role.rb +22 -0
  83. data/spec/dummy/app/models/user.rb +1 -1
  84. data/spec/dummy/app/views/layouts/_top_navigation.html.haml +4 -2
  85. data/spec/dummy/app/views/layouts/application.html.haml +2 -3
  86. data/spec/dummy/app/views/pages/index.html.haml +4 -0
  87. data/spec/dummy/config/application.rb +6 -0
  88. data/spec/dummy/config/environments/development.rb +1 -0
  89. data/spec/dummy/config/environments/test.rb +1 -0
  90. data/spec/dummy/config/initializers/high_voltage.rb +3 -0
  91. data/spec/dummy/config/initializers/message_train.rb +6 -1
  92. data/spec/dummy/config/initializers/paperclip.rb +2 -2
  93. data/spec/dummy/config/routes.rb +2 -2
  94. data/spec/dummy/config/settings.yml +9 -0
  95. data/spec/dummy/db/migrate/{20150724142846_create_message_train_conversations.night_train.rb → 20150901183629_create_message_train_conversations.message_train.rb} +0 -0
  96. data/spec/dummy/db/migrate/{20150724142847_create_message_train_messages.night_train.rb → 20150901183630_create_message_train_messages.message_train.rb} +0 -0
  97. data/spec/dummy/db/migrate/{20150724142848_create_message_train_attachments.night_train.rb → 20150901183631_create_message_train_attachments.message_train.rb} +0 -0
  98. data/spec/dummy/db/migrate/{20150724142849_create_message_train_receipts.night_train.rb → 20150901183632_create_message_train_receipts.message_train.rb} +0 -0
  99. data/spec/dummy/db/migrate/{20150724142850_create_message_train_ignores.night_train.rb → 20150901183633_create_message_train_ignores.message_train.rb} +0 -0
  100. data/spec/dummy/db/migrate/20150901183634_add_received_through_to_message_train_receipts.message_train.rb +7 -0
  101. data/spec/dummy/db/migrate/20151004184519_add_unique_index_to_receipts.message_train.rb +6 -0
  102. data/spec/dummy/db/migrate/20151124001417_create_message_train_unsubscribes.message_train.rb +15 -0
  103. data/spec/dummy/db/schema.rb +24 -7
  104. data/spec/dummy/db/seeds/conversations.seeds.rb +92 -3
  105. data/spec/dummy/db/seeds/groups.seeds.rb +27 -0
  106. data/spec/dummy/db/seeds/test/attachments.seeds.rb +4 -0
  107. data/spec/dummy/db/seeds/unsubscribes.seeds.rb +12 -0
  108. data/spec/dummy/db/seeds/users.seeds.rb +27 -0
  109. data/spec/dummy/db/test.sqlite3 +0 -0
  110. data/spec/factories/group.rb +4 -4
  111. data/spec/factories/message.rb +10 -3
  112. data/spec/features/boxes_spec.rb +160 -33
  113. data/spec/features/conversations_spec.rb +11 -4
  114. data/spec/features/messages_spec.rb +20 -6
  115. data/spec/features/unsubscribes_spec.rb +38 -0
  116. data/spec/helpers/message_train/application_helper_spec.rb +60 -0
  117. data/spec/helpers/message_train/attachment_helper_spec.rb +35 -0
  118. data/spec/helpers/message_train/boxes_helper_spec.rb +11 -5
  119. data/spec/helpers/message_train/collectives_helper_spec.rb +76 -0
  120. data/spec/helpers/message_train/conversations_helper_spec.rb +295 -0
  121. data/spec/helpers/message_train/messages_helper_spec.rb +217 -0
  122. data/spec/models/group_spec.rb +112 -2
  123. data/spec/models/message_train/attachment_spec.rb +44 -1
  124. data/spec/models/message_train/box_spec.rb +306 -51
  125. data/spec/models/message_train/conversation_spec.rb +84 -6
  126. data/spec/models/message_train/ignore_spec.rb +0 -4
  127. data/spec/models/message_train/message_spec.rb +49 -12
  128. data/spec/models/message_train/receipt_spec.rb +44 -8
  129. data/spec/models/message_train/unsubscribe_spec.rb +16 -0
  130. data/spec/models/role_spec.rb +125 -0
  131. data/spec/models/user_spec.rb +155 -26
  132. data/spec/rails_helper.rb +8 -1
  133. data/spec/support/attachments.rb +4 -0
  134. data/spec/support/controller_behaviors.rb +28 -0
  135. data/spec/support/conversations.rb +13 -0
  136. data/spec/support/groups.rb +3 -0
  137. data/spec/support/loaded_site.rb +3 -0
  138. data/spec/support/messages.rb +23 -0
  139. data/spec/support/roles.rb +4 -0
  140. data/spec/support/users.rb +6 -0
  141. data/spec/support/wysihtml5_helper.rb +8 -0
  142. metadata +99 -12
  143. data/spec/dummy/app/assets/files/message_train/attachments/Haie_rci.svg +0 -1714
  144. data/spec/dummy/public/capybara.html +0 -193
@@ -1,6 +1,7 @@
1
1
  require 'rails_helper'
2
2
 
3
3
  RSpec.describe User do
4
+ include_context 'loaded site'
4
5
 
5
6
  describe 'Model' do
6
7
  # Rolify Gem by extension
@@ -12,9 +13,67 @@ RSpec.describe User do
12
13
  end
13
14
 
14
15
  describe 'Scopes and Methods' do
15
- include_context 'loaded site'
16
+
17
+ describe '#box' do
18
+ describe 'with valid number of arguments' do
19
+ subject { first_user.box }
20
+ it { should be_a MessageTrain::Box }
21
+ its(:division) { should be :in }
22
+ its(:parent) { should be first_user }
23
+ its(:participant) { should be first_user }
24
+ end
25
+ describe 'with invalid number of arguments' do
26
+ it "should raise" do
27
+ expect{ first_user.box(:in, first_user, 'extra argument') }.to raise_error(RuntimeError, "Wrong number of arguments for User (expected 0..2, got 3)")
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '#collective_boxes' do
33
+ describe 'with 0 arguments' do
34
+ subject { first_user.collective_boxes[:groups].collect { |x| x.parent } }
35
+ it { should include membered_group }
36
+ it { should include first_group }
37
+ end
38
+ describe 'with 1 argument' do
39
+ subject { first_user.collective_boxes(:in)[:groups].collect { |x| x.parent } }
40
+ it { should include membered_group }
41
+ it { should include first_group }
42
+ end
43
+ describe 'with 3 arguments' do
44
+ it "should raise" do
45
+ expect{ first_user.collective_boxes(:in, first_user, 'extra argument') }.to raise_error(RuntimeError, "Wrong number of arguments for User (expected 0..2, got 3)")
46
+ end
47
+ end
48
+ end
49
+
50
+ describe '#all_boxes' do
51
+ describe 'with 0 arguments' do
52
+ context 'returns all boxes for the given user' do
53
+ subject { first_user.all_boxes }
54
+ its(:first) { should be_a MessageTrain::Box }
55
+ its(:count) { should be 6 }
56
+ end
57
+ end
58
+ describe 'with 1 argument' do
59
+ context 'returns all boxes for the given user' do
60
+ subject { first_user.all_boxes(first_user) }
61
+ its(:first) { should be_a MessageTrain::Box }
62
+ its(:count) { should be 6 }
63
+ end
64
+ end
65
+ describe 'with 2 arguments' do
66
+ it "should raise" do
67
+ expect{ first_user.all_boxes(first_user, 'extra argument') }.to raise_error(RuntimeError, "Wrong number of arguments for User (expected 0..1, got 2)")
68
+ end
69
+ end
70
+ end
16
71
 
17
72
  describe '#conversations' do
73
+ context 'with division not set' do
74
+ subject { first_user.conversations.first.includes_receipts_to?(first_user) }
75
+ it { should be true }
76
+ end
18
77
  context 'with division as :in' do
19
78
  subject { first_user.conversations(:in).first.includes_receipts_to?(first_user) }
20
79
  it { should be true }
@@ -27,42 +86,112 @@ RSpec.describe User do
27
86
  subject { first_user.conversations(:trash).first.includes_trashed_for?(first_user) }
28
87
  it { should be true}
29
88
  end
30
- end
31
-
32
- describe '#all_boxes' do
33
- context 'returns all boxes for the given user' do
34
- subject { first_user.all_boxes }
35
- its(:first) { should be_a MessageTrain::Box }
36
- its(:count) { should be 6 }
89
+ describe 'with 23 arguments' do
90
+ it "should raise" do
91
+ expect{ first_user.conversations(:in, first_user, 'extra argument') }.to raise_error(RuntimeError, "Wrong number of arguments for User (expected 0..2, got 3)")
92
+ end
93
+ end
94
+ context 'with impossible division' do
95
+ subject { first_user.conversations(:impossible).nil? }
96
+ it { should be true}
37
97
  end
38
98
  end
39
99
 
40
100
  describe '#all_conversations' do
41
- context 'returns all conversations with any receipt' do
42
- subject { first_user.all_conversations }
43
- it { should include sent_conversation }
44
- it { should include unread_conversation }
45
- it { should include read_conversation }
46
- it { should include ignored_conversation }
47
- it { should include trashed_conversation }
48
- it { should include deleted_conversation }
49
- it { should_not include someone_elses_conversation }
101
+ describe 'with no arguments' do
102
+ context 'returns all conversations with any receipt' do
103
+ subject { first_user.all_conversations }
104
+ it { should include sent_conversation }
105
+ it { should include unread_conversation }
106
+ it { should include read_conversation }
107
+ it { should include ignored_conversation }
108
+ it { should include trashed_conversation }
109
+ it { should include deleted_conversation }
110
+ it { should_not include someone_elses_conversation }
111
+ end
112
+ end
113
+ describe 'with 1 argument' do
114
+ context 'returns all conversations with any receipt' do
115
+ subject { first_user.all_conversations(first_user) }
116
+ it { should include sent_conversation }
117
+ it { should include unread_conversation }
118
+ it { should include read_conversation }
119
+ it { should include ignored_conversation }
120
+ it { should include trashed_conversation }
121
+ it { should include deleted_conversation }
122
+ it { should_not include someone_elses_conversation }
123
+ end
124
+ end
125
+ describe 'with 2 arguments' do
126
+ it "should raise" do
127
+ expect{ first_user.all_conversations(first_user, 'extra argument') }.to raise_error(RuntimeError, "Wrong number of arguments for User (expected 0..1, got 2)")
128
+ end
129
+ end
130
+ context 'when empty' do
131
+ subject { silent_user.all_conversations }
132
+ it { should eq [] }
50
133
  end
51
134
  end
52
135
 
53
136
  describe '#all_messages' do
54
- context 'returns all messages with any receipt' do
55
- subject { first_user.all_messages }
56
- it { should include sent_conversation.messages.first }
57
- it { should include unread_conversation.messages.first }
58
- it { should include read_conversation.messages.first }
59
- it { should include ignored_conversation.messages.first }
60
- it { should include trashed_conversation.messages.first }
61
- it { should include deleted_conversation.messages.first }
62
- it { should_not include someone_elses_conversation.messages.first }
137
+ describe 'with no arguments' do
138
+ context 'returns all messages with any receipt' do
139
+ subject { first_user.all_messages }
140
+ it { should include sent_message }
141
+ it { should include unread_message }
142
+ it { should include read_message }
143
+ it { should include ignored_message }
144
+ it { should include trashed_message }
145
+ it { should include deleted_message }
146
+ it { should_not include someone_elses_message }
147
+ end
148
+ end
149
+ describe 'with 1 argument' do
150
+ context 'returns all messages with any receipt' do
151
+ subject { first_user.all_messages(first_user) }
152
+ it { should include sent_message }
153
+ it { should include unread_message }
154
+ it { should include read_message }
155
+ it { should include ignored_message }
156
+ it { should include trashed_message }
157
+ it { should include deleted_message }
158
+ it { should_not include someone_elses_message }
159
+ end
160
+ end
161
+ describe 'with 2 arguments' do
162
+ it "should raise" do
163
+ expect{ first_user.all_messages(first_user, 'extra argument') }.to raise_error(RuntimeError, "Wrong number of arguments for User (expected 0..1, got 2)")
164
+ end
165
+ end
166
+ context 'when empty' do
167
+ subject { silent_user.all_messages }
168
+ it { should eq [] }
63
169
  end
64
170
  end
65
171
 
172
+ describe '#unsubscribed_from?' do
173
+ describe 'when an unsubscribe exists' do
174
+ subject { unsubscribed_user.unsubscribed_from?(membered_group) }
175
+ it { should be true }
176
+ end
177
+ describe 'when no unsubscribe exists' do
178
+ subject { first_user.unsubscribed_from?(membered_group) }
179
+ it { should be false }
180
+ end
181
+ describe 'when unsubscribe_from is used' do
182
+ before do
183
+ first_user.unsubscribe_from(membered_group)
184
+ end
185
+ subject { first_user.unsubscribed_from?(membered_group) }
186
+ it { should be true }
187
+ end
188
+ end
189
+
190
+ describe '#subscriptions' do
191
+ subject { first_user.subscriptions }
192
+ it { should be_an Array }
193
+ it { should have_at_least(3).items }
194
+ end
66
195
  end
67
196
 
68
197
  end
data/spec/rails_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'coveralls'
2
2
  Coveralls.wear!
3
+
3
4
  # This file is copied to spec/ when you run 'rails generate rspec:install'
4
5
  ENV['RAILS_ENV'] ||= 'test'
5
6
  require File.expand_path('../dummy/config/environment', __FILE__)
@@ -10,6 +11,7 @@ require 'rspec/rails'
10
11
  # Add additional requires below this line. Rails is not loaded until this point!
11
12
  require 'shoulda/matchers'
12
13
  require 'factory_girl_rails'
14
+ require 'paperclip/matchers'
13
15
  require 'capybara/rspec'
14
16
  require 'database_cleaner'
15
17
  require 'rake'
@@ -27,7 +29,7 @@ require 'rake'
27
29
  # directory. Alternatively, in the individual `*_spec.rb` files, manually
28
30
  # require only the support files necessary.
29
31
  #
30
- Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
32
+ Dir[MessageTrain::Engine.root.join('spec/support/**/*.rb')].each { |f| require f }
31
33
 
32
34
  # Checks for pending migrations before tests are run.
33
35
  # If you are not using ActiveRecord, you can remove this line.
@@ -80,4 +82,9 @@ RSpec.configure do |config|
80
82
  config.include Devise::TestHelpers, type: :helper
81
83
  config.include Devise::TestHelpers, type: :routing
82
84
  config.include RSpecHtmlMatchers
85
+
86
+ config.include Paperclip::Shoulda::Matchers
87
+ config.after(:suite) do
88
+ FileUtils.rm_rf(Dir["#{Rails.root}/public/system/test/*/*"])
89
+ end
83
90
  end
@@ -0,0 +1,4 @@
1
+ shared_context 'attachments' do
2
+ let(:image_attachment) { MessageTrain::Attachment.find_by("attachment_file_name LIKE '%image-sample.jpg'") }
3
+ let(:pdf_attachment) { MessageTrain::Attachment.find_by("attachment_file_name LIKE '%pdf-sample.pdf'") }
4
+ end
@@ -34,6 +34,15 @@ end
34
34
  shared_examples_for 'a redirect to sign in' do
35
35
  it_behaves_like 'a redirect to', '/users/sign_in'
36
36
  end
37
+ shared_examples_for 'a redirect with a message' do |path, options|
38
+ it_behaves_like 'a redirect matching', path
39
+ options.each do |key, value|
40
+ context "sets #{key.to_s} message" do
41
+ subject { flash[key] }
42
+ it { should eq value }
43
+ end
44
+ end
45
+ end
37
46
  shared_examples_for 'an error response with message' do |message|
38
47
  it_behaves_like 'an error response', :forbidden
39
48
  context 'sets failure message' do
@@ -54,6 +63,15 @@ shared_examples_for 'a page with a message' do |options|
54
63
  end
55
64
  end
56
65
  end
66
+ shared_examples_for 'a page with a message matching' do |options|
67
+ it_behaves_like 'a successful page'
68
+ options.each do |key, value|
69
+ context "sets #{key.to_s} message" do
70
+ subject { flash[key] }
71
+ it { should match value }
72
+ end
73
+ end
74
+ end
57
75
  shared_examples_for 'a page with an error message' do |message|
58
76
  it_behaves_like 'a page with a message', error: message
59
77
  end
@@ -63,9 +81,19 @@ end
63
81
  shared_examples_for 'a page with a notice message' do |message|
64
82
  it_behaves_like 'a page with a message', notice: message
65
83
  end
84
+ shared_examples_for 'a page with an error message matching' do |message|
85
+ it_behaves_like 'a page with a message matching', error: message
86
+ end
66
87
  shared_examples_for 'a 403 Forbidden error' do
67
88
  it_should_behave_like 'an error response with message', 'You are not authorized to access this page.'
68
89
  end
90
+ shared_examples_for 'a redirect with error' do |path, message|
91
+ it_behaves_like 'a redirect to', path
92
+ context 'sets error' do
93
+ subject { flash[:error] }
94
+ it { should eq message }
95
+ end
96
+ end
69
97
  shared_examples_for 'a redirect with notice' do |path, message|
70
98
  it_behaves_like 'a redirect to', path
71
99
  context 'sets notice' do
@@ -1,10 +1,23 @@
1
1
  shared_context 'conversations' do
2
2
  let(:sent_conversation) { MessageTrain::Conversation.find_by_subject('Sent Conversation') }
3
3
  let(:unread_conversation) { MessageTrain::Conversation.find_by_subject('Unread Conversation') }
4
+ let(:to_many_conversation) { MessageTrain::Conversation.find_by_subject('To Many Conversation') }
4
5
  let(:ignored_conversation) { MessageTrain::Conversation.find_by_subject('Ignored Conversation') }
5
6
  let(:trashed_conversation) { MessageTrain::Conversation.find_by_subject('Trashed Conversation') }
6
7
  let(:read_conversation) { MessageTrain::Conversation.find_by_subject('Read Conversation') }
8
+ let(:attachment_conversation) { MessageTrain::Conversation.find_by_subject('Attachment Conversation') }
7
9
  let(:deleted_conversation) { MessageTrain::Conversation.find_by_subject('Deleted Conversation') }
10
+ let(:group_conversation) { MessageTrain::Conversation.find_by_subject('Group Announcement') }
11
+ let(:membered_group_conversation) { MessageTrain::Conversation.find_by_subject('Membered Group Announcement') }
12
+ let(:membered_group_trashed_conversation) { MessageTrain::Conversation.find_by_subject('Membered Group Trashed Conversation') }
13
+ let(:membered_group_read_conversation) { MessageTrain::Conversation.find_by_subject('Membered Group Read Conversation') }
14
+ let(:membered_group_ignored_conversation) { MessageTrain::Conversation.find_by_subject('Membered Group Ignored Conversation') }
15
+ let(:membered_group_deleted_conversation) { MessageTrain::Conversation.find_by_subject('Membered Group Deleted Conversation') }
16
+ let(:membered_group_draft) { MessageTrain::Conversation.find_by_subject('Membered Group Draft') }
17
+ let(:owned_group_draft) { MessageTrain::Conversation.find_by_subject('Owned Group Draft') }
8
18
  let(:someone_elses_conversation) { MessageTrain::Conversation.find_by_subject("Someone Else's Conversation") }
9
19
  let(:draft_conversation) { MessageTrain::Conversation.find_by_subject('This should turn into a draft')}
20
+ let(:long_conversation) { MessageTrain::Conversation.find_by_subject('Long Conversation')}
21
+ let(:role_conversation) { MessageTrain::Conversation.find_by_subject('Role Conversation')}
22
+ let(:role_draft) { MessageTrain::Conversation.find_by_subject('Role Draft')}
10
23
  end
@@ -1,3 +1,6 @@
1
1
  shared_context 'groups' do
2
2
  let(:first_group) { Group.find_by_title('First Group') }
3
+ let(:membered_group) { Group.find_by_title('Membered Group') }
4
+ let(:empty_group) { Group.find_by_title('Empty Group') }
5
+ let(:unsubscribed_group) { Group.find_by_title('Unsubscribed Group') }
3
6
  end
@@ -1,5 +1,8 @@
1
1
  shared_context 'loaded site' do
2
2
  include_context 'users'
3
3
  include_context 'groups'
4
+ include_context 'roles'
4
5
  include_context 'conversations'
6
+ include_context 'messages'
7
+ include_context 'attachments'
5
8
  end
@@ -0,0 +1,23 @@
1
+ shared_context 'messages' do
2
+ let(:sent_message) { sent_conversation.messages.first }
3
+ let(:unread_message) { unread_conversation.messages.first }
4
+ let(:to_many_message) { to_many_conversation.messages.first }
5
+ let(:ignored_message) { ignored_conversation.messages.first }
6
+ let(:trashed_message) { trashed_conversation.messages.first }
7
+ let(:read_message) { read_conversation.messages.first }
8
+ let(:attachment_message) { attachment_conversation.messages.first }
9
+ let(:deleted_message) { deleted_conversation.messages.first }
10
+ let(:group_message) { group_conversation.messages.first }
11
+ let(:membered_group_message) { membered_group_conversation.messages.first }
12
+ let(:membered_group_trashed_message) { membered_group_trashed_conversation.messages.first }
13
+ let(:membered_group_read_message) { membered_group_read_conversation.messages.first }
14
+ let(:membered_group_ignored_message) { membered_group_ignored_conversation.messages.first }
15
+ let(:membered_group_deleted_message) { membered_group_deleted_conversation.messages.first }
16
+ let(:membered_group_draft_message) { membered_group_draft.messages.first }
17
+ let(:owned_group_draft_message) { owned_group_draft.messages.first }
18
+ let(:someone_elses_message) { someone_elses_conversation.messages.first }
19
+ let(:draft_message) { draft_conversation.messages.first }
20
+ let(:long_message) { long_conversation.messages.first }
21
+ let(:role_message) { role_conversation.messages.first }
22
+ let(:role_draft_message) { role_draft.messages.first }
23
+ end
@@ -0,0 +1,4 @@
1
+ shared_context 'roles' do
2
+ let(:superadmin_role) { Role.find_by_name('superadmin') }
3
+ let(:admin_role) { Role.find_by_name('admin') }
4
+ end
@@ -2,5 +2,11 @@ shared_context 'users' do
2
2
  let(:first_user) { User.friendly.find('first-user') }
3
3
  let(:second_user) { User.friendly.find('second-user') }
4
4
  let(:third_user) { User.friendly.find('third-user') }
5
+ let(:fourth_user) { User.friendly.find('fourth-user') }
6
+ let(:fourth_user) { User.friendly.find('fourth-user') }
7
+ let(:superadmin_user) { User.friendly.find('superadmin-user') }
8
+ let(:admin_user) { User.friendly.find('admin-user') }
9
+ let(:silent_user) { User.friendly.find('silent-user') }
10
+ let(:unsubscribed_user) { User.friendly.find('unsubscribed-user') }
5
11
  let(:last_user) { User.order('id').last }
6
12
  end
@@ -0,0 +1,8 @@
1
+ module Wysihtml5Helper
2
+ def fill_in_html label, options
3
+ page.execute_script <<-JAVASCRIPT
4
+ var id = $("label:contains(#{label})").attr("for");
5
+ $("#" + id).data("wysihtml5").editor.setValue("#{options[:with]}");
6
+ JAVASCRIPT
7
+ end
8
+ end