Skip to content

Commit 924b351

Browse files
test(slack-bot): add hello text test
1 parent 36ab49b commit 924b351

File tree

3 files changed

+51
-39
lines changed

3 files changed

+51
-39
lines changed

lib/command/slack_command.rb

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,57 +2,23 @@
22
require 'httparty'
33
require 'nokogiri'
44

5+
require_relative './slack_crawler'
6+
57
module Joker
68
module Commands
79
# Slack bot commands
810
class Jokes < SlackRubyBot::Commands::Base
911
command 'jokes_image' do |client, data, _match|
10-
client.say(channel: data.channel, text: JokesImage.image_random_joke)
12+
client.say(channel: data.channel, text: Image.image_random_joke)
1113
end
1214

1315
command 'jokes_text' do |client, data, _match|
14-
client.say(channel: data.channel, text: JokesText.text_random_joke)
16+
client.say(channel: data.channel, text: Text.text_random_joke)
1517
end
1618

1719
command 'say_hello' do |client, data, _match|
18-
client.say(channel: data.channel, text: HelloText.say_hello)
20+
client.say(channel: data.channel, text: Hello.say_hello)
1921
end
2022
end
2123
end
22-
23-
# Say hello class implementation
24-
class HelloText
25-
def self.say_hello
26-
'Heyyy, ready for some humors?'
27-
end
28-
end
29-
30-
# Text based jokes implementation
31-
class JokesText
32-
def self.text_jokes
33-
@text_url = 'https://upjoke.com/programmer-jokes'
34-
unparsed_page_text = HTTParty.get(@text_url)
35-
@parsed_page_text = Nokogiri::HTML(unparsed_page_text.body)
36-
@parsed_page_text.css('.joke-wrapper').map(&:text)
37-
end
38-
39-
def self.text_random_joke
40-
text_jokes.sample
41-
end
42-
end
43-
44-
# Image based jokes implentation
45-
class JokesImage
46-
def self.image_jokes
47-
@base_url = 'https://www.hongkiat.com/blog/programming-jokes/'
48-
unparsed_page = HTTParty.get(@base_url)
49-
@parsed_page = Nokogiri::HTML(unparsed_page.body)
50-
imgs = @parsed_page.css('figure.entry-image img[src]').select { |image| image['src'].start_with?('https') }
51-
imgs.map { |t| t[:src] }
52-
end
53-
54-
def self.image_random_joke
55-
image_jokes.sample
56-
end
57-
end
5824
end

lib/command/slack_crawler.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Say hello class implementation
2+
class Hello
3+
def self.say_hello
4+
'Heyyy, ready for some humors?'
5+
end
6+
end
7+
8+
# Text based jokes implementation
9+
class Text
10+
def self.text_jokes
11+
@text_url = 'https://upjoke.com/programmer-jokes'
12+
unparsed_page_text = HTTParty.get(@text_url)
13+
@parsed_page_text = Nokogiri::HTML(unparsed_page_text.body)
14+
@parsed_page_text.css('.joke-wrapper').map(&:text)
15+
end
16+
17+
def self.text_random_joke
18+
text_jokes.sample
19+
end
20+
end
21+
22+
# Image based jokes implentation
23+
class Image
24+
def self.image_jokes
25+
@base_url = 'https://www.hongkiat.com/blog/programming-jokes/'
26+
unparsed_page = HTTParty.get(@base_url)
27+
@parsed_page = Nokogiri::HTML(unparsed_page.body)
28+
imgs = @parsed_page.css('figure.entry-image img[src]').select { |image| image['src'].start_with?('https') }
29+
imgs.map { |t| t[:src] }
30+
end
31+
32+
def self.image_random_joke
33+
image_jokes.sample
34+
end
35+
end

spec/slack_command_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
require_relative './../lib/command/slack_crawler'
2+
3+
hello_text = Hello
4+
5+
describe Hello do
6+
describe '#say_hello' do
7+
it 'should return the string Heyyy, ready for some humors?' do
8+
expect(hello_text.say_hello).to eq('Heyyy, ready for some humors?')
9+
end
10+
end
11+
end

0 commit comments

Comments
 (0)