kanban_metrics 0.1.0
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/.editorconfig +10 -0
- data/.rspec +1 -0
- data/LICENSE.md +596 -0
- data/README.md +0 -0
- data/bin/kanban_metrics +25 -0
- data/kanban_metrics.gemspec +28 -0
- data/lib/kanban_metrics.rb +13 -0
- data/lib/kanban_metrics/chart_data_helper.rb +11 -0
- data/lib/kanban_metrics/commands/cfd.rb +56 -0
- data/lib/kanban_metrics/commands/cfd_view.rb +11 -0
- data/lib/kanban_metrics/commands/io.rb +43 -0
- data/lib/kanban_metrics/commands/io_view.rb +12 -0
- data/lib/kanban_metrics/commands/leadtime.rb +41 -0
- data/lib/kanban_metrics/commands/leadtime_view.rb +11 -0
- data/lib/kanban_metrics/csv_loader.rb +19 -0
- data/lib/kanban_metrics/date_helper.rb +12 -0
- data/lib/kanban_metrics/version.rb +3 -0
- data/lib/kanban_metrics/work_item.rb +23 -0
- data/spec/acceptance/command_line.feature +119 -0
- data/spec/acceptance/steps/command_line_steps.rb +23 -0
- data/spec/kanban_metrics/chart_data_helper_spec.rb +11 -0
- data/spec/kanban_metrics/commands/cfd_spec.rb +35 -0
- data/spec/kanban_metrics/commands/cfd_view_spec.rb +16 -0
- data/spec/kanban_metrics/commands/io_spec.rb +24 -0
- data/spec/kanban_metrics/commands/io_view_spec.rb +17 -0
- data/spec/kanban_metrics/commands/leadtime_spec.rb +26 -0
- data/spec/kanban_metrics/commands/leadtime_view_spec.rb +16 -0
- data/spec/kanban_metrics/csv_loader_spec.rb +28 -0
- data/spec/kanban_metrics/date_helper_spec.rb +10 -0
- data/spec/kanban_metrics/work_item_spec.rb +20 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/turnip_helper.rb +1 -0
- metadata +163 -0
data/README.md
ADDED
File without changes
|
data/bin/kanban_metrics
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('../../lib' , __FILE__)
|
4
|
+
require 'kanban_metrics'
|
5
|
+
|
6
|
+
def optional_date_arg(argv)
|
7
|
+
argv ? Date.parse(argv) : nil
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
work_items = KanbanMetrics::CsvLoader.new.load(ARGV[1])
|
12
|
+
|
13
|
+
if ARGV[0] == "cfd"
|
14
|
+
command = KanbanMetrics::Commands::Cfd.new
|
15
|
+
view = KanbanMetrics::Commands::CfdView.new
|
16
|
+
elsif ARGV[0] == "io"
|
17
|
+
command = KanbanMetrics::Commands::Io.new
|
18
|
+
view = KanbanMetrics::Commands::IoView.new
|
19
|
+
elsif ARGV[0] == "leadtime"
|
20
|
+
command = KanbanMetrics::Commands::Leadtime.new
|
21
|
+
view = KanbanMetrics::Commands::LeadtimeView.new
|
22
|
+
end
|
23
|
+
|
24
|
+
chart_data = command.execute(work_items, optional_date_arg(ARGV[2]), optional_date_arg(ARGV[3]))
|
25
|
+
view.render(chart_data)
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib/', __FILE__)
|
4
|
+
$:.unshift lib unless $:.include?(lib)
|
5
|
+
|
6
|
+
require 'kanban_metrics/version'
|
7
|
+
|
8
|
+
Gem::Specification.new do |s|
|
9
|
+
s.name = 'kanban_metrics'
|
10
|
+
s.version = KanbanMetrics::VERSION
|
11
|
+
s.date = '2013-09-09'
|
12
|
+
s.summary = "kanban_metrics-#{s.version}"
|
13
|
+
s.description = "A simple tool for processing data from the Kanban board (in csv) and providing metrics"
|
14
|
+
s.authors = ["Zsolt Fabok"]
|
15
|
+
s.email = 'me@zsoltfabok.com'
|
16
|
+
s.homepage = 'https://github.com/ZsoltFabok/kanban_metrics'
|
17
|
+
s.license = 'GPLv3'
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ || path =~ /file$/ }
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
|
24
|
+
s.add_development_dependency('rspec', '~> 2.12')
|
25
|
+
s.add_development_dependency('turnip', '~> 1.1.0')
|
26
|
+
s.add_development_dependency('rake', '>= 10.0.3')
|
27
|
+
s.add_development_dependency('simplecov', '>= 0.7.1')
|
28
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
require 'csv'
|
4
|
+
require 'kanban_metrics/work_item'
|
5
|
+
require 'kanban_metrics/date_helper'
|
6
|
+
require 'kanban_metrics/chart_data_helper'
|
7
|
+
require 'kanban_metrics/csv_loader'
|
8
|
+
require 'kanban_metrics/commands/cfd'
|
9
|
+
require 'kanban_metrics/commands/cfd_view'
|
10
|
+
require 'kanban_metrics/commands/io'
|
11
|
+
require 'kanban_metrics/commands/io_view'
|
12
|
+
require 'kanban_metrics/commands/leadtime'
|
13
|
+
require 'kanban_metrics/commands/leadtime_view'
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module KanbanMetrics
|
2
|
+
module Commands
|
3
|
+
class Cfd
|
4
|
+
USED_ATTRIBUTES = [:committed, :started, :finished, :delivered]
|
5
|
+
def execute(work_items, start = nil, end_ = nil)
|
6
|
+
chart_data = create_empty_chart_data_with_all_the_dates(work_items)
|
7
|
+
|
8
|
+
work_items.each do |work_item|
|
9
|
+
USED_ATTRIBUTES.each_with_index do |attribute, index|
|
10
|
+
chart_data.keys.select {|date| attribute_lg_date?(work_item, attribute, date)}.each do |entry|
|
11
|
+
chart_data[entry][index] += 1
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
start = earliest_date(work_items) if start.nil?
|
17
|
+
end_ = latest_date(work_items) if end_.nil?
|
18
|
+
chart_data.select! do |date, values|
|
19
|
+
start <= date && date <= end_
|
20
|
+
end
|
21
|
+
|
22
|
+
ChartDataHelper.sort(chart_data)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def create_empty_chart_data_with_all_the_dates(work_items)
|
27
|
+
chart_data = {}
|
28
|
+
work_items.each do |work_item|
|
29
|
+
USED_ATTRIBUTES.each do |attribute|
|
30
|
+
date = work_item.send(attribute)
|
31
|
+
if date != nil && chart_data[date] == nil
|
32
|
+
chart_data[date] = [0, 0, 0, 0]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
chart_data
|
37
|
+
end
|
38
|
+
|
39
|
+
def attribute_lg_date?(work_item, attribute, date)
|
40
|
+
work_item.send(attribute) && date >= work_item.send(attribute)
|
41
|
+
end
|
42
|
+
|
43
|
+
def earliest_date(work_items)
|
44
|
+
work_items.map {|work_item| work_item_dates(work_item)}.flatten.min
|
45
|
+
end
|
46
|
+
|
47
|
+
def latest_date(work_items)
|
48
|
+
work_items.map {|work_item| work_item_dates(work_item)}.flatten.max
|
49
|
+
end
|
50
|
+
|
51
|
+
def work_item_dates(work_item)
|
52
|
+
USED_ATTRIBUTES.map {|attribute| work_item.send(attribute)}.compact
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module KanbanMetrics
|
2
|
+
module Commands
|
3
|
+
class Io
|
4
|
+
def execute(work_items, start = nil, end_ = nil)
|
5
|
+
chart_data = {}
|
6
|
+
work_items.each do |work_item|
|
7
|
+
in_ = "#{work_item.started.year}-#{work_item.started.cweek}"
|
8
|
+
out = "#{work_item.delivered.year}-#{work_item.delivered.cweek}"
|
9
|
+
if chart_data[in_].nil?
|
10
|
+
chart_data[in_] = [0, 0]
|
11
|
+
end
|
12
|
+
|
13
|
+
if chart_data[out].nil?
|
14
|
+
chart_data[out] = [0, 0]
|
15
|
+
end
|
16
|
+
|
17
|
+
chart_data[in_][0] += 1
|
18
|
+
chart_data[out][1] += 1
|
19
|
+
end
|
20
|
+
|
21
|
+
start = earliest_started(work_items) if start.nil?
|
22
|
+
end_ = latest_delivered(work_items) if end_.nil?
|
23
|
+
start_cweek = "#{start.year}-#{start.cweek}"
|
24
|
+
end_cweek = "#{end_.year}-#{end_.cweek}"
|
25
|
+
|
26
|
+
chart_data.select! do |date, values|
|
27
|
+
start_cweek <= date && date <= end_cweek
|
28
|
+
end
|
29
|
+
|
30
|
+
ChartDataHelper.sort(chart_data)
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
def earliest_started(work_items)
|
35
|
+
work_items.map {|work_item| work_item.started}.min
|
36
|
+
end
|
37
|
+
|
38
|
+
def latest_delivered(work_items)
|
39
|
+
work_items.map {|work_item| work_item.delivered}.max
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module KanbanMetrics
|
2
|
+
module Commands
|
3
|
+
class Leadtime
|
4
|
+
def execute(work_items, start = nil, end_ = nil)
|
5
|
+
chart_data = {}
|
6
|
+
start = earliest_committed(work_items) if start.nil?
|
7
|
+
end_ = latest_delivered(work_items) if end_.nil?
|
8
|
+
work_items.each do |work_item|
|
9
|
+
if work_item_finished?(work_item) && work_item_delivered_in_time_frame?(work_item, start, end_)
|
10
|
+
work_item_life_period = work_item.committed..work_item.delivered
|
11
|
+
lead_time = DateHelper.weekdays_in_date_range(work_item_life_period)
|
12
|
+
|
13
|
+
if chart_data[lead_time] == nil
|
14
|
+
chart_data[lead_time] = 0
|
15
|
+
end
|
16
|
+
|
17
|
+
chart_data[lead_time] += 1
|
18
|
+
end
|
19
|
+
end
|
20
|
+
ChartDataHelper.sort(chart_data)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def work_item_finished?(work_item)
|
25
|
+
work_item.committed && work_item.delivered
|
26
|
+
end
|
27
|
+
|
28
|
+
def work_item_delivered_in_time_frame?(work_item, start, end_)
|
29
|
+
start <= work_item.delivered && work_item.delivered <= end_
|
30
|
+
end
|
31
|
+
|
32
|
+
def earliest_committed(work_items)
|
33
|
+
work_items.map {|work_item| work_item.committed}.compact.min
|
34
|
+
end
|
35
|
+
|
36
|
+
def latest_delivered(work_items)
|
37
|
+
work_items.map {|work_item| work_item.delivered}.compact.max
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module KanbanMetrics
|
2
|
+
class CsvLoader
|
3
|
+
def load(csv_file)
|
4
|
+
work_items = []
|
5
|
+
CSV.foreach(csv_file, {:force_quotes => true, :headers => true}) do |row|
|
6
|
+
unless row.header_row?
|
7
|
+
data = {}
|
8
|
+
row.headers.each do |header|
|
9
|
+
if (row[header] && !row[header].empty?)
|
10
|
+
data[header.sub(" ", "_").to_sym] = row[header]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
work_items << WorkItem.new(data)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
work_items
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
module KanbanMetrics
|
4
|
+
class WorkItem
|
5
|
+
attr_accessor :id, :committed, :started, :finished, :delivered, :type, :back_count, :estimated_time, :spent_time
|
6
|
+
|
7
|
+
def initialize(map)
|
8
|
+
map.each do |key, value|
|
9
|
+
eval("@#{key}=\"#{value}\"")
|
10
|
+
# this didn't work: eval("@#{key}=\"#{Date.parse(value)}\"")
|
11
|
+
if key == :committed && @committed
|
12
|
+
@committed = Date.parse(@committed)
|
13
|
+
elsif key == :started && @started
|
14
|
+
@started = Date.parse(@started)
|
15
|
+
elsif key == :finished && @finished
|
16
|
+
@finished = Date.parse(@finished)
|
17
|
+
elsif key == :delivered && @delivered
|
18
|
+
@delivered = Date.parse(@delivered)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
Feature: command line
|
2
|
+
Background:
|
3
|
+
Given I delete "test.csv"
|
4
|
+
|
5
|
+
Scenario: generate cfd csv
|
6
|
+
Given the line in "test.csv" "id,committed,started,finished,delivered,type,back count,estimated time,spent time"
|
7
|
+
And the line in "test.csv" ",2011-05-26,2011-05-27,2011-05-27,2011-05-27"
|
8
|
+
And the line in "test.csv" ",2011-05-24,2011-05-30,2011-05-30,2011-05-30"
|
9
|
+
And the line in "test.csv" ",2011-05-24,2011-05-31,2011-05-31,2011-05-31"
|
10
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
11
|
+
And the line in "test.csv" ",2011-05-30,2011-05-30,2011-05-30,2011-05-30"
|
12
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
13
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
14
|
+
And the line in "test.csv" ",2011-05-25,2011-05-31,2011-05-31,2011-05-31"
|
15
|
+
And the line in "test.csv" ",2011-05-23,2011-05-27,2011-05-27,2011-05-27"
|
16
|
+
And the line in "test.csv" ",2011-05-31,2011-05-31,2011-05-31,2011-05-31"
|
17
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
18
|
+
When I run the command "bin/kanban_metrics cfd test.csv"
|
19
|
+
Then I see "2011-05-23,1,0,0,0\n2011-05-24,7,0,0,0\n2011-05-25,8,0,0,0\n2011-05-26,9,4,4,4\n2011-05-27,9,6,6,6\n2011-05-30,10,8,8,8\n2011-05-31,11,11,11,11"
|
20
|
+
|
21
|
+
Scenario: generate cfd csv in a time window
|
22
|
+
Given the line in "test.csv" "id,committed,started,finished,delivered,type,back count,estimated time,spent time"
|
23
|
+
And the line in "test.csv" ",2011-05-26,2011-05-27,2011-05-27,2011-05-27"
|
24
|
+
And the line in "test.csv" ",2011-05-24,2011-05-30,2011-05-30,2011-05-30"
|
25
|
+
And the line in "test.csv" ",2011-05-24,2011-05-31,2011-05-31,2011-05-31"
|
26
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
27
|
+
And the line in "test.csv" ",2011-05-30,2011-05-30,2011-05-30,2011-05-30"
|
28
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
29
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
30
|
+
And the line in "test.csv" ",2011-05-25,2011-05-31,2011-05-31,2011-05-31"
|
31
|
+
And the line in "test.csv" ",2011-05-23,2011-05-27,2011-05-27,2011-05-27"
|
32
|
+
And the line in "test.csv" ",2011-05-31,2011-05-31,2011-05-31,2011-05-31"
|
33
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
34
|
+
When I run the command "bin/kanban_metrics cfd test.csv 2011-05-26 2011-05-29"
|
35
|
+
Then I see "2011-05-26,9,4,4,4\n2011-05-27,9,6,6,6"
|
36
|
+
|
37
|
+
Scenario: generate cfd with partial data
|
38
|
+
Given the line in "test.csv" "id,committed,started,finished,delivered,type,back count,estimated time,spent time"
|
39
|
+
And the line in "test.csv" ",2011-05-26,2011-05-27,2011-05-27,2011-05-27"
|
40
|
+
And the line in "test.csv" ",2011-05-24,2011-05-30,2011-05-30,"
|
41
|
+
And the line in "test.csv" ",2011-05-24,2011-05-31,2011-05-31,"
|
42
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,,"
|
43
|
+
And the line in "test.csv" ",2011-05-30,2011-05-30,2011-05-30,2011-05-30"
|
44
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
45
|
+
And the line in "test.csv" ",2011-05-24,,,"
|
46
|
+
When I run the command "bin/kanban_metrics cfd test.csv"
|
47
|
+
Then I see "2011-05-24,5,0,0,0\n2011-05-26,6,2,1,1\n2011-05-27,6,3,2,2\n2011-05-30,7,5,4,3\n2011-05-31,7,6,5,3"
|
48
|
+
|
49
|
+
Scenario: generate input output
|
50
|
+
Given the line in "test.csv" "id,committed,started,finished,delivered,type,back count,estimated time,spent time"
|
51
|
+
And the line in "test.csv" ",2011-05-26,2011-05-27,2011-05-31,2011-05-31"
|
52
|
+
And the line in "test.csv" ",2011-05-24,2011-05-30,2011-05-30,2011-05-30"
|
53
|
+
And the line in "test.csv" ",2011-05-24,2011-05-31,2011-05-31,2011-05-31"
|
54
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
55
|
+
And the line in "test.csv" ",2011-05-30,2011-05-30,2011-05-30,2011-05-30"
|
56
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
57
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
58
|
+
And the line in "test.csv" ",2011-05-25,2011-05-31,2011-05-31,2011-05-31"
|
59
|
+
And the line in "test.csv" ",2011-05-23,2011-05-27,2011-05-27,2011-05-27"
|
60
|
+
And the line in "test.csv" ",2011-05-31,2011-05-31,2011-05-31,2011-05-31"
|
61
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
62
|
+
When I run the command "bin/kanban_metrics io test.csv"
|
63
|
+
Then I see "week, in, out\n2011-21,6,5\n2011-22,5,6"
|
64
|
+
|
65
|
+
Scenario: generate input output in a time window
|
66
|
+
Given the line in "test.csv" "id,committed,started,finished,delivered,type,back count,estimated time,spent time"
|
67
|
+
And the line in "test.csv" ",2011-05-26,2011-05-27,2011-05-31,2011-05-31"
|
68
|
+
And the line in "test.csv" ",2011-05-24,2011-05-30,2011-05-30,2011-05-30"
|
69
|
+
And the line in "test.csv" ",2011-05-24,2011-05-31,2011-05-31,2011-05-31"
|
70
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
71
|
+
And the line in "test.csv" ",2011-05-30,2011-05-30,2011-05-30,2011-05-30"
|
72
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
73
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
74
|
+
And the line in "test.csv" ",2011-05-25,2011-05-31,2011-05-31,2011-05-31"
|
75
|
+
And the line in "test.csv" ",2011-05-23,2011-05-27,2011-05-27,2011-05-27"
|
76
|
+
And the line in "test.csv" ",2011-05-31,2011-05-31,2011-05-31,2011-05-31"
|
77
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
78
|
+
When I run the command "bin/kanban_metrics io test.csv 2011-05-07 2011-05-29"
|
79
|
+
Then I see "week, in, out\n2011-21,6,5"
|
80
|
+
|
81
|
+
Scenario: lead time histogram
|
82
|
+
Given the line in "test.csv" "id,committed,started,finished,delivered,type,back count,estimated time,spent time"
|
83
|
+
And the line in "test.csv" ",2011-05-26,2011-05-27,2011-05-31,2011-05-31"
|
84
|
+
And the line in "test.csv" ",2011-05-24,2011-05-30,2011-05-30,2011-05-30"
|
85
|
+
And the line in "test.csv" ",2011-05-24,2011-05-31,2011-05-31,2011-05-31"
|
86
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
87
|
+
And the line in "test.csv" ",2011-05-30,2011-05-30,2011-05-30,2011-05-30"
|
88
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
89
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
90
|
+
And the line in "test.csv" ",2011-05-25,2011-05-31,2011-05-31,2011-05-31"
|
91
|
+
And the line in "test.csv" ",2011-05-23,2011-05-27,2011-05-27,2011-05-27"
|
92
|
+
And the line in "test.csv" ",2011-05-31,2011-05-31,2011-05-31,2011-05-31"
|
93
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
94
|
+
When I run the command "bin/kanban_metrics leadtime test.csv"
|
95
|
+
Then I see "1,2\n3,4\n4,1\n5,3\n6,1"
|
96
|
+
|
97
|
+
Scenario: lead time histogram in a time window
|
98
|
+
Given the line in "test.csv" "id,committed,started,finished,delivered,type,back count,estimated time,spent time"
|
99
|
+
And the line in "test.csv" ",2011-05-26,2011-05-27,2011-05-31,2011-05-31"
|
100
|
+
And the line in "test.csv" ",2011-05-24,2011-05-30,2011-05-30,2011-05-30"
|
101
|
+
And the line in "test.csv" ",2011-05-24,2011-05-31,2011-05-31,2011-05-31"
|
102
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
103
|
+
And the line in "test.csv" ",2011-05-30,2011-05-30,2011-05-30,2011-05-30"
|
104
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
105
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
106
|
+
And the line in "test.csv" ",2011-05-25,2011-05-31,2011-05-31,2011-05-31"
|
107
|
+
And the line in "test.csv" ",2011-05-23,2011-05-27,2011-05-27,2011-05-27"
|
108
|
+
And the line in "test.csv" ",2011-05-31,2011-05-31,2011-05-31,2011-05-31"
|
109
|
+
And the line in "test.csv" ",2011-05-24,2011-05-26,2011-05-26,2011-05-26"
|
110
|
+
When I run the command "bin/kanban_metrics leadtime test.csv 2011-05-07 2011-05-28"
|
111
|
+
Then I see "3,4\n5,1"
|
112
|
+
|
113
|
+
# Scenario: Little, stability, ageing
|
114
|
+
|
115
|
+
# Scenario: phase based cycle time distribution
|
116
|
+
|
117
|
+
# Scenario: flow efficiency
|
118
|
+
|
119
|
+
# Scenario: deadline (behind?)
|