stale_fish 1.3.0.pre1 → 1.3.0.pre2
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/VERSION +1 -1
- data/lib/stale_fish.rb +17 -17
- data/lib/stale_fish/fixture.rb +20 -10
- data/spec/unit/fixture_spec.rb +11 -11
- data/spec/unit/stale_fish_spec.rb +4 -9
- data/stale_fish.gemspec +1 -1
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.0.
|
1
|
+
1.3.0.pre2
|
data/lib/stale_fish.rb
CHANGED
@@ -12,7 +12,6 @@ module StaleFish
|
|
12
12
|
def setup(config_location=nil)
|
13
13
|
self.configuration = config_location
|
14
14
|
load
|
15
|
-
register_fixtures
|
16
15
|
block_requests
|
17
16
|
end
|
18
17
|
|
@@ -21,14 +20,14 @@ module StaleFish
|
|
21
20
|
end
|
22
21
|
|
23
22
|
def configuration
|
24
|
-
@configuration || if defined?(Rails)
|
25
|
-
|
26
|
-
else
|
23
|
+
@configuration || #if defined?(Rails)
|
24
|
+
# File.join(Rails.root, 'spec', 'stale_fish.yml')
|
25
|
+
#else
|
27
26
|
'stale_fish.yml'
|
28
|
-
end
|
27
|
+
#end
|
29
28
|
end
|
30
29
|
|
31
|
-
def update_stale(options=
|
30
|
+
def update_stale(options = :all)
|
32
31
|
reset_fixtures = false
|
33
32
|
|
34
33
|
allow_requests
|
@@ -38,17 +37,17 @@ module StaleFish
|
|
38
37
|
reset_fixtures = true
|
39
38
|
end
|
40
39
|
end
|
41
|
-
|
40
|
+
drop_locks if reset_fixtures
|
42
41
|
block_requests
|
43
42
|
write
|
44
43
|
end
|
45
44
|
|
46
|
-
def update_stale!(options=
|
45
|
+
def update_stale!(options = :all)
|
47
46
|
allow_requests
|
48
47
|
fixtures(options).each do |fixture|
|
49
48
|
fixture.update!
|
50
49
|
end
|
51
|
-
|
50
|
+
drop_locks
|
52
51
|
block_requests
|
53
52
|
write
|
54
53
|
end
|
@@ -78,27 +77,28 @@ module StaleFish
|
|
78
77
|
end
|
79
78
|
|
80
79
|
def write
|
81
|
-
updated_yaml =
|
80
|
+
updated_yaml = "stale:\n"
|
82
81
|
fixtures.each do |fixture|
|
83
82
|
updated_yaml << fixture.to_yaml
|
84
83
|
end
|
85
|
-
|
86
|
-
File.open(configuration, 'w') { |file|
|
84
|
+
@full_yaml = updated_yaml
|
85
|
+
File.open(configuration, 'w') { |file| file.write(@full_yaml.to_s) }
|
87
86
|
end
|
88
87
|
|
89
88
|
def allow_requests
|
89
|
+
drop_locks
|
90
90
|
FakeWeb.allow_net_connect = true
|
91
91
|
end
|
92
92
|
|
93
93
|
def block_requests
|
94
|
-
FakeWeb.allow_net_connect = false
|
95
|
-
end
|
96
|
-
|
97
|
-
def register_fixtures
|
98
|
-
FakeWeb.clean_registry
|
99
94
|
fixtures.each do |fixture|
|
100
95
|
fixture.register_lock!
|
101
96
|
end
|
97
|
+
FakeWeb.allow_net_connect = false
|
98
|
+
end
|
99
|
+
|
100
|
+
def drop_locks
|
101
|
+
FakeWeb.clean_registry
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
data/lib/stale_fish/fixture.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'activesupport'
|
2
|
+
|
1
3
|
module StaleFish
|
2
4
|
class Fixture
|
3
5
|
attr_accessor :name, :file, :last_updated_at
|
@@ -10,7 +12,7 @@ module StaleFish
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def is_stale?
|
13
|
-
if last_updated_at.nil? || (last_updated_at + update_interval) <
|
15
|
+
if last_updated_at.nil? || (last_updated_at + eval(update_interval)) < DateTime.now
|
14
16
|
return true
|
15
17
|
else
|
16
18
|
return false
|
@@ -28,12 +30,12 @@ module StaleFish
|
|
28
30
|
write_response_to_file(response.body)
|
29
31
|
end
|
30
32
|
|
31
|
-
self.last_updated_at =
|
33
|
+
self.last_updated_at = DateTime.now
|
32
34
|
end
|
33
35
|
|
34
36
|
def register_lock!
|
35
37
|
uri, type = build_uri, request_type.downcase.to_sym
|
36
|
-
FakeWeb.register_uri(type, uri, :body =>
|
38
|
+
FakeWeb.register_uri(type, uri, :body => 'hey dude')
|
37
39
|
|
38
40
|
return FakeWeb.registered_uri?(type, uri)
|
39
41
|
end
|
@@ -41,15 +43,23 @@ module StaleFish
|
|
41
43
|
def to_yaml
|
42
44
|
# update_interval.inspect trick is to prevent Fixnum being written
|
43
45
|
yaml = <<-EOF
|
44
|
-
#{name}:
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
46
|
+
#{name}:
|
47
|
+
file: '#{file}'
|
48
|
+
update_interval: #{update_interval.inspect.gsub(/ /, '.').gsub(/"/, '')}
|
49
|
+
check_against: #{check_against}
|
50
|
+
request_type: #{request_type}
|
51
|
+
last_updated_at: #{last_updated_at}
|
50
52
|
EOF
|
51
53
|
return yaml
|
52
54
|
end
|
55
|
+
|
56
|
+
def last_updated_at
|
57
|
+
if @last_updated_at.nil? || @last_updated_at.is_a?(DateTime)
|
58
|
+
@last_updated_at
|
59
|
+
else
|
60
|
+
DateTime.parse(@last_updated_at.to_s)
|
61
|
+
end
|
62
|
+
end
|
53
63
|
|
54
64
|
protected
|
55
65
|
|
@@ -62,7 +72,7 @@ EOF
|
|
62
72
|
end
|
63
73
|
|
64
74
|
def write_response_to_file(body)
|
65
|
-
File.open(file, "w") { |file| file.write(body) }
|
75
|
+
File.open(File.join(File.dirname(StaleFish.configuration), file), "w") { |file| file.write(body) }
|
66
76
|
end
|
67
77
|
end
|
68
78
|
end
|
data/spec/unit/fixture_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), *%w[.. spec_helper])
|
|
2
2
|
|
3
3
|
describe StaleFish::Fixture do
|
4
4
|
before do
|
5
|
-
@time =
|
5
|
+
@time = DateTime.now
|
6
6
|
@args = {
|
7
7
|
:name => 'commits',
|
8
8
|
:file => 'commit.json',
|
@@ -25,9 +25,9 @@ describe StaleFish::Fixture do
|
|
25
25
|
context "#is_stale?" do
|
26
26
|
before do
|
27
27
|
@stale_fixture = StaleFish::Fixture.new(:last_updated_at => 1.week.ago,
|
28
|
-
:update_interval => 1.day)
|
28
|
+
:update_interval => '1.day')
|
29
29
|
@fresh_fixture = StaleFish::Fixture.new(:last_updated_at => 1.day.from_now,
|
30
|
-
:update_interval => 1.day)
|
30
|
+
:update_interval => '1.day')
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should return true when stale" do
|
@@ -54,7 +54,7 @@ describe StaleFish::Fixture do
|
|
54
54
|
it "should update the fixture data" do
|
55
55
|
@fixture.should_receive(:write_response_to_file).once.and_return(true)
|
56
56
|
@fixture.update!
|
57
|
-
@fixture.last_updated_at.should be_a(
|
57
|
+
@fixture.last_updated_at.should be_a(DateTime)
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should use Net::HTTP#get with a GET request_type"
|
@@ -76,19 +76,19 @@ describe StaleFish::Fixture do
|
|
76
76
|
context "#to_yaml" do
|
77
77
|
before do
|
78
78
|
@fixture = StaleFish::Fixture.new(:name => 'google',
|
79
|
-
:update_interval => 1.day,
|
79
|
+
:update_interval => '1.day',
|
80
80
|
:request_type => 'GET',
|
81
81
|
:check_against => 'http://google.com/index.html',
|
82
82
|
:file => 'index.html',
|
83
83
|
:last_updated_at => @time)
|
84
84
|
@proper_yaml =
|
85
85
|
<<-EOF
|
86
|
-
google:
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
86
|
+
google:
|
87
|
+
file: 'index.html'
|
88
|
+
update_interval: 1.day
|
89
|
+
check_against: http://google.com/index.html
|
90
|
+
request_type: GET
|
91
|
+
last_updated_at: #{@time}
|
92
92
|
EOF
|
93
93
|
end
|
94
94
|
|
@@ -2,12 +2,12 @@ require File.join(File.dirname(__FILE__), *%w[.. spec_helper])
|
|
2
2
|
|
3
3
|
describe StaleFish do
|
4
4
|
before do
|
5
|
-
@stale_fixture = StaleFish::Fixture.new(:last_updated_at => 1.week.ago,
|
6
|
-
:update_interval => 1.day,
|
5
|
+
@stale_fixture = StaleFish::Fixture.new(:last_updated_at => 1.week.ago.to_datetime,
|
6
|
+
:update_interval => '1.day',
|
7
7
|
:request_type => 'GET',
|
8
8
|
:check_against => 'http://google.com/index.html')
|
9
|
-
@fresh_fixture = StaleFish::Fixture.new(:last_updated_at => 1.day.from_now,
|
10
|
-
:update_interval => 1.day,
|
9
|
+
@fresh_fixture = StaleFish::Fixture.new(:last_updated_at => 1.day.from_now.to_datetime,
|
10
|
+
:update_interval => '1.day',
|
11
11
|
:request_type => 'GET',
|
12
12
|
:check_against => 'http://google.com/index.html')
|
13
13
|
end
|
@@ -15,7 +15,6 @@ describe StaleFish do
|
|
15
15
|
context ".setup" do
|
16
16
|
it "should call appropriate functions" do
|
17
17
|
StaleFish.should_receive(:load)
|
18
|
-
StaleFish.should_receive(:register_fixtures)
|
19
18
|
StaleFish.should_receive(:block_requests)
|
20
19
|
StaleFish.setup
|
21
20
|
end
|
@@ -134,8 +133,4 @@ describe StaleFish do
|
|
134
133
|
StaleFish.send(:block_requests).should == false
|
135
134
|
end
|
136
135
|
end
|
137
|
-
|
138
|
-
context ".register_fixtures" do
|
139
|
-
|
140
|
-
end
|
141
136
|
end
|
data/stale_fish.gemspec
CHANGED