microscope 0.6 → 0.6.1
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.
- checksums.yaml +4 -4
- data/lib/microscope/instance_method/boolean_instance_method.rb +9 -0
- data/lib/microscope/instance_method/date_instance_method.rb +1 -39
- data/lib/microscope/instance_method/datetime_instance_method.rb +9 -0
- data/lib/microscope/version.rb +1 -1
- data/spec/microscope/instance_method/boolean_instance_method_spec.rb +13 -0
- data/spec/microscope/instance_method/date_instance_method_spec.rb +19 -1
- data/spec/microscope/instance_method/datetime_instance_method_spec.rb +17 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e1d8b3f9466f8a555fcd4133c7cc541bfbe2e437
         | 
| 4 | 
            +
              data.tar.gz: 0370c547769ffd68344c9a5746e0ab2f02d2ba54
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4328b4effc602616f1c6c2e80cf31213beb914a810a373d81f7c1142552fafa77bb8c457f286bd7359d5bdd0d702d80f39614dda799c61033ca00e9742e29026
         | 
| 7 | 
            +
              data.tar.gz: 6da051c7e8ea9c78a947bb5eb6938ab57c61640afeb7d11bf323a2f1d0a10f24e1414d6ffc30d68a4cc4713d520052705e325c700c49746a7eabdb115a8c2cf9
         | 
| @@ -15,6 +15,15 @@ module Microscope | |
| 15 15 | 
             
                        save!
         | 
| 16 16 | 
             
                      end
         | 
| 17 17 | 
             
                      alias_method 'un#{infinitive_verb}!', 'not_#{infinitive_verb}!'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                      define_method "mark_as_#{field.name}" do
         | 
| 20 | 
            +
                        send("#{field.name}=", true)
         | 
| 21 | 
            +
                      end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      define_method "mark_as_not_#{field.name}" do
         | 
| 24 | 
            +
                        send("#{field.name}=", false)
         | 
| 25 | 
            +
                      end
         | 
| 26 | 
            +
                      alias_method 'mark_as_un#{field.name}', 'mark_as_not_#{field.name}'
         | 
| 18 27 | 
             
                    RUBY
         | 
| 19 28 | 
             
                  end
         | 
| 20 29 | 
             
                end
         | 
| @@ -1,50 +1,12 @@ | |
| 1 1 | 
             
            module Microscope
         | 
| 2 2 | 
             
              class InstanceMethod
         | 
| 3 | 
            -
                class DateInstanceMethod <  | 
| 3 | 
            +
                class DateInstanceMethod < DatetimeInstanceMethod
         | 
| 4 4 | 
             
                  def initialize(*args)
         | 
| 5 5 | 
             
                    super
         | 
| 6 6 |  | 
| 7 7 | 
             
                    @now = 'Date.today'
         | 
| 8 8 | 
             
                    @cropped_field_regex = /_on$/
         | 
| 9 9 | 
             
                  end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                  def apply
         | 
| 12 | 
            -
                    return unless @field_name =~ @cropped_field_regex
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    cropped_field = field.name.gsub(@cropped_field_regex, '')
         | 
| 15 | 
            -
                    infinitive_verb = self.class.past_participle_to_infinitive(cropped_field)
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                    model.class_eval <<-RUBY, __FILE__, __LINE__ + 1
         | 
| 18 | 
            -
                      define_method "#{cropped_field}?" do
         | 
| 19 | 
            -
                        value = send("#{field.name}")
         | 
| 20 | 
            -
                        !value.nil? && value <= #{@now}
         | 
| 21 | 
            -
                      end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                      define_method "#{cropped_field}=" do |value|
         | 
| 24 | 
            -
                        if Microscope::InstanceMethod.value_to_boolean(value)
         | 
| 25 | 
            -
                          self.#{field.name} ||= #{@now}
         | 
| 26 | 
            -
                        else
         | 
| 27 | 
            -
                          self.#{field.name} = nil
         | 
| 28 | 
            -
                        end
         | 
| 29 | 
            -
                      end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                      define_method "not_#{cropped_field}?" do
         | 
| 32 | 
            -
                        !#{cropped_field}?
         | 
| 33 | 
            -
                      end
         | 
| 34 | 
            -
                      alias_method 'un#{cropped_field}?', 'not_#{cropped_field}?'
         | 
| 35 | 
            -
             | 
| 36 | 
            -
                      define_method "#{infinitive_verb}!" do
         | 
| 37 | 
            -
                        send("#{field.name}=", #{@now})
         | 
| 38 | 
            -
                        save!
         | 
| 39 | 
            -
                      end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
                      define_method "not_#{infinitive_verb}!" do
         | 
| 42 | 
            -
                        send("#{field.name}=", nil)
         | 
| 43 | 
            -
                        save!
         | 
| 44 | 
            -
                      end
         | 
| 45 | 
            -
                      alias_method 'un#{infinitive_verb}!', 'not_#{infinitive_verb}!'
         | 
| 46 | 
            -
                    RUBY
         | 
| 47 | 
            -
                  end
         | 
| 48 10 | 
             
                end
         | 
| 49 11 | 
             
              end
         | 
| 50 12 | 
             
            end
         | 
| @@ -43,6 +43,15 @@ module Microscope | |
| 43 43 | 
             
                        save!
         | 
| 44 44 | 
             
                      end
         | 
| 45 45 | 
             
                      alias_method 'un#{infinitive_verb}!', 'not_#{infinitive_verb}!'
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                      define_method "mark_as_#{cropped_field}" do
         | 
| 48 | 
            +
                        self.#{cropped_field}= true
         | 
| 49 | 
            +
                      end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                      define_method "mark_as_not_#{cropped_field}" do
         | 
| 52 | 
            +
                        self.#{cropped_field}= false
         | 
| 53 | 
            +
                      end
         | 
| 54 | 
            +
                      alias_method 'mark_as_un#{cropped_field}', 'mark_as_not_#{cropped_field}'
         | 
| 46 55 | 
             
                    RUBY
         | 
| 47 56 | 
             
                  end
         | 
| 48 57 | 
             
                end
         | 
    
        data/lib/microscope/version.rb
    CHANGED
    
    
| @@ -21,4 +21,17 @@ describe Microscope::InstanceMethod::BooleanInstanceMethod do | |
| 21 21 | 
             
                it { expect { animal.not_feed! }.to change { animal.reload.fed? }.from(true).to(false) }
         | 
| 22 22 | 
             
                it { expect(animal).to respond_to(:unfeed!) }
         | 
| 23 23 | 
             
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              describe '#mark_as_fed' do
         | 
| 26 | 
            +
                let(:animal) { Animal.create(fed: false) }
         | 
| 27 | 
            +
                it { expect { animal.mark_as_fed }.to_not change { animal.reload.fed? } }
         | 
| 28 | 
            +
                it { expect { animal.mark_as_fed }.to change { animal.fed? }.from(false).to(true) }
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              describe '#mark_as_not_fed' do
         | 
| 32 | 
            +
                let(:animal) { Animal.create(fed: true) }
         | 
| 33 | 
            +
                it { expect { animal.mark_as_not_fed }.to_not change { animal.reload.fed? } }
         | 
| 34 | 
            +
                it { expect { animal.mark_as_not_fed }.to change { animal.fed? }.from(true).to(false) }
         | 
| 35 | 
            +
                it { expect(animal).to respond_to(:mark_as_unfed) }
         | 
| 36 | 
            +
              end
         | 
| 24 37 | 
             
            end
         | 
| @@ -85,11 +85,29 @@ describe Microscope::InstanceMethod::DateInstanceMethod do | |
| 85 85 | 
             
                it { expect { event.start! }.to change { event.reload.started_on }.from(nil).to(stubbed_date) }
         | 
| 86 86 | 
             
              end
         | 
| 87 87 |  | 
| 88 | 
            -
              describe '# | 
| 88 | 
            +
              describe '#not_start!' do
         | 
| 89 89 | 
             
                let(:stubbed_date) { Date.parse('2020-03-18 08:00:00') }
         | 
| 90 90 |  | 
| 91 91 | 
             
                let(:event) { Event.create(started_on: stubbed_date) }
         | 
| 92 92 | 
             
                it { expect { event.not_start! }.to change { event.reload.started_on }.from(stubbed_date).to(nil) }
         | 
| 93 93 | 
             
                it { expect(event).to respond_to(:unstart!) }
         | 
| 94 94 | 
             
              end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
              describe '#mark_as_started' do
         | 
| 97 | 
            +
                let(:stubbed_date) { Date.parse('2020-03-18 08:00:00') }
         | 
| 98 | 
            +
                before { Date.stub(:today).and_return(stubbed_date) }
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                let(:event) { Event.create(started_on: nil) }
         | 
| 101 | 
            +
                it { expect { event.mark_as_started }.to_not change { event.reload.started_on } }
         | 
| 102 | 
            +
                it { expect { event.mark_as_started }.to change { event.started_on }.from(nil).to(stubbed_date) }
         | 
| 103 | 
            +
              end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
              describe '#mark_as_not_started' do
         | 
| 106 | 
            +
                let(:stubbed_date) { Date.parse('2020-03-18 08:00:00') }
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                let(:event) { Event.create(started_on: stubbed_date) }
         | 
| 109 | 
            +
                it { expect { event.mark_as_not_started }.to_not change { event.reload.started_on } }
         | 
| 110 | 
            +
                it { expect { event.mark_as_not_started }.to change { event.started_on }.from(stubbed_date).to(nil) }
         | 
| 111 | 
            +
                it { expect(event).to respond_to(:mark_as_unstarted) }
         | 
| 112 | 
            +
              end
         | 
| 95 113 | 
             
            end
         | 
| @@ -81,4 +81,21 @@ describe Microscope::InstanceMethod::DatetimeInstanceMethod do | |
| 81 81 | 
             
                it { expect { event.not_start! }.to change { event.reload.started_at }.from(stubbed_date).to(nil) }
         | 
| 82 82 | 
             
                it { expect(event).to respond_to(:unstart!) }
         | 
| 83 83 | 
             
              end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
              describe '#mark_as_started' do
         | 
| 86 | 
            +
                let(:stubbed_date) { Time.parse('2020-03-18 08:00:00') }
         | 
| 87 | 
            +
                before { Time.stub(:now).and_return(stubbed_date) }
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                let(:event) { Event.create(started_at: nil) }
         | 
| 90 | 
            +
                it { expect { event.mark_as_started }.to_not change { event.reload.started_at } }
         | 
| 91 | 
            +
                it { expect { event.mark_as_started }.to change { event.started_at }.from(nil).to(stubbed_date) }
         | 
| 92 | 
            +
              end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
              describe '#mark_as_not_started' do
         | 
| 95 | 
            +
                let(:stubbed_date) { Time.parse('2020-03-18 08:00:00') }
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                let(:event) { Event.create(started_at: stubbed_date) }
         | 
| 98 | 
            +
                it { expect { event.mark_as_not_started }.to_not change { event.reload.started_at } }
         | 
| 99 | 
            +
                it { expect { event.mark_as_not_started }.to change { event.started_at }.from(stubbed_date).to(nil) }
         | 
| 100 | 
            +
              end
         | 
| 84 101 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: microscope
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 0.6.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Simon Prévost
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2014- | 
| 12 | 
            +
            date: 2014-05-23 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: activesupport
         |