twog 0.3.5 → 0.3.6

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.
data/lib/twog.rb CHANGED
@@ -1,4 +1,6 @@
1
- #rubygems
1
+ # frozen_string_literal: true
2
+
3
+ # rubygems
2
4
  require 'rubygems'
3
5
 
4
6
  # 3rd party
@@ -14,7 +16,6 @@ require 'twog/blog_posts_handler'
14
16
  require 'twog/twitter_handler'
15
17
  require 'twog/post'
16
18
 
17
-
18
19
  module Twog
19
20
  module Twog
20
21
  include RssParser
@@ -24,26 +25,28 @@ module Twog
24
25
 
25
26
  def run(conf)
26
27
  posts = get_posts_to_tweet(conf)
27
- return unless posts && posts.length > 0
28
+ return unless posts&.length&.positive?
29
+
28
30
  bitly = get_bitly_from(conf)
29
31
  tweet(posts, conf, bitly)
30
32
  end
31
33
 
32
34
  def get_posts_to_tweet(conf)
33
35
  posts = parse_feed(conf['rss_feed'])
34
- posts = map(posts)
36
+ posts = map(posts)
35
37
  posts = get_new_blog_posts(posts, conf['last_blog_post_tweeted'])
36
38
  end
37
39
 
38
40
  def get_bitly_from(conf)
39
41
  bitly_username = conf['bitly_username']
40
42
  bitly_api_key = conf['bitly_api_key']
41
- return nil unless (bitly_username && bitly_api_key)
43
+ return nil unless bitly_username && bitly_api_key
44
+
42
45
  Bitly.new(bitly_username, bitly_api_key)
43
46
  end
44
-
47
+
45
48
  def version
46
- yml = YAML.load(File.read(File.join(File.dirname(__FILE__), *%w[.. VERSION.yml])))
49
+ yml = YAML.safe_load(File.read(File.join(File.dirname(__FILE__), *%w[.. VERSION.yml])))
47
50
  "#{yml[:major]}.#{yml[:minor]}.#{yml[:patch]}"
48
51
  end
49
52
  end
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Twog
2
4
  module BlogPostsHandler
3
5
  def get_new_blog_posts(posts, last_blog_post_tweeted)
4
- return [] unless posts && posts.length > 0
6
+ return [] unless posts&.length&.positive?
5
7
  return posts unless last_blog_post_tweeted
8
+
6
9
  new_posts = posts.reject do |post|
7
10
  Time.parse(post.date.to_s) <= Time.parse(last_blog_post_tweeted.to_s)
8
11
  end
data/lib/twog/post.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Twog
2
4
  class Post
3
5
  def initialize(post)
@@ -11,13 +13,13 @@ module Twog
11
13
  def date
12
14
  @post.respond_to?('updated') ? @post.updated.content : @post.pubDate
13
15
  end
14
-
16
+
15
17
  def title
16
18
  @post.title.respond_to?('content') ? @post.title.content : @post.title
17
19
  end
18
-
19
- def <=>(other_post)
20
- Time.parse(self.date.to_s) <=> Time.parse(other_post.date.to_s)
20
+
21
+ def <=>(other)
22
+ Time.parse(date.to_s) <=> Time.parse(other.date.to_s)
21
23
  end
22
24
  end
23
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Twog
2
4
  module RssEntryToTwogPostMapper
3
5
  def map(rss_entries)
@@ -1,15 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Twog
2
4
  module RssParser
3
5
  def parse_feed(rss_feed_url)
4
- raise Exception.new('RSS feed missing') unless rss_feed_url
6
+ raise StandardError, 'RSS feed missing' unless rss_feed_url
7
+
5
8
  rss = RSS::Parser.parse(get_content(rss_feed_url), false)
6
9
  rss.items
7
10
  end
8
11
 
9
12
  def get_content(rss_feed_url)
10
- open(rss_feed_url) do |f|
11
- f.read
12
- end
13
+ open(rss_feed_url, &:read)
13
14
  end
14
15
  end
15
16
  end
@@ -1,11 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Twog
2
4
  module TwitterHandler
3
5
  def tweet(posts, conf, bitly)
4
- return unless posts && posts.length > 0
5
- raise Exception.new('OAuth Consumer Key missing') unless conf['consumer_key']
6
- raise Exception.new('OAuth Consumer Secret missing') unless conf['consumer_secret']
7
- raise Exception.new('OAuth Access Token missing') unless conf['access_token']
8
- raise Exception.new('OAuth Access Secret missing') unless conf['access_secret']
6
+ return unless posts&.length&.positive?
7
+ raise StandardError, 'OAuth Consumer Key missing' unless conf['consumer_key']
8
+ raise StandardError, 'OAuth Consumer Secret missing' unless conf['consumer_secret']
9
+ raise StandardError, 'OAuth Access Token missing' unless conf['access_token']
10
+ raise StandardError, 'OAuth Access Secret missing' unless conf['access_secret']
11
+
9
12
  posts.sort.each do |post|
10
13
  link = bitly ? bitly.shorten(post.link).short_url : item.link
11
14
  use_twitter_oauth(post, link, conf)
@@ -15,25 +18,26 @@ module Twog
15
18
 
16
19
  def use_twitter_oauth(post, link, conf)
17
20
  client = TwitterOAuth::Client.new(
18
- :consumer_key => conf['consumer_key'],
19
- :consumer_secret => conf['consumer_secret'],
20
- :token => conf['access_token'],
21
- :secret => conf['access_secret']
21
+ consumer_key: conf['consumer_key'],
22
+ consumer_secret: conf['consumer_secret'],
23
+ token: conf['access_token'],
24
+ secret: conf['access_secret']
22
25
  )
23
- raise Exception.new('TwitterOAuth unauthorized') unless client.authorized?
26
+ raise StandardError, 'TwitterOAuth unauthorized' unless client.authorized?
27
+
24
28
  text = ensure_text_is_of_length(140, post.title, link)
25
29
  client.update(text)
26
30
  end
27
31
 
28
32
  def ensure_text_is_of_length(length, title, link)
29
- blogged = "blogged:"
30
- title = title[0,(length-((" "*2).length+blogged.length+link.length))]
33
+ blogged = 'blogged:'
34
+ title = title[0, (length - ((' ' * 2).length + blogged.length + link.length))]
31
35
  [blogged, title, link].join(' ')
32
36
  end
33
37
 
34
38
  def update_config_file_with_latest_tweet_date(last_blog_post_tweeted, conf)
35
39
  conf['last_blog_post_tweeted'] = last_blog_post_tweeted
36
- File.open("#{ENV['HOME']}/.twog/conf.yaml","w") { |out| out.write(conf.to_yaml) }
40
+ File.open("#{ENV['HOME']}/.twog/conf.yaml", 'w') { |out| out.write(conf.to_yaml) }
37
41
  end
38
42
  end
39
43
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
- $: << File.join(File.dirname(__FILE__), "/../lib")
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '/../lib')
2
4
 
3
5
  require 'rubygems'
4
6
  require 'twog'
@@ -13,35 +15,34 @@ if ENV['COVERAGE']
13
15
  end
14
16
 
15
17
  def test_conf
16
- @conf = {'rss_feed' => 'rss feed',
17
- 'bitly_username' => 'username',
18
- 'bitly_api_key' => 'api key',
19
- 'consumer_key' => 'consumerkey',
20
- 'consumer_secret' => 'consumersecret',
21
- 'access_token' => 'accesstoken',
22
- 'access_secret' => 'accesssecret',
23
- 'last_blog_post_tweeted' => '31 Mar 2010 07:52:17 -0600'}
18
+ @conf = { 'rss_feed' => 'rss feed',
19
+ 'bitly_username' => 'username',
20
+ 'bitly_api_key' => 'api key',
21
+ 'consumer_key' => 'consumerkey',
22
+ 'consumer_secret' => 'consumersecret',
23
+ 'access_token' => 'accesstoken',
24
+ 'access_secret' => 'accesssecret',
25
+ 'last_blog_post_tweeted' => '31 Mar 2010 07:52:17 -0600' }
24
26
  end
25
27
 
26
28
  def rss_feed_entry
27
- entry=<<-EOS
28
- <item>
29
- <title>Gocode Vim Plugin and Go Modules</title>
30
- <description>
31
- <p><strong>Update</strong>: My friend <a href="https://twitter.com/_seemethere">Eli Uriegas</a> let me know that you don’t need <code class="highlighter-rouge">gocode</code> anymore since <code class="highlighter-rouge">vim-go</code> has autocompletion. I tested it out and he is correct. <a href="https://twitter.com/_seemethere/status/1081626050717728770">Here</a> is his tweet with a link to his dotfiles on how he sets up his <code class="highlighter-rouge">.vimrc</code> to use <code class="highlighter-rouge">vim-go</code></p> <p><em>Original Post:</em></p> <p>I recently purchased <a href="https://lets-go.alexedwards.net/">Let’s Go</a> from Alex Edwards. I wanted an end-to-end Golang website tutorial. It has been great. Lots learned.</p> <p>Unfortunately, he is using Go’s modules and the version of the gocode Vim plugin I was using did not support Go modules.</p> <h3 id="solution">Solution:</h3> <p>Use <a href="https://github.com/stamblerre/gocode">this fork</a> of the gocode Vim plugin and you’ll get support for Go modules.</p> <p>I use <a href="https://github.com/junegunn/vim-plug">Vim Plug</a> for my Vim plugins. Huge fan of Vundle but I like the post-actions feature of Plug. I just had to change one line of my vimrc and re-run updates.</p> <div class="language-diff highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gh">diff --git a/vimrc b/vimrc index 3e8edf1..8395705 100644 </span><span class="gd">--- a/vimrc </span><span class="gi">+++ b/vimrc </span><span class="gu">@@ -73,7 +73,7 @@ endif </span> let editor_name='nvim' Plug 'zchee/deoplete-go', { 'do': 'make'} endif <span class="gd">- Plug 'nsf/gocode', { 'rtp': 'vim', 'do': '~/.config/nvim/plugged/gocode/vim/symlink.sh' } </span><span class="gi">+ Plug 'stamblerre/gocode', { 'rtp': 'vim', 'do': '~/.vim/plugged/gocode/vim/symlink.sh' } </span> Plug 'godoctor/godoctor.vim', {'for': 'go'} " Gocode refactoring tool " } </code></pre></div></div> <p>That is the line I had to change then run <code class="highlighter-rouge">:PlugUpdate!</code> and the new plugin was installed.</p> <p>I figured all of this out due to <a href="https://github.com/zchee/deoplete-go/issues/134#issuecomment-435436305">this comment</a> by <a href="https://github.com/cippaciong">Tommaso Sardelli</a> on Github. Thank you Tommaso.</p>
32
- </description>
33
- <pubDate>Sat, 05 Jan 2019 11:09:26 -0600</pubDate>
34
- <link>
35
- https://blog.jasonmeridth.com/posts/gocode-vim-plugin-and-go-modules/
36
- </link>
37
- <guid isPermaLink="true">
38
- https://blog.jasonmeridth.com/posts/gocode-vim-plugin-and-go-modules/
39
- </guid>
40
- <category>go</category>
41
- <category>vim</category>
42
- </item>
43
- EOS
44
- return entry
29
+ <<~EOS
30
+ <item>
31
+ <title>Gocode Vim Plugin and Go Modules</title>
32
+ <description>
33
+ <p><strong>Update</strong>: My friend <a href="https://twitter.com/_seemethere">Eli Uriegas</a> let me know that you don’t need <code class="highlighter-rouge">gocode</code> anymore since <code class="highlighter-rouge">vim-go</code> has autocompletion. I tested it out and he is correct. <a href="https://twitter.com/_seemethere/status/1081626050717728770">Here</a> is his tweet with a link to his dotfiles on how he sets up his <code class="highlighter-rouge">.vimrc</code> to use <code class="highlighter-rouge">vim-go</code></p> <p><em>Original Post:</em></p> <p>I recently purchased <a href="https://lets-go.alexedwards.net/">Let’s Go</a> from Alex Edwards. I wanted an end-to-end Golang website tutorial. It has been great. Lots learned.</p> <p>Unfortunately, he is using Go’s modules and the version of the gocode Vim plugin I was using did not support Go modules.</p> <h3 id="solution">Solution:</h3> <p>Use <a href="https://github.com/stamblerre/gocode">this fork</a> of the gocode Vim plugin and you’ll get support for Go modules.</p> <p>I use <a href="https://github.com/junegunn/vim-plug">Vim Plug</a> for my Vim plugins. Huge fan of Vundle but I like the post-actions feature of Plug. I just had to change one line of my vimrc and re-run updates.</p> <div class="language-diff highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gh">diff --git a/vimrc b/vimrc index 3e8edf1..8395705 100644 </span><span class="gd">--- a/vimrc </span><span class="gi">+++ b/vimrc </span><span class="gu">@@ -73,7 +73,7 @@ endif </span> let editor_name='nvim' Plug 'zchee/deoplete-go', { 'do': 'make'} endif <span class="gd">- Plug 'nsf/gocode', { 'rtp': 'vim', 'do': '~/.config/nvim/plugged/gocode/vim/symlink.sh' } </span><span class="gi">+ Plug 'stamblerre/gocode', { 'rtp': 'vim', 'do': '~/.vim/plugged/gocode/vim/symlink.sh' } </span> Plug 'godoctor/godoctor.vim', {'for': 'go'} " Gocode refactoring tool " } </code></pre></div></div> <p>That is the line I had to change then run <code class="highlighter-rouge">:PlugUpdate!</code> and the new plugin was installed.</p> <p>I figured all of this out due to <a href="https://github.com/zchee/deoplete-go/issues/134#issuecomment-435436305">this comment</a> by <a href="https://github.com/cippaciong">Tommaso Sardelli</a> on Github. Thank you Tommaso.</p>
34
+ </description>
35
+ <pubDate>Sat, 05 Jan 2019 11:09:26 -0600</pubDate>
36
+ <link>
37
+ https://blog.jasonmeridth.com/posts/gocode-vim-plugin-and-go-modules/
38
+ </link>
39
+ <guid isPermaLink="true">
40
+ https://blog.jasonmeridth.com/posts/gocode-vim-plugin-and-go-modules/
41
+ </guid>
42
+ <category>go</category>
43
+ <category>vim</category>
44
+ </item>
45
+ EOS
45
46
  end
46
47
 
47
48
  def rss_entry
@@ -50,7 +51,7 @@ def rss_entry
50
51
  end
51
52
 
52
53
  def rss_feed_url_content
53
- rss_header=<<-EOS
54
+ rss_header = <<-EOS
54
55
  <rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
55
56
  <channel>
56
57
  <title>Learn, Converse, Share</title>
@@ -61,6 +62,5 @@ def rss_feed_url_content
61
62
  <lastBuildDate>Fri, 01 Mar 2019 13:02:56 -0600</lastBuildDate>
62
63
  <generator>Jekyll v3.7.4</generator>
63
64
  EOS
64
- return "#{rss_header}#{rss_feed_entry}</channel></rss>"
65
+ "#{rss_header}#{rss_feed_entry}</channel></rss>"
65
66
  end
66
-
@@ -1,4 +1,6 @@
1
- require File.join(File.dirname(__FILE__), "/../spec_helper")
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), '/../spec_helper')
2
4
 
3
5
  describe BlogPostsHandler do
4
6
  include BlogPostsHandler
@@ -9,27 +11,27 @@ describe BlogPostsHandler do
9
11
  @last_blog_post_tweeted = test_conf['last_blog_post_tweeted']
10
12
  end
11
13
 
12
- it "should determine that there is one new blog post to tweet" do
14
+ it 'should determine that there is one new blog post to tweet' do
13
15
  posts = get_new_blog_posts(@posts, @last_blog_post_tweeted)
14
16
  expect(posts.length).to eq(1)
15
17
  end
16
18
 
17
- it "should return zero if posts are nil" do
19
+ it 'should return zero if posts are nil' do
18
20
  posts = get_new_blog_posts(nil, @last_blog_post_tweeted)
19
21
  expect(posts.length).to eq(0)
20
22
  end
21
23
 
22
- it "should return zero if no posts are passed" do
24
+ it 'should return zero if no posts are passed' do
23
25
  posts = get_new_blog_posts([], @last_blog_post_tweeted)
24
26
  expect(posts.length).to eq(0)
25
27
  end
26
28
 
27
- it "should return the posts if there is no last_blog_post_tweeted in the conf file" do
29
+ it 'should return the posts if there is no last_blog_post_tweeted in the conf file' do
28
30
  posts = get_new_blog_posts(@posts, nil)
29
31
  expect(posts.length).to eq(1)
30
32
  end
31
33
 
32
- it "should return zero posts if the date is older than the last blog post date tweeted" do
34
+ it 'should return zero posts if the date is older than the last blog post date tweeted' do
33
35
  post = Twog::Post.new(double('', pubDate: (Date.parse(@last_blog_post_tweeted.to_s) - 10).to_s, link: 'http://tinyurl.com'))
34
36
  @posts = [post]
35
37
  posts = get_new_blog_posts(@posts, @last_blog_post_tweeted)
@@ -1,33 +1,34 @@
1
- require File.join(File.dirname(__FILE__), "/../spec_helper")
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), '/../spec_helper')
2
4
 
3
5
  describe Post do
4
- context "when rss entry has updated and link.href" do
6
+ context 'when rss entry has updated and link.href' do
5
7
  before(:each) do
6
- updated =double('update', content: '2010-04-02T01:00:00-06:00')
8
+ updated = double('update', content: '2010-04-02T01:00:00-06:00')
7
9
  link = double('link', href: 'http://tinyurl.com')
8
10
  title = double('title', content: 'test title')
9
11
  @post = double('post', updated: updated, link: link, title: title)
10
-
11
12
  end
12
13
 
13
- it "should return a link" do
14
+ it 'should return a link' do
14
15
  twog_post = Twog::Post.new(@post)
15
- expect(twog_post.date).to eq("2010-04-02T01:00:00-06:00")
16
+ expect(twog_post.date).to eq('2010-04-02T01:00:00-06:00')
16
17
  end
17
18
 
18
- it "should return a date" do
19
+ it 'should return a date' do
19
20
  twog_post = Twog::Post.new(@post)
20
- expect(twog_post.date).to eq("2010-04-02T01:00:00-06:00")
21
+ expect(twog_post.date).to eq('2010-04-02T01:00:00-06:00')
21
22
  end
22
23
 
23
- it "should return a title" do
24
+ it 'should return a title' do
24
25
  twog_post = Twog::Post.new(@post)
25
- expect(twog_post.title).to eq("test title")
26
+ expect(twog_post.title).to eq('test title')
26
27
  end
27
28
 
28
- it "should sort multiple posts" do
29
+ it 'should sort multiple posts' do
29
30
  unsorted = (1..10).sort_by { rand }.collect do |i|
30
- updated = double('update', content: (Time.now + (60*60*24*i)).to_s)
31
+ updated = double('update', content: (Time.now + (60 * 60 * 24 * i)).to_s)
31
32
  link = double('link', href: 'http://tinyurl.com')
32
33
  post = double('post', updated: updated, link: link)
33
34
  Twog::Post.new(post)
@@ -35,12 +36,12 @@ describe Post do
35
36
  sorted = unsorted.sort!
36
37
  expect(sorted.length).to eq(10)
37
38
 
38
- sorted.inject {|i, j| expect(Time.parse(i.date.to_s)).to be < Time.parse(j.date.to_s); j }
39
+ sorted.inject { |i, j| expect(Time.parse(i.date.to_s)).to be < Time.parse(j.date.to_s); j }
39
40
  end
40
41
 
41
- it "should leave meeting list alone if all the times are the same" do
42
- unsorted = (1..10).collect do |i|
43
- updated = double('update', content: (Time.now + (60*60*24*3)).to_s)
42
+ it 'should leave meeting list alone if all the times are the same' do
43
+ unsorted = (1..10).collect do |_i|
44
+ updated = double('update', content: (Time.now + (60 * 60 * 24 * 3)).to_s)
44
45
  link = double('link', href: 'http://tinyurl.com')
45
46
  post = double('post', updated: updated, link: link)
46
47
  Twog::Post.new(post)
@@ -51,27 +52,27 @@ describe Post do
51
52
  end
52
53
  end
53
54
 
54
- context "when rss entry has pubDate and link" do
55
+ context 'when rss entry has pubDate and link' do
55
56
  before(:each) do
56
57
  @post = double('post', pubDate: '2010-04-02T01:00:00-06:00', link: 'http://tinyurl.com')
57
58
  end
58
59
 
59
- it "should return a link" do
60
+ it 'should return a link' do
60
61
  twog_post = Twog::Post.new(@post)
61
62
 
62
- expect(twog_post.link).to eq("http://tinyurl.com")
63
- expect(twog_post.date).to eq("2010-04-02T01:00:00-06:00")
63
+ expect(twog_post.link).to eq('http://tinyurl.com')
64
+ expect(twog_post.date).to eq('2010-04-02T01:00:00-06:00')
64
65
  end
65
66
 
66
- it "should sort multiple posts again" do
67
+ it 'should sort multiple posts again' do
67
68
  unsorted = (1..10).sort_by { rand }.collect do |i|
68
- post = double('post', pubDate: (Time.now + (60*60*24*i)).to_s, link: 'http://tinyurl.com')
69
+ post = double('post', pubDate: (Time.now + (60 * 60 * 24 * i)).to_s, link: 'http://tinyurl.com')
69
70
  Twog::Post.new(post)
70
71
  end
71
72
  sorted = unsorted.sort!
72
73
  expect(sorted.length).to eq(10)
73
74
 
74
- sorted.inject {|i, j| expect(Time.parse(i.date.to_s)).to be < Time.parse(j.date.to_s); j }
75
+ sorted.inject { |i, j| expect(Time.parse(i.date.to_s)).to be < Time.parse(j.date.to_s); j }
75
76
  end
76
77
  end
77
78
  end
@@ -1,32 +1,34 @@
1
- require File.join(File.dirname(__FILE__), "/../spec_helper")
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), '/../spec_helper')
2
4
 
3
5
  describe RssEntryToTwogPostMapper do
4
6
  include RssEntryToTwogPostMapper
5
7
 
6
- it "should convert rss entries that have updated.content and link.href" do
8
+ it 'should convert rss entries that have updated.content and link.href' do
7
9
  updated = double('update', content: '2010-04-02T01:00:00-06:00')
8
10
  link = double('link', href: 'http://tinyurl.com')
9
11
  post = double('post', updated: updated, link: link)
10
12
 
11
- posts = (0..20).collect { |x| post }
13
+ posts = (0..20).collect { |_x| post }
12
14
 
13
15
  twog_posts = map(posts)
14
16
  expect(twog_posts.length).to eq(21)
15
17
  twog_posts.each do |p|
16
- expect(p.date).to eq("2010-04-02T01:00:00-06:00")
17
- expect(p.link).to eq("http://tinyurl.com")
18
+ expect(p.date).to eq('2010-04-02T01:00:00-06:00')
19
+ expect(p.link).to eq('http://tinyurl.com')
18
20
  end
19
21
  end
20
22
 
21
- it "should convert rss entries that have pubDate and link" do
23
+ it 'should convert rss entries that have pubDate and link' do
22
24
  post = double('post', pubDate: '2010-04-02T01:00:00-06:00', link: 'http://tinyurl.com')
23
- posts = (0..20).collect { |x| post }
25
+ posts = (0..20).collect { |_x| post }
24
26
 
25
27
  twog_posts = map(posts)
26
28
  expect(twog_posts.length).to eq(21)
27
29
  twog_posts.each do |p|
28
- expect(p.date).to eq("2010-04-02T01:00:00-06:00")
29
- expect(p.link).to eq("http://tinyurl.com")
30
+ expect(p.date).to eq('2010-04-02T01:00:00-06:00')
31
+ expect(p.link).to eq('http://tinyurl.com')
30
32
  end
31
33
  end
32
34
  end
@@ -1,17 +1,19 @@
1
- require File.join(File.dirname(__FILE__), "/../spec_helper")
1
+ # frozen_string_literal: true
2
+
3
+ require File.join(File.dirname(__FILE__), '/../spec_helper')
2
4
 
3
5
  describe RssParser do
4
6
  include RssParser
5
7
 
6
- it "should throw exception if rss_feed isn't provided" do
7
- expect{ parse_feed(nil)}.to raise_error('RSS feed missing')
8
+ it 'should throw exception if rss_feed is not provided' do
9
+ expect { parse_feed(nil) }.to raise_error('RSS feed missing')
8
10
  end
9
11
 
10
- it "should read the rss_feed_url and parse the items" do
12
+ it 'should read the rss_feed_url and parse the items' do
11
13
  allow(self).to receive(:get_content).and_return(rss_feed_url_content)
12
14
  items = parse_feed('http://tinyurl.com')
13
15
  expect(items.length).to eq(1)
14
- expect(items[0].title.strip).to eq("Gocode Vim Plugin and Go Modules")
15
- expect(items[0].link.strip).to eq("https://blog.jasonmeridth.com/posts/gocode-vim-plugin-and-go-modules/")
16
+ expect(items[0].title.strip).to eq('Gocode Vim Plugin and Go Modules')
17
+ expect(items[0].link.strip).to eq('https://blog.jasonmeridth.com/posts/gocode-vim-plugin-and-go-modules/')
16
18
  end
17
19
  end