eventify 1.5.0 → 2.0.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.
@@ -1,33 +1,33 @@
1
- require "spec_helper"
2
-
3
- describe Eventify::Mail do
4
- context ".deliver" do
5
- it "sends e-mail to all subscribers" do
6
- ::Mail.should_receive(:deliver).twice
7
-
8
- Eventify::Mail.deliver([], Eventify::Configuration.new(subscribers: ["foo@example.org", "bar@example.org"]))
9
- end
10
- end
11
-
12
- it ".format" do
13
- new_events = [
14
- Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org/1", date: Time.now),
15
- Eventify::Provider::Piletilevi.new(id: "456", title: "bar", link: "http://example.org/2", date: Time.now),
16
- Eventify::Provider::Base.new(id: "456", title: "bar3", link: "http://example.org/3", date: Time.now)
17
- ]
18
-
19
- Eventify::Mail.format(new_events).should == "There are some rumours going on about 3 possible awesome events:
20
-
21
- * bar
22
- http://example.org/2
23
-
24
- * bar3
25
- http://example.org/3
26
-
27
- * foo
28
- http://example.org/1
29
-
30
- Your Humble Servant,
31
- Eventify"
32
- end
33
- end
1
+ require "spec_helper"
2
+
3
+ describe Eventify::Mail do
4
+ context ".deliver" do
5
+ it "sends e-mail to all subscribers" do
6
+ expect(::Mail).to receive(:deliver).twice
7
+
8
+ Eventify::Mail.deliver([], Eventify::Configuration.new(subscribers: ["foo@example.org", "bar@example.org"]))
9
+ end
10
+ end
11
+
12
+ it ".format" do
13
+ new_events = [
14
+ Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org/1", date: Time.now),
15
+ Eventify::Provider::Piletilevi.new(id: "456", title: "bar", link: "http://example.org/2", date: Time.now),
16
+ Eventify::Provider::Base.new(id: "456", title: "bar3", link: "http://example.org/3", date: Time.now)
17
+ ]
18
+
19
+ expect(Eventify::Mail.format(new_events)).to eq("There are some rumours going on about 3 possible awesome events:
20
+
21
+ * bar
22
+ http://example.org/2
23
+
24
+ * bar3
25
+ http://example.org/3
26
+
27
+ * foo
28
+ http://example.org/1
29
+
30
+ Your Humble Servant,
31
+ Eventify")
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ describe Eventify::Provider::ApolloKino do
4
+ context "#fetch" do
5
+ it "fetches events" do
6
+ stub_request(:get, URI.join(Eventify::Provider::ApolloKino::URL, "eng/soon").to_s).to_return(body: File.read(File.expand_path("../../support/apollo_kino.html", __dir__)))
7
+
8
+ events = Eventify::Provider::ApolloKino.fetch
9
+ expect(events).to eq([
10
+ Eventify::Provider::ApolloKino.new(
11
+ title: "Võimlemisklubi Janika TALVEKONTSERT",
12
+ link: "https://www.apollokino.ee/eng/event/4127/title/v%C3%B5imlemisklubi_janika_talvekontsert/",
13
+ date: Time.parse("2021-01-31"),
14
+ id: "https://www.apollokino.ee/eng/event/4127/title/v%C3%B5imlemisklubi_janika_talvekontsert/"
15
+ ),
16
+ Eventify::Provider::ApolloKino.new(
17
+ title: "Jurassic World: Dominion",
18
+ link: "https://www.apollokino.ee/eng/event/4064/title/jurassic_world_dominion/",
19
+ date: Time.parse("2022-06-10"),
20
+ id: "https://www.apollokino.ee/eng/event/4064/title/jurassic_world_dominion/",
21
+ ),
22
+ ])
23
+ end
24
+ end
25
+ end
@@ -1,145 +1,145 @@
1
- require "spec_helper"
2
-
3
- describe Eventify::Provider::Base do
4
- context ".fetch" do
5
- it "needs to be implemented" do
6
- class Eventify::Provider::CustomEvent < Eventify::Provider::Base; end
7
-
8
- expect {
9
- Eventify::Provider::CustomEvent.fetch
10
- }.to raise_error(NotImplementedError)
11
- end
12
- end
13
-
14
- context "#initialize" do
15
- it "parses raw event" do
16
- event = {
17
- id: "86362",
18
- title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
19
- link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
20
- date: Time.parse("2013-12-27 12:30:11"),
21
- }
22
-
23
- parsed_event = Eventify::Provider::Base.new(event)
24
- parsed_event.id.should == "86362"
25
- parsed_event.provider.should == "Eventify::Provider::Base"
26
- parsed_event.title.should == event[:title]
27
- parsed_event.link.should == event[:link]
28
- parsed_event.date.should == event[:date]
29
- end
30
-
31
- it "raises an error when id is missing" do
32
- event = {
33
- title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
34
- link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
35
- date: Time.parse("2013-12-27 12:30:11"),
36
- }
37
-
38
- expect {
39
- Eventify::Provider::Base.new(event)
40
- }.to raise_error(Eventify::Provider::Base::MissingAttributeError)
41
- end
42
-
43
- it "raises an error when title is missing" do
44
- event = {
45
- id: "86362",
46
- link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
47
- date: Time.parse("2013-12-27 12:30:11"),
48
- }
49
-
50
- expect {
51
- Eventify::Provider::Base.new(event)
52
- }.to raise_error(Eventify::Provider::Base::MissingAttributeError)
53
- end
54
-
55
- it "raises an error when link is missing" do
56
- event = {
57
- id: "86362",
58
- title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
59
- date: Time.parse("2013-12-27 12:30:11"),
60
- }
61
-
62
- expect {
63
- Eventify::Provider::Base.new(event)
64
- }.to raise_error(Eventify::Provider::Base::MissingAttributeError)
65
- end
66
- end
67
-
68
- context "#provider" do
69
- it "uses class name" do
70
- class Eventify::Provider::CustomEvent < Eventify::Provider::Base; end
71
- Eventify::Provider::CustomEvent.new(id: "123", title: "foo", link: "http://example.org").provider.should == "Eventify::Provider::CustomEvent"
72
- end
73
- end
74
-
75
- context "#==" do
76
- it "true when id and provider match" do
77
- Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org").should == Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org")
78
- end
79
-
80
- it "false when id does not match" do
81
- Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org").should_not == Eventify::Provider::Base.new(id: "321", title: "foo", link: "http://example.org")
82
- end
83
-
84
- it "false when class does not match" do
85
- class Eventify::Provider::CustomEvent < Eventify::Provider::Base; end
86
- Eventify::Provider::CustomEvent.new(id: "123", title: "foo", link: "http://example.org").should_not == Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org")
87
- end
88
- end
89
-
90
- context "#save" do
91
- it "saves event into database" do
92
- event = {
93
- id: "86362",
94
- title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
95
- link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
96
- date: Time.parse("2013-12-27 12:30:11"),
97
- }
98
- Eventify::Provider::Base.new(event).save
99
-
100
- Eventify::Database.events.size.should == 1
101
- end
102
-
103
- it "returns self" do
104
- event = {
105
- id: "86362",
106
- title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
107
- link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
108
- date: Time.parse("2013-12-27 12:30:11"),
109
- }
110
- event_instance = Eventify::Provider::Base.new(event)
111
- event_instance.save.should == event_instance
112
- end
113
- end
114
-
115
- context "#exists?" do
116
- it "true for existing event" do
117
- event = {
118
- id: "86362",
119
- title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
120
- link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
121
- date: Time.parse("2013-12-27 12:30:11"),
122
- }
123
- Eventify::Provider::Base.new(event).save
124
-
125
- Eventify::Provider::Base.new(event).should exist
126
- end
127
-
128
- it "false for not existing event" do
129
- event = {
130
- id: "86362",
131
- title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
132
- link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
133
- date: Time.parse("2013-12-27 12:30:11"),
134
- }
135
-
136
- Eventify::Provider::Base.new(event).should_not exist
137
- end
138
- end
139
-
140
- it "sorts by title" do
141
- event1 = Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org")
142
- event2 = Eventify::Provider::Piletilevi.new(id: "123", title: "bar", link: "http://example.org")
143
- [event1, event2].sort.should == [event2, event1]
144
- end
145
- end
1
+ require "spec_helper"
2
+
3
+ describe Eventify::Provider::Base do
4
+ context ".fetch" do
5
+ it "needs to be implemented" do
6
+ class Eventify::Provider::CustomEvent < Eventify::Provider::Base; end
7
+
8
+ expect {
9
+ Eventify::Provider::CustomEvent.fetch
10
+ }.to raise_error(NotImplementedError)
11
+ end
12
+ end
13
+
14
+ context "#initialize" do
15
+ it "parses raw event" do
16
+ event = {
17
+ id: "86362",
18
+ title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
19
+ link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
20
+ date: Time.parse("2013-12-27 12:30:11"),
21
+ }
22
+
23
+ parsed_event = Eventify::Provider::Base.new(event)
24
+ expect(parsed_event.id).to eq("86362")
25
+ expect(parsed_event.provider).to eq("Eventify::Provider::Base")
26
+ expect(parsed_event.title).to eq(event[:title])
27
+ expect(parsed_event.link).to eq(event[:link])
28
+ expect(parsed_event.date).to eq(event[:date])
29
+ end
30
+
31
+ it "raises an error when id is missing" do
32
+ event = {
33
+ title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
34
+ link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
35
+ date: Time.parse("2013-12-27 12:30:11"),
36
+ }
37
+
38
+ expect {
39
+ Eventify::Provider::Base.new(event)
40
+ }.to raise_error(Eventify::Provider::Base::MissingAttributeError)
41
+ end
42
+
43
+ it "raises an error when title is missing" do
44
+ event = {
45
+ id: "86362",
46
+ link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
47
+ date: Time.parse("2013-12-27 12:30:11"),
48
+ }
49
+
50
+ expect {
51
+ Eventify::Provider::Base.new(event)
52
+ }.to raise_error(Eventify::Provider::Base::MissingAttributeError)
53
+ end
54
+
55
+ it "raises an error when link is missing" do
56
+ event = {
57
+ id: "86362",
58
+ title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
59
+ date: Time.parse("2013-12-27 12:30:11"),
60
+ }
61
+
62
+ expect {
63
+ Eventify::Provider::Base.new(event)
64
+ }.to raise_error(Eventify::Provider::Base::MissingAttributeError)
65
+ end
66
+ end
67
+
68
+ context "#provider" do
69
+ it "uses class name" do
70
+ class Eventify::Provider::CustomEvent < Eventify::Provider::Base; end
71
+ expect(Eventify::Provider::CustomEvent.new(id: "123", title: "foo", link: "http://example.org").provider).to eq("Eventify::Provider::CustomEvent")
72
+ end
73
+ end
74
+
75
+ context "#==" do
76
+ it "true when id and provider match" do
77
+ expect(Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org")).to eq(Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org"))
78
+ end
79
+
80
+ it "false when id does not match" do
81
+ expect(Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org")).not_to eq(Eventify::Provider::Base.new(id: "321", title: "foo", link: "http://example.org"))
82
+ end
83
+
84
+ it "false when class does not match" do
85
+ class Eventify::Provider::CustomEvent < Eventify::Provider::Base; end
86
+ expect(Eventify::Provider::CustomEvent.new(id: "123", title: "foo", link: "http://example.org")).not_to eq(Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org"))
87
+ end
88
+ end
89
+
90
+ context "#save" do
91
+ it "saves event into database" do
92
+ event = {
93
+ id: "86362",
94
+ title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
95
+ link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
96
+ date: Time.parse("2013-12-27 12:30:11"),
97
+ }
98
+ Eventify::Provider::Base.new(event).save
99
+
100
+ expect(Eventify::Database.events.size).to eq(1)
101
+ end
102
+
103
+ it "returns self" do
104
+ event = {
105
+ id: "86362",
106
+ title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
107
+ link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
108
+ date: Time.parse("2013-12-27 12:30:11"),
109
+ }
110
+ event_instance = Eventify::Provider::Base.new(event)
111
+ expect(event_instance.save).to eq(event_instance)
112
+ end
113
+ end
114
+
115
+ context "#exists?" do
116
+ it "true for existing event" do
117
+ event = {
118
+ id: "86362",
119
+ title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
120
+ link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
121
+ date: Time.parse("2013-12-27 12:30:11"),
122
+ }
123
+ Eventify::Provider::Base.new(event).save
124
+
125
+ expect(Eventify::Provider::Base.new(event)).to exist
126
+ end
127
+
128
+ it "false for not existing event" do
129
+ event = {
130
+ id: "86362",
131
+ title: "Koit Toome ja Karl-Erik Taukar 17.01.2014 - 21:00 - Rock Cafe, Tallinn, Eesti",
132
+ link: "http://www.piletilevi.ee/est/piletid/muusika/rock_ja_pop/?concert=138090",
133
+ date: Time.parse("2013-12-27 12:30:11"),
134
+ }
135
+
136
+ expect(Eventify::Provider::Base.new(event)).not_to exist
137
+ end
138
+ end
139
+
140
+ it "sorts by title" do
141
+ event1 = Eventify::Provider::Base.new(id: "123", title: "foo", link: "http://example.org")
142
+ event2 = Eventify::Provider::Piletilevi.new(id: "123", title: "bar", link: "http://example.org")
143
+ expect([event1, event2].sort).to eq([event2, event1])
144
+ end
145
+ end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ describe Eventify::Provider::Livenation do
4
+ context "#fetch" do
5
+ it "fetches events" do
6
+ stub_request(:get, Eventify::Provider::Livenation::URL).to_return(body: File.read(File.expand_path("../../support/livenation.html", __dir__)))
7
+
8
+ events = Eventify::Provider::Livenation.fetch
9
+ expect(events).to eq([
10
+ Eventify::Provider::Livenation.new(
11
+ title: "CLANNAD - In A Lifetime Farewell Tour",
12
+ link: "https://www.livenation.ee/show/1310067/clannad-in-a-lifetime-farewell-tour/tallinn/2021-03-30/ee",
13
+ date: Time.parse("2021-3-30"),
14
+ id: "https://www.livenation.ee/show/1310067/clannad-in-a-lifetime-farewell-tour/tallinn/2021-03-30/ee"
15
+ ),
16
+ Eventify::Provider::Livenation.new(
17
+ title: "JAMES BLUNT - Once Upon A Mind Tour",
18
+ link: "https://www.livenation.ee/show/1310003/james-blunt-once-upon-a-mind-tour/tallinn/2021-06-03/ee",
19
+ date: Time.parse("2021-6-03"),
20
+ id: "https://www.livenation.ee/show/1310003/james-blunt-once-upon-a-mind-tour/tallinn/2021-06-03/ee"
21
+ )
22
+ ])
23
+ end
24
+ end
25
+ end
@@ -1,46 +1,46 @@
1
- require "spec_helper"
2
-
3
- describe Eventify::Provider::Piletilevi do
4
- context "#fetch" do
5
- it "fetches events" do
6
- stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: File.read(File.expand_path("../../support/piletilevi.json", __dir__)))
7
-
8
- events = Eventify::Provider::Piletilevi.fetch
9
- events.should == [
10
- Eventify::Provider::Piletilevi.new(
11
- title:"Jelena Vaenga \/ \u0415\u043b\u0435\u043d\u0430 \u0412\u0430\u0435\u043d\u0433\u0430",
12
- link:"http:/\/www.piletilevi.ee\/est\/piletid\/muusika\/rock-ja-pop\/jelena-vaenga-elena-vaenga-190326\/",
13
- date: Time.at(1484326800),
14
- id: "190326"
15
- ),
16
- Eventify::Provider::Piletilevi.new(
17
- title:"Head t\u00fc\u00fcbid",
18
- link:"http:\/\/www.piletilevi.ee\/est\/piletid\/film\/krimifilm\/head-tuubid-190410\/",
19
- date: Time.at(1465405200),
20
- id: "190410"
21
- ),
22
- Eventify::Provider::Piletilevi.new(
23
- title:"Teismelised ninjakilpkonnad: Varjust v\u00e4lja (3D)",
24
- link:"http:\/\/www.piletilevi.ee\/est\/piletid\/film\/marul\/teismelised-ninjakilpkonnad-varjust-valja-3d-190405\/",
25
- date: Time.at(1465491600),
26
- id: "190405"
27
- )
28
- ]
29
- end
30
-
31
- it "works without concerts" do
32
- stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: %q|{"responseData": {}}|)
33
- Eventify::Provider::Piletilevi.fetch.should == []
34
- end
35
-
36
- it "works without response data" do
37
- stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: %q|{"foo": {}}|)
38
- Eventify::Provider::Piletilevi.fetch.should == []
39
- end
40
-
41
- it "works without json response" do
42
- stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: %q|foo|)
43
- Eventify::Provider::Piletilevi.fetch.should == []
44
- end
45
- end
46
- end
1
+ require "spec_helper"
2
+
3
+ describe Eventify::Provider::Piletilevi do
4
+ context "#fetch" do
5
+ it "fetches events" do
6
+ stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: File.read(File.expand_path("../../support/piletilevi.json", __dir__)))
7
+
8
+ events = Eventify::Provider::Piletilevi.fetch
9
+ expect(events).to eq([
10
+ Eventify::Provider::Piletilevi.new(
11
+ title:"Jelena Vaenga \/ \u0415\u043b\u0435\u043d\u0430 \u0412\u0430\u0435\u043d\u0433\u0430",
12
+ link:"http:/\/www.piletilevi.ee\/est\/piletid\/muusika\/rock-ja-pop\/jelena-vaenga-elena-vaenga-190326\/",
13
+ date: Time.at(1484326800),
14
+ id: "190326"
15
+ ),
16
+ Eventify::Provider::Piletilevi.new(
17
+ title:"Head t\u00fc\u00fcbid",
18
+ link:"http:\/\/www.piletilevi.ee\/est\/piletid\/film\/krimifilm\/head-tuubid-190410\/",
19
+ date: Time.at(1465405200),
20
+ id: "190410"
21
+ ),
22
+ Eventify::Provider::Piletilevi.new(
23
+ title:"Teismelised ninjakilpkonnad: Varjust v\u00e4lja (3D)",
24
+ link:"http:\/\/www.piletilevi.ee\/est\/piletid\/film\/marul\/teismelised-ninjakilpkonnad-varjust-valja-3d-190405\/",
25
+ date: Time.at(1465491600),
26
+ id: "190405"
27
+ )
28
+ ])
29
+ end
30
+
31
+ it "works without concerts" do
32
+ stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: %q|{"responseData": {}}|)
33
+ expect(Eventify::Provider::Piletilevi.fetch).to eq([])
34
+ end
35
+
36
+ it "works without response data" do
37
+ stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: %q|{"foo": {}}|)
38
+ expect(Eventify::Provider::Piletilevi.fetch).to eq([])
39
+ end
40
+
41
+ it "works without json response" do
42
+ stub_request(:get, Eventify::Provider::Piletilevi::URL.to_s).to_return(body: %q|foo|)
43
+ expect(Eventify::Provider::Piletilevi.fetch).to eq([])
44
+ end
45
+ end
46
+ end