houston-core 0.8.4 → 0.9.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +72 -78
- data/app/assets/javascripts/houston/app/models/role.coffee +4 -0
- data/app/assets/javascripts/houston/app/views/nested_resources.coffee +44 -0
- data/app/assets/javascripts/houston/app/views/team_roles_view.coffee +10 -0
- data/app/assets/javascripts/houston/application.js +3 -1
- data/app/assets/javascripts/houston/core/ajax_helpers.coffee +26 -0
- data/app/assets/javascripts/houston/core/app.coffee +0 -45
- data/app/assets/javascripts/houston/core/errors.coffee +1 -12
- data/app/assets/javascripts/houston/core/handlebars_helpers.coffee +8 -70
- data/app/assets/javascripts/houston/core/jquery_extensions.coffee +0 -138
- data/app/assets/javascripts/houston/core/timeline_helpers.coffee +44 -0
- data/app/assets/javascripts/houston/core/uploader_helpers.coffee +99 -0
- data/app/assets/javascripts/houston/vendor.js +26 -9
- data/app/assets/stylesheets/houston/application/actions.scss +22 -0
- data/app/assets/stylesheets/houston/application/navigation.scss +2 -2
- data/app/assets/stylesheets/houston/application/{freight_train.css.scss → nested_resources.scss} +1 -0
- data/app/assets/stylesheets/houston/core/alerts.scss +0 -4
- data/app/assets/stylesheets/houston/core/timeline.scss +204 -0
- data/app/assets/templates/houston/teams/roles/index.hbs +1 -0
- data/app/assets/templates/houston/teams/roles/show.hbs +19 -0
- data/app/channels/events_channel.rb +1 -1
- data/app/concerns/houston/props.rb +3 -2
- data/app/controllers/actions_controller.rb +8 -3
- data/app/controllers/application_controller.rb +9 -12
- data/app/controllers/authorizations_controller.rb +41 -14
- data/app/controllers/errors_controller.rb +3 -3
- data/app/controllers/project_follows_controller.rb +23 -0
- data/app/controllers/project_options_controller.rb +1 -1
- data/app/controllers/user_options_controller.rb +1 -1
- data/app/helpers/actions_helper.rb +12 -0
- data/app/helpers/application_helper.rb +0 -10
- data/app/helpers/layout_helper.rb +20 -0
- data/app/helpers/markdown_helper.rb +2 -10
- data/app/helpers/navigation_helper.rb +5 -5
- data/app/helpers/project_helper.rb +6 -0
- data/app/helpers/url_helper.rb +4 -4
- data/app/helpers/view_extensions_helper.rb +20 -0
- data/app/models/action.rb +61 -44
- data/app/models/authorization.rb +55 -10
- data/app/models/follow.rb +6 -0
- data/app/models/persistent_trigger.rb +11 -1
- data/app/models/project.rb +5 -27
- data/app/models/user.rb +15 -59
- data/app/presenters/project_presenter.rb +2 -2
- data/app/views/actions/_actions.html.erb +8 -5
- data/app/views/actions/index.html.erb +1 -1
- data/app/views/actions/running.html.erb +9 -15
- data/app/views/actions/show.html.erb +6 -3
- data/app/views/actions/unqueued.html.erb +41 -0
- data/app/views/authorizations/_form.html.erb +28 -16
- data/app/views/authorizations/index.html.erb +9 -4
- data/app/views/{oauth/providers/edit.html.erb → authorizations/oauth2_callback.html.erb} +3 -2
- data/app/views/devise/sessions/new.html.erb +0 -8
- data/app/views/errors/index.html.erb +9 -5
- data/app/views/layouts/_navigation.html.erb +9 -0
- data/app/views/layouts/application.html.erb +11 -6
- data/app/views/layouts/dashboard.html.erb +9 -0
- data/app/views/projects/_form.html.erb +7 -18
- data/app/views/projects/_header.html.erb +2 -6
- data/app/views/projects/index.html.erb +4 -4
- data/app/views/teams/_form.html.erb +7 -17
- data/app/views/teams/index.html.erb +1 -1
- data/app/views/users/_form.html.erb +1 -38
- data/config/application.rb +8 -5
- data/config/initializers/devise.rb +0 -14
- data/config/initializers/secret_token.rb +8 -13
- data/config/routes.rb +12 -28
- data/db/migrate/20130706141443_drop_deprecated_project_roles.rb +5 -1
- data/db/migrate/20170118005958_remove_antecedents_from_versions_of_tickets.rb +1 -1
- data/db/migrate/20170130011016_drop_users_environments_subscribed_to.rb +9 -0
- data/db/migrate/20170205004452_drop_settings.rb +12 -0
- data/db/migrate/20170206002030_drop_extension_hstore.rb +9 -0
- data/db/migrate/20170206002732_drop_legacy_columns_from_users.rb +10 -0
- data/db/migrate/20170209022159_rename_projects_color_to_color_name.rb +5 -0
- data/db/migrate/20170213001453_change_providers_from_models_to_extensions.rb +27 -0
- data/db/migrate/20170215012012_add_props_to_authorizations.rb +5 -0
- data/db/migrate/20170216041034_add_user_to_persistent_triggers.rb +5 -0
- data/db/migrate/20170226201504_create_follows.rb +20 -0
- data/db/migrate/20170301014051_drop_name_from_authorizations.rb +9 -0
- data/db/migrate/20170307032041_add_created_at_to_actions.rb +11 -0
- data/db/migrate/20170307035755_allow_actions_started_at_to_be_null.rb +5 -0
- data/db/migrate/20170310024505_replace_authorizations_provider_name_with_type.rb +12 -0
- data/db/migrate/20170329030329_drop_consumer_tokens.rb +9 -0
- data/db/structure.sql +187 -212
- data/houston-core.gemspec +10 -13
- data/lib/houston/boot.rb +1 -4
- data/lib/houston/boot/actions.rb +24 -21
- data/lib/houston/boot/configuration.rb +46 -113
- data/lib/houston/boot/extensions.rb +54 -341
- data/lib/houston/boot/extensions/deprecated.rb +194 -0
- data/lib/houston/boot/extensions/dsl.rb +99 -0
- data/lib/houston/boot/extensions/events.rb +81 -0
- data/lib/houston/boot/extensions/features.rb +42 -0
- data/lib/houston/boot/extensions/layout.rb +70 -0
- data/lib/houston/boot/extensions/navigation.rb +42 -0
- data/lib/houston/boot/extensions/oauth.rb +62 -0
- data/lib/houston/boot/extensions/serializers.rb +29 -0
- data/lib/houston/boot/extensions/view.rb +34 -0
- data/lib/houston/boot/observer.rb +10 -5
- data/{app/models/oauth → lib/houston/boot}/provider.rb +7 -5
- data/lib/houston/boot/running_as.rb +0 -5
- data/lib/houston/boot/serializer.rb +12 -6
- data/lib/houston/boot/{active_record_serializer.rb → serializers/active_record_serializer.rb} +0 -2
- data/lib/houston/boot/{readonly_hash_serializer.rb → serializers/readonly_hash_serializer.rb} +0 -2
- data/lib/houston/boot/timer.rb +10 -0
- data/lib/houston/boot/triggers.rb +27 -8
- data/lib/houston/version.rb +1 -1
- data/templates/new-instance/.gitignore +0 -4
- data/templates/new-instance/config/main.rb +8 -10
- data/templates/new-module/test/dummy/houston.rb +1 -0
- data/test/acceptance/layout_test.rb +58 -0
- data/test/acceptance/updating_props_test.rb +72 -0
- data/test/support/config.rb +1 -0
- data/test/unit/extensions/events_extension_test.rb +33 -0
- data/test/unit/extensions/layout_extension_test.rb +74 -0
- data/test/unit/extensions/navigation_extension_test.rb +62 -0
- data/test/unit/extensions/oauth_extension_test.rb +91 -0
- data/test/unit/extensions/project_features_extension_test.rb +79 -0
- data/test/unit/extensions/serializers_extension_test.rb +47 -0
- data/test/unit/extensions/view_extension_test.rb +98 -0
- data/test/unit/models/actions_test.rb +11 -5
- data/test/unit/models/configuration_test.rb +0 -8
- data/test/unit/models/observer_test.rb +16 -0
- data/test/unit/models/persistent_trigger_test.rb +29 -2
- data/test/unit/models/serializer_test.rb +6 -0
- data/test/unit/models/timer_test.rb +88 -0
- metadata +87 -168
- data/app/assets/font/octicons.eot +0 -0
- data/app/assets/font/octicons.svg +0 -198
- data/app/assets/font/octicons.ttf +0 -0
- data/app/assets/font/octicons.woff +0 -0
- data/app/assets/font/roboto-black-webfont.eot +0 -0
- data/app/assets/font/roboto-black-webfont.svg +0 -675
- data/app/assets/font/roboto-black-webfont.ttf +0 -0
- data/app/assets/font/roboto-black-webfont.woff +0 -0
- data/app/assets/font/roboto-blackitalic-webfont.eot +0 -0
- data/app/assets/font/roboto-blackitalic-webfont.svg +0 -677
- data/app/assets/font/roboto-blackitalic-webfont.ttf +0 -0
- data/app/assets/font/roboto-blackitalic-webfont.woff +0 -0
- data/app/assets/font/roboto-bold-webfont.eot +0 -0
- data/app/assets/font/roboto-bold-webfont.svg +0 -675
- data/app/assets/font/roboto-bold-webfont.ttf +0 -0
- data/app/assets/font/roboto-bold-webfont.woff +0 -0
- data/app/assets/font/roboto-bolditalic-webfont.eot +0 -0
- data/app/assets/font/roboto-bolditalic-webfont.svg +0 -677
- data/app/assets/font/roboto-bolditalic-webfont.ttf +0 -0
- data/app/assets/font/roboto-bolditalic-webfont.woff +0 -0
- data/app/assets/font/roboto-italic-webfont.eot +0 -0
- data/app/assets/font/roboto-italic-webfont.svg +0 -668
- data/app/assets/font/roboto-italic-webfont.ttf +0 -0
- data/app/assets/font/roboto-italic-webfont.woff +0 -0
- data/app/assets/font/roboto-light-webfont.eot +0 -0
- data/app/assets/font/roboto-light-webfont.svg +0 -666
- data/app/assets/font/roboto-light-webfont.ttf +0 -0
- data/app/assets/font/roboto-light-webfont.woff +0 -0
- data/app/assets/font/roboto-lightitalic-webfont.eot +0 -0
- data/app/assets/font/roboto-lightitalic-webfont.svg +0 -668
- data/app/assets/font/roboto-lightitalic-webfont.ttf +0 -0
- data/app/assets/font/roboto-lightitalic-webfont.woff +0 -0
- data/app/assets/font/roboto-medium-webfont.eot +0 -0
- data/app/assets/font/roboto-medium-webfont.svg +0 -675
- data/app/assets/font/roboto-medium-webfont.ttf +0 -0
- data/app/assets/font/roboto-medium-webfont.woff +0 -0
- data/app/assets/font/roboto-mediumitalic-webfont.eot +0 -0
- data/app/assets/font/roboto-mediumitalic-webfont.svg +0 -677
- data/app/assets/font/roboto-mediumitalic-webfont.ttf +0 -0
- data/app/assets/font/roboto-mediumitalic-webfont.woff +0 -0
- data/app/assets/font/roboto-regular-webfont.eot +0 -0
- data/app/assets/font/roboto-regular-webfont.svg +0 -666
- data/app/assets/font/roboto-regular-webfont.ttf +0 -0
- data/app/assets/font/roboto-regular-webfont.woff +0 -0
- data/app/assets/font/roboto-thin-webfont.eot +0 -0
- data/app/assets/font/roboto-thin-webfont.svg +0 -666
- data/app/assets/font/roboto-thin-webfont.ttf +0 -0
- data/app/assets/font/roboto-thin-webfont.woff +0 -0
- data/app/assets/font/roboto-thinitalic-webfont.eot +0 -0
- data/app/assets/font/roboto-thinitalic-webfont.svg +0 -668
- data/app/assets/font/roboto-thinitalic-webfont.ttf +0 -0
- data/app/assets/font/roboto-thinitalic-webfont.woff +0 -0
- data/app/assets/images/bug-fixed-128.png +0 -0
- data/app/assets/images/bug-fixed-32.png +0 -0
- data/app/assets/images/bug-fixed-48.png +0 -0
- data/app/assets/images/bug-new-128.png +0 -0
- data/app/assets/images/bug-new-32.png +0 -0
- data/app/assets/images/bug-new-48.png +0 -0
- data/app/assets/images/bug-open-32.png +0 -0
- data/app/assets/images/bug-zero-128.png +0 -0
- data/app/assets/images/bug-zero-48.png +0 -0
- data/app/assets/images/drag-grip.png +0 -0
- data/app/assets/javascripts/houston/core/burndown_chart.coffee +0 -111
- data/app/assets/javascripts/houston/core/stacked_area_graph.coffee +0 -113
- data/app/assets/javascripts/houston/core/stacked_bar_graph.coffee +0 -108
- data/app/assets/stylesheets/houston/application/project_tiles.scss +0 -26
- data/app/assets/stylesheets/houston/application/tips.scss +0 -5
- data/app/assets/stylesheets/houston/core/octicons-icons.scss +0 -221
- data/app/assets/stylesheets/houston/core/octicons.scss.erb +0 -9
- data/app/assets/stylesheets/houston/core/roboto.scss.erb +0 -131
- data/app/concerns/historical_weekly_stats.rb +0 -15
- data/app/concerns/nosync.rb +0 -21
- data/app/controllers/oauth/providers_controller.rb +0 -45
- data/app/controllers/project_roles_controller.rb +0 -22
- data/app/controllers/settings_controller.rb +0 -14
- data/app/controllers/tester_bar_controller.rb +0 -12
- data/app/controllers/user_credentials_controller.rb +0 -24
- data/app/models/role.rb +0 -33
- data/app/models/setting.rb +0 -10
- data/app/models/settings.rb +0 -38
- data/app/models/slackdown.rb +0 -23
- data/app/models/user_credentials.rb +0 -27
- data/app/views/errors/_actions.html.erb +0 -17
- data/app/views/layouts/_tester_bar.html.erb +0 -6
- data/app/views/layouts/minimal.html.erb +0 -50
- data/app/views/layouts/naked.html.erb +0 -47
- data/app/views/layouts/naked_dashboard.html.erb +0 -50
- data/app/views/oauth/providers/_form.html.erb +0 -54
- data/app/views/oauth/providers/index.html.erb +0 -41
- data/app/views/oauth/providers/new.html.erb +0 -7
- data/config/initializers/add_navigation_renderers.rb +0 -5
- data/config/initializers/vestal_versions.rb +0 -9
- data/db/migrate/20130519163615_create_user_credentials.rb +0 -18
- data/lib/houston/boot/events.rb +0 -10
- data/lib/tasks/keypair.rake +0 -17
- data/vendor/assets/javascripts/jquery.pjax.js +0 -817
@@ -0,0 +1,47 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class SerializersExtensionTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
|
6
|
+
context "Houston.serializers" do
|
7
|
+
should "be an instance of Houston::Extensions::Serializers" do
|
8
|
+
assert_kind_of Houston::Extensions::Serializers, Houston.serializers
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
context "#add" do
|
14
|
+
should "register a serializer for a certain kind of object" do
|
15
|
+
n = UnserializableNumber.new(5)
|
16
|
+
assert_raises Houston::Serializer::UnserializableError do
|
17
|
+
serialize(n)
|
18
|
+
end
|
19
|
+
serializers << UnserializableNumberSerializer
|
20
|
+
assert_equal "5", serialize(n)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def serialize(object)
|
28
|
+
Houston::Serializer.new(serializers).dump(object)
|
29
|
+
end
|
30
|
+
|
31
|
+
def serializers
|
32
|
+
@serializers ||= Houston::Extensions::Serializers.new
|
33
|
+
end
|
34
|
+
|
35
|
+
UnserializableNumber = Struct.new(:value)
|
36
|
+
|
37
|
+
class UnserializableNumberSerializer
|
38
|
+
def applies_to?(object)
|
39
|
+
object.is_a? UnserializableNumber
|
40
|
+
end
|
41
|
+
|
42
|
+
def pack(object)
|
43
|
+
object.value
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class ViewExtensionTest < ActiveSupport::TestCase
|
4
|
+
attr_reader :column, :field
|
5
|
+
|
6
|
+
context "Houston.view" do
|
7
|
+
should "be an instance of Houston::Extensions::Views" do
|
8
|
+
assert_kind_of Houston::Extensions::Views, Houston.view
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'Houston.view["anything"]' do
|
13
|
+
should "be an instance of Houston::View" do
|
14
|
+
assert_kind_of Houston::Extensions::View, Houston.view["anything"]
|
15
|
+
end
|
16
|
+
|
17
|
+
should "support `has` as a shortcut for extend" do
|
18
|
+
view = views["test"].has :Table
|
19
|
+
assert_kind_of Houston::Extensions::HasTable, view
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
context "HasTable#add_column" do
|
25
|
+
setup do
|
26
|
+
views["widgets"].has :Table
|
27
|
+
@column = views["widgets"].add_column("Rotation") { 45 }
|
28
|
+
end
|
29
|
+
|
30
|
+
should "add a column to the array of columns" do
|
31
|
+
assert_equal 1, views["widgets"].columns.length
|
32
|
+
assert_equal "Rotation", views["widgets"].columns.first.name
|
33
|
+
end
|
34
|
+
|
35
|
+
should "invoke the block on render" do
|
36
|
+
assert_equal 45, views["widgets"].columns.first.render(self)
|
37
|
+
end
|
38
|
+
|
39
|
+
should "add a column that's accessible to everyone by default" do
|
40
|
+
assert column.permitted?(Ability.new(unprivileged_user))
|
41
|
+
end
|
42
|
+
|
43
|
+
should "let you chain an ability to the column" do
|
44
|
+
column.ability { can?(:manange, :all) }
|
45
|
+
|
46
|
+
assert column.permitted?(Ability.new(privileged_user))
|
47
|
+
refute column.permitted?(Ability.new(unprivileged_user))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
context "HasForm#add_field" do
|
53
|
+
setup do
|
54
|
+
views["widgets"].has :Form
|
55
|
+
@field = views["widgets"].add_field("Material") do |f|
|
56
|
+
f.select "test.material", %w{Aluminum Titanium Platinum}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
should "add a field to the array of fields" do
|
61
|
+
assert_equal 1, views["widgets"].fields.length
|
62
|
+
assert_equal "Material", views["widgets"].fields.first.label
|
63
|
+
end
|
64
|
+
|
65
|
+
should "invoke the block with a FormBuilder on render" do
|
66
|
+
form_builder = Object.new
|
67
|
+
mock(form_builder).select.with_any_args
|
68
|
+
views["widgets"].fields.first.render(self, form_builder)
|
69
|
+
end
|
70
|
+
|
71
|
+
should "add a field that's accessible to everyone by default" do
|
72
|
+
assert field.permitted?(Ability.new(unprivileged_user))
|
73
|
+
end
|
74
|
+
|
75
|
+
should "let you chain an ability to the field" do
|
76
|
+
field.ability { can?(:manange, :all) }
|
77
|
+
|
78
|
+
assert field.permitted?(Ability.new(privileged_user))
|
79
|
+
refute field.permitted?(Ability.new(unprivileged_user))
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def views
|
87
|
+
@views ||= Houston::Extensions::Views.new
|
88
|
+
end
|
89
|
+
|
90
|
+
def privileged_user
|
91
|
+
@privileged_user ||= users(:boblail)
|
92
|
+
end
|
93
|
+
|
94
|
+
def unprivileged_user
|
95
|
+
@unprivileged_user ||= create(:user)
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
@@ -3,10 +3,15 @@ require "test_helper"
|
|
3
3
|
class ActionsTest < ActiveSupport::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
+
Houston.instance_variable_set :@actions, Houston::Actions.new
|
6
7
|
actions.define("test-action") { }
|
7
8
|
Action.delete_all
|
8
9
|
end
|
9
10
|
|
11
|
+
def teardown
|
12
|
+
Houston.actions.clear
|
13
|
+
end
|
14
|
+
|
10
15
|
|
11
16
|
context "Actions#define" do
|
12
17
|
should "allow you to define the params an action requires" do
|
@@ -85,11 +90,12 @@ class ActionsTest < ActiveSupport::TestCase
|
|
85
90
|
end
|
86
91
|
|
87
92
|
should "invoke actions in the context of their params" do
|
88
|
-
|
89
|
-
|
90
|
-
assert_equal 5, example
|
91
|
-
end
|
93
|
+
context = nil
|
94
|
+
actions.redefine("test-action") { context = self }
|
92
95
|
run! example: 5
|
96
|
+
|
97
|
+
assert context.respond_to?(:example)
|
98
|
+
assert_equal 5, context.example
|
93
99
|
end
|
94
100
|
end
|
95
101
|
|
@@ -97,7 +103,7 @@ class ActionsTest < ActiveSupport::TestCase
|
|
97
103
|
private
|
98
104
|
|
99
105
|
def actions
|
100
|
-
|
106
|
+
Houston.actions
|
101
107
|
end
|
102
108
|
|
103
109
|
def run!(params={}, options={})
|
@@ -41,14 +41,6 @@ class ConfigurationTest < ActiveSupport::TestCase
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
should "define an action with a made-up name (for now) when you don't specify an action" do
|
45
|
-
action = nil
|
46
|
-
assert_difference ["config.triggers.count", "config.actions.count"], +1 do
|
47
|
-
action = config.every("10m") { }
|
48
|
-
end
|
49
|
-
assert_match /10m:[a-f0-9]{8,}/, action.name
|
50
|
-
end
|
51
|
-
|
52
44
|
should "define a timer for an existing action" do
|
53
45
|
assert_difference "config.triggers.count", +1 do
|
54
46
|
config.action("test-action") { }
|
@@ -81,6 +81,22 @@ class ObserverTest < ActiveSupport::TestCase
|
|
81
81
|
end
|
82
82
|
|
83
83
|
|
84
|
+
context "Houston.observer.off" do
|
85
|
+
should "unregister a callback" do
|
86
|
+
calls = 0
|
87
|
+
callback = Proc.new { calls += 1 }
|
88
|
+
assert_difference "calls", +1 do
|
89
|
+
Houston.observer.on "test0", &callback
|
90
|
+
Houston.observer.fire "test0"
|
91
|
+
end
|
92
|
+
assert_no_difference "calls" do
|
93
|
+
Houston.observer.off "test0", &callback
|
94
|
+
Houston.observer.fire "test0"
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
|
84
100
|
context "callback params" do
|
85
101
|
should "be retrievable by array-style access" do
|
86
102
|
callback_params = :not_called
|
@@ -37,6 +37,7 @@ class PersistentTriggerTest < ActiveSupport::TestCase
|
|
37
37
|
|
38
38
|
context "#save!" do
|
39
39
|
setup do
|
40
|
+
@user = users(:boblail)
|
40
41
|
Houston.config.actions.define("test-action") { }
|
41
42
|
end
|
42
43
|
|
@@ -46,13 +47,38 @@ class PersistentTriggerTest < ActiveSupport::TestCase
|
|
46
47
|
|
47
48
|
should "add the trigger to the database" do
|
48
49
|
assert_difference "PersistentTrigger.count", +1 do
|
49
|
-
|
50
|
+
@user.triggers.every("day at 1:30pm", "test-action", example: 5).save!
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
53
54
|
should "register the trigger" do
|
54
55
|
assert_difference "Houston.config.triggers.count", +1 do
|
55
|
-
|
56
|
+
@user.triggers.every("day at 2:30pm", "test-action", example: 5).save!
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
context "#destroy" do
|
63
|
+
setup do
|
64
|
+
@user = users(:boblail)
|
65
|
+
Houston.config.actions.define("test-action") { }
|
66
|
+
@trigger = @user.triggers.every("day at 2:30pm", "test-action", example: 5).tap(&:save!)
|
67
|
+
end
|
68
|
+
|
69
|
+
teardown do
|
70
|
+
Houston.config.actions.undefine("test-action")
|
71
|
+
end
|
72
|
+
|
73
|
+
should "remove the trigger from the database" do
|
74
|
+
assert_difference "PersistentTrigger.count", -1 do
|
75
|
+
@trigger.destroy
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
should "unregister the trigger" do
|
80
|
+
assert_difference "Houston.config.triggers.count", -1 do
|
81
|
+
@trigger.destroy
|
56
82
|
end
|
57
83
|
end
|
58
84
|
end
|
@@ -61,6 +87,7 @@ class PersistentTriggerTest < ActiveSupport::TestCase
|
|
61
87
|
context ".load_all" do
|
62
88
|
setup do
|
63
89
|
PersistentTrigger.all.insert({
|
90
|
+
PersistentTrigger.column_for_attribute(:user_id) => users(:boblail).id,
|
64
91
|
PersistentTrigger.column_for_attribute(:type) => "every",
|
65
92
|
PersistentTrigger.column_for_attribute(:value) => "day at 9:00am",
|
66
93
|
PersistentTrigger.column_for_attribute(:action) => "test-action",
|
@@ -58,6 +58,12 @@ class SerializerTest < ActiveSupport::TestCase
|
|
58
58
|
refute_match /"^o":"ActiveSupport::TimeWithZone"/, dump(x: project)
|
59
59
|
end
|
60
60
|
|
61
|
+
should "serialize a record with a Postgres array" do
|
62
|
+
refute_raises do
|
63
|
+
dump(Project.create!(name: "Test", slug: "test", selected_features: %w{feedback releases}))
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
61
67
|
|
62
68
|
private
|
63
69
|
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class TimerTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
|
6
|
+
context "Before Rufus Scheduler is started" do
|
7
|
+
setup do
|
8
|
+
teardown_scheduler!
|
9
|
+
end
|
10
|
+
|
11
|
+
context "Adding a timer" do
|
12
|
+
should "add it to `queued_timers`" do
|
13
|
+
callback = Proc.new { :ok }
|
14
|
+
assert_difference "queued_timers.length", +1 do
|
15
|
+
timers.every "5s", &callback
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "Removing a timer" do
|
21
|
+
should "remove it from `queued_timers`" do
|
22
|
+
callback = Proc.new { :ok }
|
23
|
+
timers.every "5s", &callback
|
24
|
+
|
25
|
+
assert_difference "queued_timers.length", -1 do
|
26
|
+
timers.stop "5s", callback
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
context "After Rufus Scheduler is started" do
|
34
|
+
setup do
|
35
|
+
setup_scheduler!
|
36
|
+
end
|
37
|
+
|
38
|
+
teardown do
|
39
|
+
teardown_scheduler!
|
40
|
+
end
|
41
|
+
|
42
|
+
context "Adding a timer" do
|
43
|
+
should "add a new job to the scheduler" do
|
44
|
+
callback = Proc.new { :ok }
|
45
|
+
assert_difference "scheduled_jobs.length", +1 do
|
46
|
+
timers.every "5s", &callback
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "Removing a timer" do
|
52
|
+
should "remove it from the scheduler's jobs" do
|
53
|
+
callback = Proc.new { :ok }
|
54
|
+
timers.every "5s", &callback
|
55
|
+
|
56
|
+
assert_difference "scheduled_jobs.length", -1 do
|
57
|
+
timers.stop "5s", callback
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def timers
|
67
|
+
@timers ||= Houston::Timer.new
|
68
|
+
end
|
69
|
+
|
70
|
+
def queued_timers
|
71
|
+
timers.send :queued_timers
|
72
|
+
end
|
73
|
+
|
74
|
+
def scheduled_jobs
|
75
|
+
$scheduler.jobs
|
76
|
+
end
|
77
|
+
|
78
|
+
def setup_scheduler!
|
79
|
+
teardown_scheduler!
|
80
|
+
$scheduler = Rufus::Scheduler.new
|
81
|
+
end
|
82
|
+
|
83
|
+
def teardown_scheduler!
|
84
|
+
$scheduler.shutdown if $scheduler
|
85
|
+
$scheduler = nil
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: houston-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Lail
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.3.
|
89
|
+
version: 0.3.9
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.3.
|
96
|
+
version: 0.3.9
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: browser
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,19 +109,19 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 2.3.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: cancancan
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.
|
117
|
+
version: 1.16.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.
|
124
|
+
version: 1.16.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: concurrent-ruby
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,20 +164,6 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: houston-devise_ldap_authenticatable
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :runtime
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: faraday
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -252,16 +238,16 @@ dependencies:
|
|
252
238
|
name: neat-rails
|
253
239
|
requirement: !ruby/object:Gem::Requirement
|
254
240
|
requirements:
|
255
|
-
- - "
|
241
|
+
- - "~>"
|
256
242
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
243
|
+
version: 0.5.1
|
258
244
|
type: :runtime
|
259
245
|
prerelease: false
|
260
246
|
version_requirements: !ruby/object:Gem::Requirement
|
261
247
|
requirements:
|
262
|
-
- - "
|
248
|
+
- - "~>"
|
263
249
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
250
|
+
version: 0.5.1
|
265
251
|
- !ruby/object:Gem::Dependency
|
266
252
|
name: nokogiri
|
267
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -338,14 +324,14 @@ dependencies:
|
|
338
324
|
requirements:
|
339
325
|
- - "~>"
|
340
326
|
- !ruby/object:Gem::Version
|
341
|
-
version: 1.
|
327
|
+
version: 1.10.0
|
342
328
|
type: :runtime
|
343
329
|
prerelease: false
|
344
330
|
version_requirements: !ruby/object:Gem::Requirement
|
345
331
|
requirements:
|
346
332
|
- - "~>"
|
347
333
|
- !ruby/object:Gem::Version
|
348
|
-
version: 1.
|
334
|
+
version: 1.10.0
|
349
335
|
- !ruby/object:Gem::Dependency
|
350
336
|
name: progressbar
|
351
337
|
requirement: !ruby/object:Gem::Requirement
|
@@ -375,35 +361,21 @@ dependencies:
|
|
375
361
|
- !ruby/object:Gem::Version
|
376
362
|
version: 1.3.1
|
377
363
|
- !ruby/object:Gem::Dependency
|
378
|
-
name:
|
379
|
-
requirement: !ruby/object:Gem::Requirement
|
380
|
-
requirements:
|
381
|
-
- - "~>"
|
382
|
-
- !ruby/object:Gem::Version
|
383
|
-
version: 3.3.2
|
384
|
-
type: :runtime
|
385
|
-
prerelease: false
|
386
|
-
version_requirements: !ruby/object:Gem::Requirement
|
387
|
-
requirements:
|
388
|
-
- - "~>"
|
389
|
-
- !ruby/object:Gem::Version
|
390
|
-
version: 3.3.2
|
391
|
-
- !ruby/object:Gem::Dependency
|
392
|
-
name: strongbox
|
364
|
+
name: thor
|
393
365
|
requirement: !ruby/object:Gem::Requirement
|
394
366
|
requirements:
|
395
|
-
- - "
|
367
|
+
- - ">="
|
396
368
|
- !ruby/object:Gem::Version
|
397
|
-
version: 0
|
369
|
+
version: '0'
|
398
370
|
type: :runtime
|
399
371
|
prerelease: false
|
400
372
|
version_requirements: !ruby/object:Gem::Requirement
|
401
373
|
requirements:
|
402
|
-
- - "
|
374
|
+
- - ">="
|
403
375
|
- !ruby/object:Gem::Version
|
404
|
-
version: 0
|
376
|
+
version: '0'
|
405
377
|
- !ruby/object:Gem::Dependency
|
406
|
-
name:
|
378
|
+
name: kramdown
|
407
379
|
requirement: !ruby/object:Gem::Requirement
|
408
380
|
requirements:
|
409
381
|
- - ">="
|
@@ -417,19 +389,19 @@ dependencies:
|
|
417
389
|
- !ruby/object:Gem::Version
|
418
390
|
version: '0'
|
419
391
|
- !ruby/object:Gem::Dependency
|
420
|
-
name:
|
392
|
+
name: slackdown
|
421
393
|
requirement: !ruby/object:Gem::Requirement
|
422
394
|
requirements:
|
423
395
|
- - ">="
|
424
396
|
- !ruby/object:Gem::Version
|
425
|
-
version:
|
397
|
+
version: 0.2.1
|
426
398
|
type: :runtime
|
427
399
|
prerelease: false
|
428
400
|
version_requirements: !ruby/object:Gem::Requirement
|
429
401
|
requirements:
|
430
402
|
- - ">="
|
431
403
|
- !ruby/object:Gem::Version
|
432
|
-
version:
|
404
|
+
version: 0.2.1
|
433
405
|
- !ruby/object:Gem::Dependency
|
434
406
|
name: sass-rails
|
435
407
|
requirement: !ruby/object:Gem::Requirement
|
@@ -478,28 +450,14 @@ dependencies:
|
|
478
450
|
requirements:
|
479
451
|
- - "~>"
|
480
452
|
- !ruby/object:Gem::Version
|
481
|
-
version: 3.
|
453
|
+
version: 3.3.4
|
482
454
|
type: :runtime
|
483
455
|
prerelease: false
|
484
456
|
version_requirements: !ruby/object:Gem::Requirement
|
485
457
|
requirements:
|
486
458
|
- - "~>"
|
487
459
|
- !ruby/object:Gem::Version
|
488
|
-
version: 3.
|
489
|
-
- !ruby/object:Gem::Dependency
|
490
|
-
name: nested_editor_for
|
491
|
-
requirement: !ruby/object:Gem::Requirement
|
492
|
-
requirements:
|
493
|
-
- - ">="
|
494
|
-
- !ruby/object:Gem::Version
|
495
|
-
version: '0'
|
496
|
-
type: :runtime
|
497
|
-
prerelease: false
|
498
|
-
version_requirements: !ruby/object:Gem::Requirement
|
499
|
-
requirements:
|
500
|
-
- - ">="
|
501
|
-
- !ruby/object:Gem::Version
|
502
|
-
version: '0'
|
460
|
+
version: 3.3.4
|
503
461
|
description:
|
504
462
|
email:
|
505
463
|
- bob.lailfamily@gmail.com
|
@@ -518,79 +476,20 @@ files:
|
|
518
476
|
- README.md
|
519
477
|
- ROADMAP.md
|
520
478
|
- Rakefile
|
521
|
-
- app/assets/font/octicons.eot
|
522
|
-
- app/assets/font/octicons.svg
|
523
|
-
- app/assets/font/octicons.ttf
|
524
|
-
- app/assets/font/octicons.woff
|
525
|
-
- app/assets/font/roboto-black-webfont.eot
|
526
|
-
- app/assets/font/roboto-black-webfont.svg
|
527
|
-
- app/assets/font/roboto-black-webfont.ttf
|
528
|
-
- app/assets/font/roboto-black-webfont.woff
|
529
|
-
- app/assets/font/roboto-blackitalic-webfont.eot
|
530
|
-
- app/assets/font/roboto-blackitalic-webfont.svg
|
531
|
-
- app/assets/font/roboto-blackitalic-webfont.ttf
|
532
|
-
- app/assets/font/roboto-blackitalic-webfont.woff
|
533
|
-
- app/assets/font/roboto-bold-webfont.eot
|
534
|
-
- app/assets/font/roboto-bold-webfont.svg
|
535
|
-
- app/assets/font/roboto-bold-webfont.ttf
|
536
|
-
- app/assets/font/roboto-bold-webfont.woff
|
537
|
-
- app/assets/font/roboto-bolditalic-webfont.eot
|
538
|
-
- app/assets/font/roboto-bolditalic-webfont.svg
|
539
|
-
- app/assets/font/roboto-bolditalic-webfont.ttf
|
540
|
-
- app/assets/font/roboto-bolditalic-webfont.woff
|
541
|
-
- app/assets/font/roboto-italic-webfont.eot
|
542
|
-
- app/assets/font/roboto-italic-webfont.svg
|
543
|
-
- app/assets/font/roboto-italic-webfont.ttf
|
544
|
-
- app/assets/font/roboto-italic-webfont.woff
|
545
|
-
- app/assets/font/roboto-light-webfont.eot
|
546
|
-
- app/assets/font/roboto-light-webfont.svg
|
547
|
-
- app/assets/font/roboto-light-webfont.ttf
|
548
|
-
- app/assets/font/roboto-light-webfont.woff
|
549
|
-
- app/assets/font/roboto-lightitalic-webfont.eot
|
550
|
-
- app/assets/font/roboto-lightitalic-webfont.svg
|
551
|
-
- app/assets/font/roboto-lightitalic-webfont.ttf
|
552
|
-
- app/assets/font/roboto-lightitalic-webfont.woff
|
553
|
-
- app/assets/font/roboto-medium-webfont.eot
|
554
|
-
- app/assets/font/roboto-medium-webfont.svg
|
555
|
-
- app/assets/font/roboto-medium-webfont.ttf
|
556
|
-
- app/assets/font/roboto-medium-webfont.woff
|
557
|
-
- app/assets/font/roboto-mediumitalic-webfont.eot
|
558
|
-
- app/assets/font/roboto-mediumitalic-webfont.svg
|
559
|
-
- app/assets/font/roboto-mediumitalic-webfont.ttf
|
560
|
-
- app/assets/font/roboto-mediumitalic-webfont.woff
|
561
|
-
- app/assets/font/roboto-regular-webfont.eot
|
562
|
-
- app/assets/font/roboto-regular-webfont.svg
|
563
|
-
- app/assets/font/roboto-regular-webfont.ttf
|
564
|
-
- app/assets/font/roboto-regular-webfont.woff
|
565
|
-
- app/assets/font/roboto-thin-webfont.eot
|
566
|
-
- app/assets/font/roboto-thin-webfont.svg
|
567
|
-
- app/assets/font/roboto-thin-webfont.ttf
|
568
|
-
- app/assets/font/roboto-thin-webfont.woff
|
569
|
-
- app/assets/font/roboto-thinitalic-webfont.eot
|
570
|
-
- app/assets/font/roboto-thinitalic-webfont.svg
|
571
|
-
- app/assets/font/roboto-thinitalic-webfont.ttf
|
572
|
-
- app/assets/font/roboto-thinitalic-webfont.woff
|
573
479
|
- app/assets/images/.keep
|
574
|
-
- app/assets/images/bug-fixed-128.png
|
575
|
-
- app/assets/images/bug-fixed-32.png
|
576
|
-
- app/assets/images/bug-fixed-48.png
|
577
|
-
- app/assets/images/bug-new-128.png
|
578
|
-
- app/assets/images/bug-new-32.png
|
579
|
-
- app/assets/images/bug-new-48.png
|
580
|
-
- app/assets/images/bug-open-32.png
|
581
|
-
- app/assets/images/bug-zero-128.png
|
582
|
-
- app/assets/images/bug-zero-48.png
|
583
|
-
- app/assets/images/drag-grip.png
|
584
480
|
- app/assets/javascripts/houston/app/boot.coffee
|
585
481
|
- app/assets/javascripts/houston/app/commands/show_keyboard_shortcuts.coffee
|
586
482
|
- app/assets/javascripts/houston/app/emoji.coffee.erb
|
587
483
|
- app/assets/javascripts/houston/app/infinite_scroll.coffee
|
484
|
+
- app/assets/javascripts/houston/app/models/role.coffee
|
588
485
|
- app/assets/javascripts/houston/app/models/user.coffee
|
589
486
|
- app/assets/javascripts/houston/app/mousetrap-bind-scoped.js
|
590
487
|
- app/assets/javascripts/houston/app/views/keyboard_shortcuts_modal.coffee
|
488
|
+
- app/assets/javascripts/houston/app/views/nested_resources.coffee
|
489
|
+
- app/assets/javascripts/houston/app/views/team_roles_view.coffee
|
591
490
|
- app/assets/javascripts/houston/application.js
|
491
|
+
- app/assets/javascripts/houston/core/ajax_helpers.coffee
|
592
492
|
- app/assets/javascripts/houston/core/app.coffee
|
593
|
-
- app/assets/javascripts/houston/core/burndown_chart.coffee
|
594
493
|
- app/assets/javascripts/houston/core/core_ext/array.coffee
|
595
494
|
- app/assets/javascripts/houston/core/core_ext/date.coffee
|
596
495
|
- app/assets/javascripts/houston/core/core_ext/number.coffee
|
@@ -600,8 +499,8 @@ files:
|
|
600
499
|
- app/assets/javascripts/houston/core/jquery_extensions.coffee
|
601
500
|
- app/assets/javascripts/houston/core/keyboard_shortcuts.coffee
|
602
501
|
- app/assets/javascripts/houston/core/observer.coffee
|
603
|
-
- app/assets/javascripts/houston/core/
|
604
|
-
- app/assets/javascripts/houston/core/
|
502
|
+
- app/assets/javascripts/houston/core/timeline_helpers.coffee
|
503
|
+
- app/assets/javascripts/houston/core/uploader_helpers.coffee
|
605
504
|
- app/assets/javascripts/houston/dashboard.js
|
606
505
|
- app/assets/javascripts/houston/dashboard/refresher.coffee
|
607
506
|
- app/assets/javascripts/houston/vendor.js
|
@@ -610,7 +509,6 @@ files:
|
|
610
509
|
- app/assets/stylesheets/houston/application/ansi.scss
|
611
510
|
- app/assets/stylesheets/houston/application/emoji.scss
|
612
511
|
- app/assets/stylesheets/houston/application/forms.scss
|
613
|
-
- app/assets/stylesheets/houston/application/freight_train.css.scss
|
614
512
|
- app/assets/stylesheets/houston/application/full_screen.scss
|
615
513
|
- app/assets/stylesheets/houston/application/github_repos.scss
|
616
514
|
- app/assets/stylesheets/houston/application/globals.scss
|
@@ -621,13 +519,12 @@ files:
|
|
621
519
|
- app/assets/stylesheets/houston/application/mobile.scss
|
622
520
|
- app/assets/stylesheets/houston/application/modals.scss
|
623
521
|
- app/assets/stylesheets/houston/application/navigation.scss
|
522
|
+
- app/assets/stylesheets/houston/application/nested_resources.scss
|
624
523
|
- app/assets/stylesheets/houston/application/project_banner_buttons.scss
|
625
|
-
- app/assets/stylesheets/houston/application/project_tiles.scss
|
626
524
|
- app/assets/stylesheets/houston/application/projects.css.scss
|
627
525
|
- app/assets/stylesheets/houston/application/sortable_table.scss
|
628
526
|
- app/assets/stylesheets/houston/application/tables.scss
|
629
527
|
- app/assets/stylesheets/houston/application/teams.scss
|
630
|
-
- app/assets/stylesheets/houston/application/tips.scss
|
631
528
|
- app/assets/stylesheets/houston/application/typeahead.scss
|
632
529
|
- app/assets/stylesheets/houston/application/uploading.scss
|
633
530
|
- app/assets/stylesheets/houston/application/user_wall.scss
|
@@ -638,24 +535,22 @@ files:
|
|
638
535
|
- app/assets/stylesheets/houston/core/colors.scss.erb
|
639
536
|
- app/assets/stylesheets/houston/core/globals.scss
|
640
537
|
- app/assets/stylesheets/houston/core/misc.scss
|
641
|
-
- app/assets/stylesheets/houston/core/octicons-icons.scss
|
642
|
-
- app/assets/stylesheets/houston/core/octicons.scss.erb
|
643
538
|
- app/assets/stylesheets/houston/core/overrides.scss
|
644
|
-
- app/assets/stylesheets/houston/core/roboto.scss.erb
|
645
539
|
- app/assets/stylesheets/houston/core/scores.scss
|
540
|
+
- app/assets/stylesheets/houston/core/timeline.scss
|
646
541
|
- app/assets/stylesheets/houston/dashboard.css
|
647
542
|
- app/assets/stylesheets/houston/dashboard/dashboard.scss
|
648
543
|
- app/assets/stylesheets/houston/print.css.scss
|
649
544
|
- app/assets/stylesheets/houston/variables.scss
|
650
545
|
- app/assets/stylesheets/houston/vendor.css
|
546
|
+
- app/assets/templates/houston/teams/roles/index.hbs
|
547
|
+
- app/assets/templates/houston/teams/roles/show.hbs
|
651
548
|
- app/assets/templates/keyboard_shortcuts.hbs
|
652
549
|
- app/channels/application_cable/channel.rb
|
653
550
|
- app/channels/application_cable/connection.rb
|
654
551
|
- app/channels/events_channel.rb
|
655
552
|
- app/concerns/feature_support.rb
|
656
|
-
- app/concerns/historical_weekly_stats.rb
|
657
553
|
- app/concerns/houston/props.rb
|
658
|
-
- app/concerns/nosync.rb
|
659
554
|
- app/concerns/project_adapter.rb
|
660
555
|
- app/concerns/retirement.rb
|
661
556
|
- app/controllers/actions_controller.rb
|
@@ -667,18 +562,14 @@ files:
|
|
667
562
|
- app/controllers/errors_controller.rb
|
668
563
|
- app/controllers/home_controller.rb
|
669
564
|
- app/controllers/hooks_controller.rb
|
670
|
-
- app/controllers/
|
565
|
+
- app/controllers/project_follows_controller.rb
|
671
566
|
- app/controllers/project_hooks_controller.rb
|
672
567
|
- app/controllers/project_options_controller.rb
|
673
|
-
- app/controllers/project_roles_controller.rb
|
674
568
|
- app/controllers/projects_controller.rb
|
675
569
|
- app/controllers/sessions_controller.rb
|
676
|
-
- app/controllers/settings_controller.rb
|
677
570
|
- app/controllers/teams_controller.rb
|
678
|
-
- app/controllers/tester_bar_controller.rb
|
679
571
|
- app/controllers/triggers_controller.rb
|
680
572
|
- app/controllers/uploads_controller.rb
|
681
|
-
- app/controllers/user_credentials_controller.rb
|
682
573
|
- app/controllers/user_options_controller.rb
|
683
574
|
- app/controllers/users_controller.rb
|
684
575
|
- app/helpers/actions_helper.rb
|
@@ -687,12 +578,14 @@ files:
|
|
687
578
|
- app/helpers/email_helper.rb
|
688
579
|
- app/helpers/emoji_helper.rb
|
689
580
|
- app/helpers/exposure_helper.rb
|
581
|
+
- app/helpers/layout_helper.rb
|
690
582
|
- app/helpers/markdown_helper.rb
|
691
583
|
- app/helpers/navigation_helper.rb
|
692
584
|
- app/helpers/oembed_helper.rb
|
693
585
|
- app/helpers/project_helper.rb
|
694
586
|
- app/helpers/score_card_helper.rb
|
695
587
|
- app/helpers/url_helper.rb
|
588
|
+
- app/helpers/view_extensions_helper.rb
|
696
589
|
- app/mailers/.keep
|
697
590
|
- app/mailers/view_mailer.rb
|
698
591
|
- app/models/.keep
|
@@ -701,18 +594,13 @@ files:
|
|
701
594
|
- app/models/authorization.rb
|
702
595
|
- app/models/concerns/.keep
|
703
596
|
- app/models/error.rb
|
597
|
+
- app/models/follow.rb
|
704
598
|
- app/models/measurement.rb
|
705
|
-
- app/models/oauth/provider.rb
|
706
599
|
- app/models/persistent_trigger.rb
|
707
600
|
- app/models/project.rb
|
708
|
-
- app/models/role.rb
|
709
|
-
- app/models/setting.rb
|
710
|
-
- app/models/settings.rb
|
711
|
-
- app/models/slackdown.rb
|
712
601
|
- app/models/team.rb
|
713
602
|
- app/models/team_user.rb
|
714
603
|
- app/models/user.rb
|
715
|
-
- app/models/user_credentials.rb
|
716
604
|
- app/presenters/measurements_presenter.rb
|
717
605
|
- app/presenters/one_or_many.rb
|
718
606
|
- app/presenters/project_presenter.rb
|
@@ -720,11 +608,13 @@ files:
|
|
720
608
|
- app/views/actions/index.html.erb
|
721
609
|
- app/views/actions/running.html.erb
|
722
610
|
- app/views/actions/show.html.erb
|
611
|
+
- app/views/actions/unqueued.html.erb
|
723
612
|
- app/views/authorizations/_form.html.erb
|
724
613
|
- app/views/authorizations/edit.html.erb
|
725
614
|
- app/views/authorizations/granted.html.erb
|
726
615
|
- app/views/authorizations/index.html.erb
|
727
616
|
- app/views/authorizations/new.html.erb
|
617
|
+
- app/views/authorizations/oauth2_callback.html.erb
|
728
618
|
- app/views/configuration_error/_invalid_repo.html.erb
|
729
619
|
- app/views/configuration_error/_no_version_control.html.erb
|
730
620
|
- app/views/devise/_links.erb
|
@@ -741,22 +631,13 @@ files:
|
|
741
631
|
- app/views/devise/registrations/new.html.erb
|
742
632
|
- app/views/devise/sessions/new.html.erb
|
743
633
|
- app/views/devise/unlocks/new.html.erb
|
744
|
-
- app/views/errors/_actions.html.erb
|
745
634
|
- app/views/errors/index.html.erb
|
746
635
|
- app/views/home/index.html.erb
|
747
636
|
- app/views/layouts/_mobile_navigation.html.erb
|
748
637
|
- app/views/layouts/_navigation.html.erb
|
749
|
-
- app/views/layouts/_tester_bar.html.erb
|
750
638
|
- app/views/layouts/application.html.erb
|
751
639
|
- app/views/layouts/dashboard.html.erb
|
752
640
|
- app/views/layouts/email.html.erb
|
753
|
-
- app/views/layouts/minimal.html.erb
|
754
|
-
- app/views/layouts/naked.html.erb
|
755
|
-
- app/views/layouts/naked_dashboard.html.erb
|
756
|
-
- app/views/oauth/providers/_form.html.erb
|
757
|
-
- app/views/oauth/providers/edit.html.erb
|
758
|
-
- app/views/oauth/providers/index.html.erb
|
759
|
-
- app/views/oauth/providers/new.html.erb
|
760
641
|
- app/views/projects/_form.html.erb
|
761
642
|
- app/views/projects/_header.html.erb
|
762
643
|
- app/views/projects/_keyboard_shortcuts.html.erb
|
@@ -787,7 +668,6 @@ files:
|
|
787
668
|
- config/environments/production.rb
|
788
669
|
- config/environments/test.rb
|
789
670
|
- config/initializers/action_view_field_error_proc.rb
|
790
|
-
- config/initializers/add_navigation_renderers.rb
|
791
671
|
- config/initializers/application_controller_renderer.rb
|
792
672
|
- config/initializers/assets.rb
|
793
673
|
- config/initializers/backtrace_silencers.rb
|
@@ -808,7 +688,6 @@ files:
|
|
808
688
|
- config/initializers/requirements.rb
|
809
689
|
- config/initializers/secret_token.rb
|
810
690
|
- config/initializers/session_store.rb
|
811
|
-
- config/initializers/vestal_versions.rb
|
812
691
|
- config/initializers/wrap_parameters.rb
|
813
692
|
- config/locales/devise.en.yml
|
814
693
|
- config/locales/devise_invitable.en.yml
|
@@ -854,7 +733,6 @@ files:
|
|
854
733
|
- db/migrate/20130504014802_add_extended_attributes_to_projects.rb
|
855
734
|
- db/migrate/20130518224406_drop_projects_maintainers.rb
|
856
735
|
- db/migrate/20130518224722_remove_pre_adapter_fields_from_projects.rb
|
857
|
-
- db/migrate/20130519163615_create_user_credentials.rb
|
858
736
|
- db/migrate/20130706141443_drop_deprecated_project_roles.rb
|
859
737
|
- db/migrate/20130728191005_add_retired_at_to_users.rb
|
860
738
|
- db/migrate/20130914155044_add_code_climate_repo_token_to_projects.rb
|
@@ -907,6 +785,20 @@ files:
|
|
907
785
|
- db/migrate/20170116002818_drop_releases_tickets_and_releases_tasks.rb
|
908
786
|
- db/migrate/20170116210225_move_adapter_names_to_props2.rb
|
909
787
|
- db/migrate/20170118005958_remove_antecedents_from_versions_of_tickets.rb
|
788
|
+
- db/migrate/20170130011016_drop_users_environments_subscribed_to.rb
|
789
|
+
- db/migrate/20170205004452_drop_settings.rb
|
790
|
+
- db/migrate/20170206002030_drop_extension_hstore.rb
|
791
|
+
- db/migrate/20170206002732_drop_legacy_columns_from_users.rb
|
792
|
+
- db/migrate/20170209022159_rename_projects_color_to_color_name.rb
|
793
|
+
- db/migrate/20170213001453_change_providers_from_models_to_extensions.rb
|
794
|
+
- db/migrate/20170215012012_add_props_to_authorizations.rb
|
795
|
+
- db/migrate/20170216041034_add_user_to_persistent_triggers.rb
|
796
|
+
- db/migrate/20170226201504_create_follows.rb
|
797
|
+
- db/migrate/20170301014051_drop_name_from_authorizations.rb
|
798
|
+
- db/migrate/20170307032041_add_created_at_to_actions.rb
|
799
|
+
- db/migrate/20170307035755_allow_actions_started_at_to_be_null.rb
|
800
|
+
- db/migrate/20170310024505_replace_authorizations_provider_name_with_type.rb
|
801
|
+
- db/migrate/20170329030329_drop_consumer_tokens.rb
|
910
802
|
- db/seeds.rb
|
911
803
|
- db/structure.sql
|
912
804
|
- houston-core.gemspec
|
@@ -922,15 +814,24 @@ files:
|
|
922
814
|
- lib/houston/application.rb
|
923
815
|
- lib/houston/boot.rb
|
924
816
|
- lib/houston/boot/actions.rb
|
925
|
-
- lib/houston/boot/active_record_serializer.rb
|
926
817
|
- lib/houston/boot/configuration.rb
|
927
818
|
- lib/houston/boot/daemonize.rb
|
928
|
-
- lib/houston/boot/events.rb
|
929
819
|
- lib/houston/boot/extensions.rb
|
820
|
+
- lib/houston/boot/extensions/deprecated.rb
|
821
|
+
- lib/houston/boot/extensions/dsl.rb
|
822
|
+
- lib/houston/boot/extensions/events.rb
|
823
|
+
- lib/houston/boot/extensions/features.rb
|
824
|
+
- lib/houston/boot/extensions/layout.rb
|
825
|
+
- lib/houston/boot/extensions/navigation.rb
|
826
|
+
- lib/houston/boot/extensions/oauth.rb
|
827
|
+
- lib/houston/boot/extensions/serializers.rb
|
828
|
+
- lib/houston/boot/extensions/view.rb
|
930
829
|
- lib/houston/boot/observer.rb
|
931
|
-
- lib/houston/boot/
|
830
|
+
- lib/houston/boot/provider.rb
|
932
831
|
- lib/houston/boot/running_as.rb
|
933
832
|
- lib/houston/boot/serializer.rb
|
833
|
+
- lib/houston/boot/serializers/active_record_serializer.rb
|
834
|
+
- lib/houston/boot/serializers/readonly_hash_serializer.rb
|
934
835
|
- lib/houston/boot/timer.rb
|
935
836
|
- lib/houston/boot/triggers.rb
|
936
837
|
- lib/houston/cli.rb
|
@@ -943,7 +844,6 @@ files:
|
|
943
844
|
- lib/tasks/.keep
|
944
845
|
- lib/tasks/actions.rake
|
945
846
|
- lib/tasks/events.rake
|
946
|
-
- lib/tasks/keypair.rake
|
947
847
|
- lib/tasks/specific_tests.rake
|
948
848
|
- lib/unexpected_response.rb
|
949
849
|
- log/.keep
|
@@ -1028,7 +928,9 @@ files:
|
|
1028
928
|
- templates/new-module/test/test_helper.rb
|
1029
929
|
- templates/new-module/test/unit/fixtures_test.rb
|
1030
930
|
- test/acceptance/.keep
|
931
|
+
- test/acceptance/layout_test.rb
|
1031
932
|
- test/acceptance/rejecting_malformed_requests_test.rb
|
933
|
+
- test/acceptance/updating_props_test.rb
|
1032
934
|
- test/factories/project_factory.rb
|
1033
935
|
- test/factories/ticket_factory.rb
|
1034
936
|
- test/factories/user_factory.rb
|
@@ -1049,12 +951,20 @@ files:
|
|
1049
951
|
- test/unit/controllers/project_options_controller_test.rb
|
1050
952
|
- test/unit/controllers/user_options_controller_test.rb
|
1051
953
|
- test/unit/controllers/users_controller_test.rb
|
954
|
+
- test/unit/extensions/events_extension_test.rb
|
955
|
+
- test/unit/extensions/layout_extension_test.rb
|
956
|
+
- test/unit/extensions/navigation_extension_test.rb
|
957
|
+
- test/unit/extensions/oauth_extension_test.rb
|
958
|
+
- test/unit/extensions/project_features_extension_test.rb
|
959
|
+
- test/unit/extensions/serializers_extension_test.rb
|
960
|
+
- test/unit/extensions/view_extension_test.rb
|
1052
961
|
- test/unit/models/actions_test.rb
|
1053
962
|
- test/unit/models/configuration_test.rb
|
1054
963
|
- test/unit/models/observer_test.rb
|
1055
964
|
- test/unit/models/persistent_trigger_test.rb
|
1056
965
|
- test/unit/models/props_test.rb
|
1057
966
|
- test/unit/models/serializer_test.rb
|
967
|
+
- test/unit/models/timer_test.rb
|
1058
968
|
- test/unit/models/triggers_test.rb
|
1059
969
|
- test/unit/models/user_test.rb
|
1060
970
|
- tmp/.keep
|
@@ -1101,7 +1011,6 @@ files:
|
|
1101
1011
|
- vendor/assets/javascripts/jquery-ui-1.10.1/jquery.ui.widget.js
|
1102
1012
|
- vendor/assets/javascripts/jquery-ui.js
|
1103
1013
|
- vendor/assets/javascripts/jquery.autosize.js
|
1104
|
-
- vendor/assets/javascripts/jquery.pjax.js
|
1105
1014
|
- vendor/assets/javascripts/jquery.tablesorter.js
|
1106
1015
|
- vendor/assets/javascripts/jquery.timeago.js
|
1107
1016
|
- vendor/assets/javascripts/md5.js
|
@@ -1143,9 +1052,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1143
1052
|
version: '0'
|
1144
1053
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1145
1054
|
requirements:
|
1146
|
-
- - "
|
1055
|
+
- - ">"
|
1147
1056
|
- !ruby/object:Gem::Version
|
1148
|
-
version:
|
1057
|
+
version: 1.3.1
|
1149
1058
|
requirements: []
|
1150
1059
|
rubyforge_project:
|
1151
1060
|
rubygems_version: 2.5.1
|
@@ -1154,7 +1063,9 @@ specification_version: 4
|
|
1154
1063
|
summary: Mission Control for your projects and teams
|
1155
1064
|
test_files:
|
1156
1065
|
- test/acceptance/.keep
|
1066
|
+
- test/acceptance/layout_test.rb
|
1157
1067
|
- test/acceptance/rejecting_malformed_requests_test.rb
|
1068
|
+
- test/acceptance/updating_props_test.rb
|
1158
1069
|
- test/factories/project_factory.rb
|
1159
1070
|
- test/factories/ticket_factory.rb
|
1160
1071
|
- test/factories/user_factory.rb
|
@@ -1175,11 +1086,19 @@ test_files:
|
|
1175
1086
|
- test/unit/controllers/project_options_controller_test.rb
|
1176
1087
|
- test/unit/controllers/user_options_controller_test.rb
|
1177
1088
|
- test/unit/controllers/users_controller_test.rb
|
1089
|
+
- test/unit/extensions/events_extension_test.rb
|
1090
|
+
- test/unit/extensions/layout_extension_test.rb
|
1091
|
+
- test/unit/extensions/navigation_extension_test.rb
|
1092
|
+
- test/unit/extensions/oauth_extension_test.rb
|
1093
|
+
- test/unit/extensions/project_features_extension_test.rb
|
1094
|
+
- test/unit/extensions/serializers_extension_test.rb
|
1095
|
+
- test/unit/extensions/view_extension_test.rb
|
1178
1096
|
- test/unit/models/actions_test.rb
|
1179
1097
|
- test/unit/models/configuration_test.rb
|
1180
1098
|
- test/unit/models/observer_test.rb
|
1181
1099
|
- test/unit/models/persistent_trigger_test.rb
|
1182
1100
|
- test/unit/models/props_test.rb
|
1183
1101
|
- test/unit/models/serializer_test.rb
|
1102
|
+
- test/unit/models/timer_test.rb
|
1184
1103
|
- test/unit/models/triggers_test.rb
|
1185
1104
|
- test/unit/models/user_test.rb
|