]> cat aescling's git repositories - mastodon.git/commitdiff
Fix subscription expiration condition (#2715)
authorYamagishi Kazutoshi <ykzts@desire.sh>
Tue, 2 May 2017 16:21:22 +0000 (01:21 +0900)
committerEugen Rochko <eugen@zeonfederated.com>
Tue, 2 May 2017 16:21:22 +0000 (18:21 +0200)
* Fix subscription expiration condition

* dry and add spec

app/models/subscription.rb
app/views/admin/pubsubhubbub/index.html.haml
spec/models/subscription_spec.rb

index 6a039cf07fc79610242b99901727caee14a440a1..6046ae4c2ab347dad9fd8b966cba08d8818380a5 100644 (file)
@@ -33,6 +33,10 @@ class Subscription < ApplicationRecord
     (expires_at - Time.now.utc).to_i
   end
 
+  def expired?
+    Time.now.utc > expires_at
+  end
+
   before_validation :set_min_expiration
 
   private
index 60a0b40b08af5accf94f866aa03f5aa39dd18c9b..852e84f11c07bdcfcfc3dc2fd94656ec471d0f9c 100644 (file)
@@ -11,7 +11,6 @@
       %th= t('admin.pubsubhubbub.last_delivery')
   %tbody
     - @subscriptions.each do |subscription|
-      - expired = Time.now.utc < subscription.expires_at
       %tr
         %td
           %samp= subscription.account.acct
@@ -20,8 +19,8 @@
         %td
           - if subscription.confirmed?
             %i.fa.fa-check
-        %td{ style: "color: #{expired ? 'red' : 'inherit'};" }
-          = precede expired ? '-' : '' do
+        %td{ style: "color: #{subscription.expired? ? 'red' : 'inherit'};" }
+          = precede subscription.expired? ? '-' : '' do
             = time_ago_in_words(subscription.expires_at)
         %td
           - if subscription.last_successful_delivery_at?
index 9cb3d41ce9528ffbcbf14341a327f410d447a433..11fd8fadc860072039834a4240aced9cb780bca2 100644 (file)
@@ -1,5 +1,19 @@
 require 'rails_helper'
 
 RSpec.describe Subscription, type: :model do
+  let(:alice) { Fabricate(:account, username: 'alice') }
 
+  subject { Fabricate(:subscription, account: alice) }
+
+  describe '#expired?' do
+    it 'return true when expires_at is past' do
+      subject.expires_at = 2.days.ago
+      expect(subject.expired?).to be true
+    end
+
+    it 'return false when expires_at is future' do
+      subject.expires_at = 2.days.from_now
+      expect(subject.expired?).to be false
+    end
+  end
 end