sermonaudio 0.1.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 (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +6 -0
  3. data/.rubocop.yml +15 -0
  4. data/.travis.yml +11 -0
  5. data/Gemfile +24 -0
  6. data/Gemfile.lock +127 -0
  7. data/README.md +258 -0
  8. data/Rakefile +13 -0
  9. data/lib/sermonaudio/actions.rb +99 -0
  10. data/lib/sermonaudio/client.rb +13 -0
  11. data/lib/sermonaudio/configuration.rb +37 -0
  12. data/lib/sermonaudio/version.rb +5 -0
  13. data/lib/sermonaudio.rb +13 -0
  14. data/sermonaudio.gemspec +22 -0
  15. data/spec/actions_spec.rb +236 -0
  16. data/spec/cassettes/SermonAudio_Actions/_favorite_broadcasters/should_return_the_correct_result.yml +508 -0
  17. data/spec/cassettes/SermonAudio_Actions/_favorite_sermons/should_return_the_correct_result.yml +509 -0
  18. data/spec/cassettes/SermonAudio_Actions/_favorite_speakers/should_return_the_correct_result.yml +508 -0
  19. data/spec/cassettes/SermonAudio_Actions/_get_event_types/should_return_a_larger_set_of_results.yml +521 -0
  20. data/spec/cassettes/SermonAudio_Actions/_get_event_types/should_return_a_single_result.yml +508 -0
  21. data/spec/cassettes/SermonAudio_Actions/_get_event_types/should_return_the_correct_results.yml +513 -0
  22. data/spec/cassettes/SermonAudio_Actions/_get_languages/should_return_the_correct_results.yml +506 -0
  23. data/spec/cassettes/SermonAudio_Actions/_get_newest_series_by_member_id/should_return_the_correct_results.yml +508 -0
  24. data/spec/cassettes/SermonAudio_Actions/_get_series_by_member_id/should_return_the_correct_results.yml +508 -0
  25. data/spec/cassettes/SermonAudio_Actions/_get_sermon_info/should_return_the_correct_result.yml +513 -0
  26. data/spec/cassettes/SermonAudio_Actions/_get_speakers_by_keyword/should_return_a_larger_set_of_results.yml +521 -0
  27. data/spec/cassettes/SermonAudio_Actions/_get_speakers_by_keyword/should_return_a_single_result.yml +508 -0
  28. data/spec/cassettes/SermonAudio_Actions/_get_speakers_by_member_id/should_return_the_correct_results.yml +508 -0
  29. data/spec/cassettes/SermonAudio_Actions/_newest_sermons_by_member_id/should_return_the_correct_results.yml +598 -0
  30. data/spec/cassettes/SermonAudio_Actions/_newest_sermons_by_speaker/should_return_the_correct_results.yml +599 -0
  31. data/spec/cassettes/SermonAudio_Actions/_sermon_list/should_return_a_list_of_sermons_for_the_specified_church.yml +1189 -0
  32. data/spec/cassettes/SermonAudio_Sermon/_find_newest_/success/should_find_newest_sermons_by_SpeakerName.yml +599 -0
  33. data/spec/client_spec.rb +15 -0
  34. data/spec/configuration_spec.rb +43 -0
  35. data/spec/fixtures/submit_sermon.xml +8 -0
  36. data/spec/fixtures/update_sermon.xml +6 -0
  37. data/spec/fixtures/wsdl.xml +740 -0
  38. data/spec/spec_helper.rb +46 -0
  39. metadata +134 -0
@@ -0,0 +1,236 @@
1
+ require 'spec_helper'
2
+ require 'savon/mock/spec_helper'
3
+
4
+ module SermonAudio
5
+ describe Actions do
6
+ include Savon::SpecHelper
7
+
8
+ subject(:action) { Class.new.extend(Actions) }
9
+
10
+ CURRENT_SA_LANGS = %w[
11
+ Afrikaans Arabic Burundi Catalan Chinese
12
+ Choctaw Czech Danish Dutch Finnish
13
+ French German Greek Haitian-Creole Hebrew
14
+ Hindi Hungarian Indonesian Italian Japanese
15
+ Khmer Korean Mongolian Persian Portuguese
16
+ Punjabi Romanian Russian Scots-Gaelic Sign-ASL
17
+ Sign-Mexico Spanish Tagalog Tamil Telugu
18
+ Ukrainian Urdu Vietnamese Zulu
19
+ ]
20
+
21
+ describe 'stubbed expectations' do
22
+
23
+ before(:all) { savon.mock! }
24
+ after(:all) { savon.unmock! }
25
+
26
+ before do
27
+ allow(SermonAudio).to receive(:client) do
28
+ Savon.client {
29
+ wsdl 'spec/fixtures/wsdl.xml'
30
+ soap_version 2
31
+ }
32
+ end
33
+ end
34
+
35
+ describe '#submit_sermon' do
36
+ it "should send the correct message and return the expected results" do
37
+ info = {
38
+ 'MemberID' => 'cbcelgin',
39
+ 'Password' => 'password',
40
+ 'Title' => 'Example Sermon',
41
+ 'ShortTitle' => 'Even Shorter',
42
+ 'SubTitle' => 'Series Name',
43
+ 'EventType' => 'Sunday Service',
44
+ 'DatePreached' => DateTime.new(2014, 7, 24),
45
+ 'Speaker' => 'Mitchell Jones',
46
+ 'BibleText' => '1 Peter 2:21-25',
47
+ 'Language' => 'English',
48
+ 'Keywords' => 'bible jesus gospel',
49
+ 'MoreInfoText' => 'This is more info about the sermon'
50
+ }
51
+
52
+ fixture = File.read('spec/fixtures/submit_sermon.xml')
53
+ savon.expects(:submit_sermon).with(message: info).returns fixture
54
+
55
+ result = action.submit_sermon(info)
56
+ expect(result).to eq "Response Value"
57
+ end
58
+ end
59
+
60
+ describe '#update_sermon' do
61
+ it "should send the correct message and return the expected results" do
62
+ info = {
63
+ 'MemberID' => 'cbcelgin',
64
+ 'Password' => 'password',
65
+ 'SermonID' => '9827374839872',
66
+ 'Title' => 'Example Sermon',
67
+ 'ShortTitle' => 'Even Shorter',
68
+ 'SubTitle' => 'Series Name',
69
+ 'EventType' => 'Sunday Service',
70
+ 'DatePreached' => DateTime.new(2014, 7, 24),
71
+ 'Speaker' => 'Mitchell Jones',
72
+ 'BibleText' => '1 Peter 2:21-25',
73
+ 'Language' => 'English',
74
+ 'Keywords' => 'bible jesus gospel',
75
+ 'MoreInfoText' => 'This is more info about the sermon'
76
+ }
77
+
78
+ fixture = File.read('spec/fixtures/update_sermon.xml')
79
+ savon.expects(:update_sermon).with(message: info).returns fixture
80
+
81
+ result = action.update_sermon(info)
82
+ expect(result).to eq nil
83
+ end
84
+ end
85
+
86
+ end
87
+
88
+ describe '#sermon_list' do
89
+ it "should return a list of sermons for the specified church", vcr: true do
90
+ result = action.sermon_list(:cbcelgin)
91
+ expect(result.last[:sermon_id]).to eq "515111348415"
92
+ expect(result.last[:title]).to eq "A Faith To Die With"
93
+ expect(result.last[:sub_title]).to be_nil
94
+ expect(result.last[:speaker]).to eq "Mitchell Jones"
95
+ expect(result.last[:event_type]).to eq "Sunday - AM"
96
+ expect(result.last[:bible_text]).to eq "Hebrews"
97
+ expect(result.last[:download_count]).to eq "62"
98
+ expect(result.last[:mp3_duration]).to eq "64 minutes"
99
+ expect(result.last[:mp3_filename]).to eq "http://mp3.sa-media.com/filearea/515111348415/515111348415.mp3"
100
+ end
101
+ end
102
+
103
+ describe '#get_sermon_info' do
104
+ it "should return the correct result", vcr: true do
105
+ result = action.get_sermon_info(720141933368)
106
+ expect(result[:sermon_id]).to eq "720141933368"
107
+ expect(result[:speaker]).to eq "Mitchell Jones"
108
+ expect(result[:bible_text]).to eq "Psalm 23:4"
109
+ expect(result[:sub_title]).to eq "Psalm 23"
110
+ end
111
+ end
112
+
113
+ describe '#favorite_sermons' do
114
+ it "should return the correct result", vcr: true do
115
+ result = action.favorite_sermons
116
+ expect(result[0][:sermon_id]).to eq "7101111626"
117
+ expect(result[0][:title]).to eq "This Is My Comfort"
118
+ expect(result[0][:sub_title]).to eq nil
119
+ expect(result[0][:speaker]).to eq "Mitchell Jones"
120
+ expect(result[0][:event_type]).to eq "Sunday Service"
121
+ expect(result[0][:bible_text]).to eq nil
122
+ expect(result[0][:download_count]).to eq "0"
123
+ expect(result[0][:mp3_duration]).to eq nil
124
+ expect(result[0][:mp3_filename]).to eq nil
125
+ end
126
+ end
127
+
128
+ describe '#favorite_speakers' do
129
+ it "should return the correct result", vcr: true do
130
+ result = action.favorite_speakers
131
+ expect(result[0]).to eq({speaker_name: "Pastor Tim Goad", sort_name: "Goad, Tim", counter: "470"})
132
+ expect(result[1]).to eq({speaker_name: "Mitchell Jones", sort_name: "Jones, Mitchell", counter: "216"})
133
+ end
134
+ end
135
+
136
+ describe '#favorite_broadcasters' do
137
+ it "should return the correct result", vcr: true do
138
+ result = action.favorite_broadcasters
139
+ expect(result[0][:source_id]).to eq "cbcelgin"
140
+ expect(result[0][:source_desc]).to eq "Cornerstone Baptist Church"
141
+ expect(result[0][:source_location]).to eq "Elgin, Texas"
142
+ expect(result[0][:minister]).to eq "Pastor Mitchell Jones"
143
+ end
144
+ end
145
+
146
+ describe '#get_speakers_by_member_id' do
147
+ it "should return the correct results", vcr: true do
148
+ result = action.get_speakers_by_member_id(:cbcelgin)
149
+ expect(result).to include "Mitchell Jones"
150
+ expect(result).to include "Kevin Bridges"
151
+ expect(result).to include "Pastor Tim Goad"
152
+ end
153
+ end
154
+
155
+ describe '#get_series_by_member_id' do
156
+ it "should return the correct results", vcr: true do
157
+ result = action.get_series_by_member_id(:cbcelgin)
158
+ expect(result).to eq [
159
+ "1 Corinthians 13", "1 Peter", "Psalm 23",
160
+ "The Beatitudes", "The Nature Of Repentance"
161
+ ]
162
+ end
163
+ end
164
+
165
+ describe '#get_newest_series_by_member_id' do
166
+ it "should return the correct results", vcr: true do
167
+ result = action.get_newest_series_by_member_id(:cbcelgin)
168
+ expect(result[0]).to eq "Psalm 23"
169
+ expect(result[1]).to eq "1 Peter"
170
+ end
171
+ end
172
+
173
+ describe '#newest_sermons_by_member_id' do
174
+ it "should return the correct results", vcr: true do
175
+ result = action.newest_sermons_by_member_id(:cbcelgin)
176
+ expect(result[0][:sermon_id]).to eq "720141933368"
177
+ expect(result[0][:title]).to eq "Facing Death"
178
+ expect(result[0][:sub_title]).to eq "Psalm 23"
179
+ expect(result[0][:speaker]).to eq "Mitchell Jones"
180
+ expect(result[0][:event_type]).to eq "Sunday - PM"
181
+ expect(result[0][:bible_text]).to eq "Psalm 23:4"
182
+ expect(result[0][:download_count]).to eq "9"
183
+ expect(result[0][:mp3_duration]).to eq "39 minutes"
184
+ expect(result[0][:mp3_filename]).to eq "http://mp3.sa-media.com/filearea/720141933368/720141933368.mp3"
185
+ end
186
+ end
187
+
188
+ describe '#newest_sermons_by_speaker' do
189
+ it "should return the correct results", vcr: true do
190
+ result = action.newest_sermons_by_speaker("Mitchell Jones")
191
+ expect(result[0][:sermon_id]).to eq "720141933368"
192
+ expect(result[0][:title]).to eq "Facing Death"
193
+ expect(result[0][:sub_title]).to eq "Psalm 23"
194
+ expect(result[0][:speaker]).to eq "Mitchell Jones"
195
+ expect(result[0][:event_type]).to eq "Sunday - PM"
196
+ expect(result[0][:bible_text]).to eq "Psalm 23:4"
197
+ expect(result[0][:download_count]).to eq "9"
198
+ expect(result[0][:mp3_duration]).to eq "39 minutes"
199
+ expect(result[0][:mp3_filename]).to eq "http://mp3.sa-media.com/filearea/720141933368/720141933368.mp3"
200
+ end
201
+ end
202
+
203
+ describe '#get_event_types' do
204
+ it "should return the correct results", vcr: true do
205
+ result = action.get_event_types
206
+ expect(result).to include "Audio Book"
207
+ expect(result).to include "Bible Study"
208
+ expect(result).to include "Camp Meeting"
209
+ expect(result).to include "Sunday - PM"
210
+ expect(result).to include "Youth"
211
+ end
212
+ end
213
+
214
+ describe '#get_languages' do
215
+ it "should return the correct results", vcr: true do
216
+ result = action.get_languages
217
+ expect(result.sort).to eq CURRENT_SA_LANGS.sort
218
+ end
219
+ end
220
+
221
+ describe '#get_speakers_by_keyword' do
222
+ it "should return a larger set of results", vcr: true do
223
+ result = action.get_speakers_by_keyword("Mitchell")
224
+ expect(result.count).to be > 30
225
+ expect(result).to include "Mitchell Jones"
226
+ expect(result).to include "Timothy Mitchell"
227
+ end
228
+
229
+ it "should return a single result", vcr: true do
230
+ result = action.get_speakers_by_keyword("Mitchell Jones")
231
+ expect(result).to eq "Mitchell Jones"
232
+ end
233
+ end
234
+
235
+ end
236
+ end