diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..73462a5 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.5.1 diff --git a/lib/har/archive.rb b/lib/har/archive.rb index d5417e7..18ea24f 100644 --- a/lib/har/archive.rb +++ b/lib/har/archive.rb @@ -72,6 +72,14 @@ def entries @entries ||= raw_entries.map { |e| Entry.new(e) } end + def entries_before(time) + raise TypeError, "expected Time" unless time.is_a?(Time) + entries.select do |entry| + return false unless entry.time + entry.started_date_time + entry.time / 1000.0 <= time + end + end + # create a new archive by merging this and another archive def merge(other) diff --git a/lib/har/page.rb b/lib/har/page.rb index e615f27..09f57ac 100644 --- a/lib/har/page.rb +++ b/lib/har/page.rb @@ -16,7 +16,7 @@ def entries_before(time) raise TypeError, "expected Time" unless time.is_a?(Time) entries.select do |entry| return false unless entry.time - entry.started_date_time + entry.time / 1000.0 < time + entry.started_date_time + entry.time / 1000.0 <= time end end end diff --git a/spec/har/archive_spec.rb b/spec/har/archive_spec.rb index 689a755..d82eadc 100644 --- a/spec/har/archive_spec.rb +++ b/spec/har/archive_spec.rb @@ -152,5 +152,22 @@ module HAR end end + describe "#entries_before" do + let(:archive) { Archive.from_file(google_path) } + + it "requires a DateTime" do + expect { archive.entries_before("a string") }.to raise_error(TypeError) + end + + it "filters entries that responded before the specified time" do + time = archive.pages.first.started_date_time + 0.250 + entries = archive.entries_before(time) + entries.each do |entry| + (entry.started_date_time + entry.time / 1000.to_f).should < time + end + + entries.length.should < archive.entries.length + end + end end # Archive end # HAR diff --git a/spec/har/page_spec.rb b/spec/har/page_spec.rb index ea10c56..379db36 100644 --- a/spec/har/page_spec.rb +++ b/spec/har/page_spec.rb @@ -30,6 +30,8 @@ module HAR entries.each do |entry| (entry.started_date_time + entry.time / 1000.to_f).should < time end + + entries.length.should < page.entries.length end end end