flutter 0.1.0.pre.2 → 0.2.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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -5
  3. data/Gemfile +1 -0
  4. data/README.md +62 -2
  5. data/Rakefile +35 -1
  6. data/codecov.yml +13 -0
  7. data/lib/flutter/minitest.rb +6 -8
  8. data/lib/flutter/parser.rb +18 -16
  9. data/lib/flutter/persistence.rb +51 -5
  10. data/lib/flutter/rspec.rb +7 -7
  11. data/lib/flutter/tracker.rb +48 -5
  12. data/lib/flutter/version.rb +1 -1
  13. metadata +21 -95
  14. data/integration_tests/minitest/grape_app/.gitignore +0 -67
  15. data/integration_tests/minitest/grape_app/.ruby-version +0 -1
  16. data/integration_tests/minitest/grape_app/Gemfile +0 -17
  17. data/integration_tests/minitest/grape_app/Gemfile.lock +0 -89
  18. data/integration_tests/minitest/grape_app/README.md +0 -2
  19. data/integration_tests/minitest/grape_app/Rakefile +0 -9
  20. data/integration_tests/minitest/grape_app/api/api.rb +0 -34
  21. data/integration_tests/minitest/grape_app/api/routes/api_helpers.rb +0 -12
  22. data/integration_tests/minitest/grape_app/api/routes/change_request/api.rb +0 -69
  23. data/integration_tests/minitest/grape_app/api/routes/change_request/response_entity.rb +0 -18
  24. data/integration_tests/minitest/grape_app/api/routes/event/api.rb +0 -121
  25. data/integration_tests/minitest/grape_app/api/routes/event/response_entity.rb +0 -41
  26. data/integration_tests/minitest/grape_app/api/routes/project/api.rb +0 -59
  27. data/integration_tests/minitest/grape_app/api/routes/project/response_entity.rb +0 -13
  28. data/integration_tests/minitest/grape_app/api/routes/property/api.rb +0 -78
  29. data/integration_tests/minitest/grape_app/api/routes/property/response_entity.rb +0 -31
  30. data/integration_tests/minitest/grape_app/api/routes/trackable_object/api.rb +0 -64
  31. data/integration_tests/minitest/grape_app/api/routes/trackable_object/response_entity.rb +0 -24
  32. data/integration_tests/minitest/grape_app/api/routes/tracking_spec/api.rb +0 -88
  33. data/integration_tests/minitest/grape_app/api/routes/tracking_spec/response_entity.rb +0 -17
  34. data/integration_tests/minitest/grape_app/api/routes/tracking_spec/spec_response.rb +0 -19
  35. data/integration_tests/minitest/grape_app/api/routes/user/api.rb +0 -22
  36. data/integration_tests/minitest/grape_app/api/routes/user/response_entity.rb +0 -12
  37. data/integration_tests/minitest/grape_app/app/app.rb +0 -30
  38. data/integration_tests/minitest/grape_app/app/change_request/endpoint.rb +0 -24
  39. data/integration_tests/minitest/grape_app/app/change_request/generate_system_changes.rb +0 -25
  40. data/integration_tests/minitest/grape_app/app/change_request/service.rb +0 -79
  41. data/integration_tests/minitest/grape_app/app/event/endpoint.rb +0 -78
  42. data/integration_tests/minitest/grape_app/app/event/service.rb +0 -68
  43. data/integration_tests/minitest/grape_app/app/event/validator.rb +0 -108
  44. data/integration_tests/minitest/grape_app/app/project/endpoint.rb +0 -24
  45. data/integration_tests/minitest/grape_app/app/project/service.rb +0 -42
  46. data/integration_tests/minitest/grape_app/app/property/endpoint.rb +0 -39
  47. data/integration_tests/minitest/grape_app/app/property/service.rb +0 -56
  48. data/integration_tests/minitest/grape_app/app/trackable_object/endpoint.rb +0 -38
  49. data/integration_tests/minitest/grape_app/app/trackable_object/service.rb +0 -49
  50. data/integration_tests/minitest/grape_app/app/trackable_object/validator.rb +0 -40
  51. data/integration_tests/minitest/grape_app/app/tracking_spec/endpoint.rb +0 -58
  52. data/integration_tests/minitest/grape_app/app/tracking_spec/expand_tracking_spec_events.rb +0 -91
  53. data/integration_tests/minitest/grape_app/app/tracking_spec/service.rb +0 -51
  54. data/integration_tests/minitest/grape_app/app/tracking_spec/validator.rb +0 -61
  55. data/integration_tests/minitest/grape_app/app/utils/errors/api_exceptions.rb +0 -10
  56. data/integration_tests/minitest/grape_app/app/utils/errors/service_exceptions.rb +0 -12
  57. data/integration_tests/minitest/grape_app/app/versioned_entity/entity.rb +0 -110
  58. data/integration_tests/minitest/grape_app/app/versioned_entity/service.rb +0 -47
  59. data/integration_tests/minitest/grape_app/app/versioned_entity/validator.rb +0 -61
  60. data/integration_tests/minitest/grape_app/app/versioned_entity_snapshot/entity.rb +0 -32
  61. data/integration_tests/minitest/grape_app/config/boot.rb +0 -9
  62. data/integration_tests/minitest/grape_app/config.ru +0 -3
  63. data/integration_tests/minitest/grape_app/db/proto/change_request.rb +0 -10
  64. data/integration_tests/minitest/grape_app/db/proto/common/doc.rb +0 -86
  65. data/integration_tests/minitest/grape_app/db/proto/event.rb +0 -10
  66. data/integration_tests/minitest/grape_app/db/proto/event_snapshot.rb +0 -10
  67. data/integration_tests/minitest/grape_app/db/proto/project.rb +0 -21
  68. data/integration_tests/minitest/grape_app/db/proto/property.rb +0 -10
  69. data/integration_tests/minitest/grape_app/db/proto/property_snapshot.rb +0 -10
  70. data/integration_tests/minitest/grape_app/db/proto/trackable_object.rb +0 -10
  71. data/integration_tests/minitest/grape_app/db/proto/trackable_object_snapshot.rb +0 -10
  72. data/integration_tests/minitest/grape_app/db/proto/tracking_spec.rb +0 -10
  73. data/integration_tests/minitest/grape_app/test/api/functional/event_test.rb +0 -186
  74. data/integration_tests/minitest/grape_app/test/api/functional/property_test.rb +0 -197
  75. data/integration_tests/minitest/grape_app/test/api/functional/trackable_object_test.rb +0 -134
  76. data/integration_tests/minitest/grape_app/test/api/functional/tracking_spec_test.rb +0 -56
  77. data/integration_tests/minitest/grape_app/test/api/functional/user_test.rb +0 -24
  78. data/integration_tests/minitest/grape_app/test/api/functional/versioned_entity_helper.rb +0 -157
  79. data/integration_tests/minitest/grape_app/test/fixtures/change_requests.rb +0 -83
  80. data/integration_tests/minitest/grape_app/test/fixtures/event_snapshots.rb +0 -105
  81. data/integration_tests/minitest/grape_app/test/fixtures/events.rb +0 -58
  82. data/integration_tests/minitest/grape_app/test/fixtures/properties.rb +0 -66
  83. data/integration_tests/minitest/grape_app/test/fixtures/property_snapshots.rb +0 -124
  84. data/integration_tests/minitest/grape_app/test/fixtures/sample_tracking_spec.json +0 -125
  85. data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects.rb +0 -58
  86. data/integration_tests/minitest/grape_app/test/fixtures/trackable_objects_snapshots.rb +0 -61
  87. data/integration_tests/minitest/grape_app/test/fixtures/tracking_specs.rb +0 -22
  88. data/integration_tests/minitest/grape_app/test/test_helper.rb +0 -15
@@ -1,41 +0,0 @@
1
- module Skee
2
- module API
3
- module Routes
4
- module Event
5
- class ResponseEntity < Grape::Entity
6
- class EventPayload < Grape::Entity
7
- expose :key, documentation: { type: 'String', desc: 'Key associated with the event.' }
8
- expose :reference_entity_type, documentation: { type: 'String', desc: 'Reference Entity type, either trackable object or event' }
9
- expose :reference_entity_id, documentation: { type: 'String', desc: 'Reference Entity ID' }
10
- expose :is_array, documentation: { type: 'Boolean', desc: 'Defines if the response is an array or singular object.' }
11
- expose :is_primary, documentation: { type: 'Boolean', desc: 'Defines if the entity is primary entity.'}
12
- expose :selected_property_ids, documentation: { type: 'Array', desc: 'Defines the IDs of the sub-properties of the key'}
13
- end
14
-
15
- class VersionedEntity < Grape::Entity
16
- expose :id, documentation: { type: 'String', desc: 'Unique ID of a property.' }
17
- end
18
- class EntitySnapshot < Grape::Entity
19
- expose :id, as: :snapshot_id, documentation: { type: 'String', desc: 'Unique ID of a event snapshot.' }
20
- expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID of the event snapshot.' }
21
- expose :previous_snapshot_id, documentation: { type: 'String', desc: 'Snapshot ID of the previous version of the event.' }
22
- expose :is_removed, safe: true, documentation: { type: 'String', desc: 'Flag to specify that event is removed from the tracking spec.' }
23
-
24
- expose :name, documentation: { type: 'String', desc: 'Event name.' }
25
- expose :description, documentation: { type: 'String', desc: 'Description of the event.' }
26
- expose :payload, using: ResponseEntity::EventPayload
27
-
28
- def payload
29
- object.payload.map do |key, value|
30
- value.merge(key: key)
31
- end
32
- end
33
- end
34
-
35
- expose :versioned_entity, merge: true, using: ResponseEntity::VersionedEntity
36
- expose :versioned_entity_snapshot, merge: true, using: ResponseEntity::EntitySnapshot
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,59 +0,0 @@
1
- require_relative '../api_helpers'
2
- require_relative './response_entity'
3
- require_relative '../../../app/project/endpoint'
4
- module Skee::API::Routes::Project
5
- class API < Grape::API
6
- helpers Skee::API::Routes::APIHelpers
7
-
8
- resource :projects do
9
- desc 'List all projects.'
10
- get do
11
- projects = Skee::App::Project::Endpoint.list
12
- present projects,
13
- with: Skee::API::Routes::Project::ResponseEntity
14
- end
15
-
16
- desc 'Retrieve a project.'
17
- params do
18
- requires :id, type: String, desc: 'project ID.'
19
- end
20
- get ':id' do
21
- project = Skee::App::Project::Endpoint.get(whitelisted_params)
22
- present project,
23
- with: Skee::API::Routes::Project::ResponseEntity
24
- end
25
-
26
- desc 'Create a project.'
27
- params do
28
- requires :name, type: String, desc: 'project name.'
29
- optional :description, type: String, desc: 'project description.'
30
- end
31
- post do
32
- new_project = Skee::App::Project::Endpoint.create(whitelisted_params)
33
- present new_project,
34
- with: Skee::API::Routes::Project::ResponseEntity
35
- end
36
-
37
- desc 'Update a project.'
38
- params do
39
- requires :id, type: String, desc: 'project ID.'
40
- optional :name, type: String, desc: 'project name.'
41
- optional :description, type: String, desc: 'project description.'
42
- end
43
- post ':id' do
44
- updated_project = Skee::App::Project::Endpoint.update(whitelisted_params)
45
- present updated_project,
46
- with: Skee::API::Routes::Project::ResponseEntity
47
- end
48
-
49
- desc 'Delete a project.'
50
- params do
51
- requires :id, type: String, desc: 'project ID.'
52
- end
53
- delete ':id' do
54
- Skee::App::Project::Endpoint.delete(whitelisted_params)
55
- status 200
56
- end
57
- end
58
- end
59
- end
@@ -1,13 +0,0 @@
1
- module Skee
2
- module API
3
- module Routes
4
- module Project
5
- class ResponseEntity < Grape::Entity
6
- expose :id, documentation: { type: 'String', desc: 'Unique ID of a project.' }
7
- expose :name, documentation: { type: 'String', desc: 'Name of the project.' }
8
- expose :description, documentation: { type: 'String', desc: 'Description of the project.' }
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,78 +0,0 @@
1
- require_relative '../api_helpers'
2
- require_relative './response_entity'
3
- require_relative '../../../app/property/endpoint'
4
- module Skee::API::Routes::Property
5
- class API < Grape::API
6
- helpers Skee::API::Routes::APIHelpers
7
-
8
- resource :properties do
9
- desc 'List all properties.'
10
- get do
11
- properties = Skee::App::Property::Endpoint.list
12
- present properties,
13
- with: Skee::API::Routes::Property::ResponseEntity
14
- end
15
-
16
- desc 'Retrieve a property.'
17
- params do
18
- requires :id, type: String, desc: 'Property ID.'
19
- optional :change_request_id, type: String, desc: 'Change request ID for the request.'
20
- end
21
- get ':id' do
22
- property = Skee::App::Property::Endpoint.get(whitelisted_params)
23
- present property,
24
- with: Skee::API::Routes::Property::ResponseEntity
25
- end
26
-
27
- desc 'Create a property.'
28
- params do
29
- requires :change_request_id, type: String, desc: 'Change request ID for the request.'
30
- requires :name, type: String, desc: 'Property name.'
31
- requires :property_of, type: Symbol, values: [:trackable_object, :event], desc: 'Specifies whether property is that of a trackable object or event'
32
- requires :data_type, type: String, desc: 'Data type of the property.'
33
- requires :parent_reference_id, type: String, desc: 'ID of the trackable object the property belongs to.'
34
- optional :description, type: String, desc: 'Description of the property.'
35
- optional :is_nullable, type: Boolean, desc: 'Is this property nullable when being passed in an event?.'
36
- optional :additional_instructions, type: String, desc: 'Additional instructions for the trackable object property.'
37
- optional :data_format_id, type: String, desc: 'FK to the data format of the property.'
38
- optional :regex_validation, type: String, desc: 'RegEx expression for validation of the property value sent.'
39
- end
40
- post do
41
- new_property = Skee::App::Property::Endpoint.create(whitelisted_params)
42
- present new_property,
43
- with: Skee::API::Routes::Property::ResponseEntity
44
- end
45
-
46
- desc 'Update a trackable object property.'
47
- params do
48
- requires :change_request_id, type: String, desc: 'Change request ID for the request.'
49
- optional :parent_reference_id, type: String, desc: 'ID of the trackable object the property belongs to.'
50
- requires :id, type: String, desc: 'Property ID.'
51
- optional :name, type: String, desc: 'Property name.'
52
- optional :description, type: String, desc: 'Description of the property.'
53
- optional :is_nullable, type: Boolean, desc: 'Is this property nullable when being passed in an event?.'
54
- optional :data_type, type: String, desc: 'Data type of the property.'
55
- optional :additional_instructions, type: String, desc: 'Additional instructions for the property.'
56
- optional :data_format_id, type: String, desc: 'FK to the data format of the property.'
57
- optional :regex_validation, type: String, desc: 'RegEx expression for validation of the property value sent.'
58
- end
59
- post ':id' do
60
- updated_property = Skee::App::Property::Endpoint.update(whitelisted_params)
61
- present updated_property,
62
- with: Skee::API::Routes::Property::ResponseEntity
63
- end
64
-
65
- desc 'Remove a property from the tracking spec.'
66
- params do
67
- requires :change_request_id, type: String, desc: 'Change request ID for the request.'
68
- optional :parent_reference_id, type: String, desc: 'ID of the trackable object the property belongs to.'
69
- requires :id, type: String, desc: 'Property ID.'
70
- end
71
- post ':id/remove' do
72
- updated_property = Skee::App::Property::Endpoint.remove(whitelisted_params)
73
- present updated_property,
74
- with: Skee::API::Routes::Property::ResponseEntity
75
- end
76
- end
77
- end
78
- end
@@ -1,31 +0,0 @@
1
- module Skee
2
- module API
3
- module Routes
4
- module Property
5
- class ResponseEntity < Grape::Entity
6
- class VersionedEntity < Grape::Entity
7
- expose :id, documentation: { type: 'String', desc: 'Unique ID of a property.' }
8
- end
9
- class EntitySnapshot < Grape::Entity
10
- expose :id, as: :snapshot_id, documentation: { type: 'String', desc: 'Unique ID of a property snapshot.' }
11
- expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID of the property snapshot.' }
12
- expose :previous_snapshot_id, documentation: { type: 'String', desc: 'Snapshot ID of the previous version of the property.' }
13
- expose :is_removed, safe: true, documentation: { type: 'String', desc: 'Flag to specify that property is removed from the tracking spec.' }
14
-
15
- expose :name, documentation: { type: 'String', desc: 'Name of the property.' }
16
- expose :property_of, documentation: { type: 'String', desc: 'Specifies whether property is that of a trackable object or event' }
17
- expose :data_type, documentation: { type: 'String', desc: 'Data type of the property.' }
18
- expose :description, documentation: { type: 'String', desc: 'Description of the property.' }
19
- expose :is_nullable, documentation: { type: 'Boolean', desc: 'Is this property nullable when being passed in an event?.' }
20
- expose :additional_instructions, documentation: { type: 'String', desc: 'Additional instructions for the property.' }
21
- expose :data_format_id, documentation: { type: 'String', desc: 'FK to the data format of the property.' }
22
- expose :regex_validation, documentation: { type: 'String', desc: 'RegEx expression for validation of the property value sent.' }
23
- end
24
-
25
- expose :versioned_entity, merge: true, using: ResponseEntity::VersionedEntity
26
- expose :versioned_entity_snapshot, merge: true, using: ResponseEntity::EntitySnapshot
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,64 +0,0 @@
1
- require_relative '../api_helpers'
2
- require_relative './response_entity'
3
- require_relative '../../../app/trackable_object/endpoint'
4
- module Skee::API::Routes::TrackableObject
5
- class API < Grape::API
6
- helpers Skee::API::Routes::APIHelpers
7
-
8
- resource :trackable_objects do
9
- desc 'List all trackable entitites.'
10
- get do
11
- trackable_objects = Skee::App::TrackableObject::Endpoint.list
12
- present trackable_objects,
13
- with: Skee::API::Routes::TrackableObject::ResponseEntity
14
- end
15
-
16
- desc 'Retrieve a trackable object.'
17
- params do
18
- requires :id, type: String, desc: 'Trackable object ID.'
19
- optional :change_request_id, type: String, desc: 'Change request ID for the request.'
20
- end
21
- get ':id' do
22
- trackable_object = Skee::App::TrackableObject::Endpoint.get(whitelisted_params)
23
- present trackable_object,
24
- with: Skee::API::Routes::TrackableObject::ResponseEntity
25
- end
26
-
27
- desc 'Create a trackable object.'
28
- params do
29
- requires :change_request_id, type: String, desc: 'Change request ID for the request.'
30
- requires :name, type: String, desc: 'Trackable object name.'
31
- optional :property_ids, type: Array[String], desc: 'Property IDs of a Trackable object.'
32
- end
33
- post do
34
- new_trackable_object = Skee::App::TrackableObject::Endpoint.create(whitelisted_params)
35
- present new_trackable_object,
36
- with: Skee::API::Routes::TrackableObject::ResponseEntity
37
- end
38
-
39
- desc 'Update a trackable object.'
40
- params do
41
- requires :change_request_id, type: String, desc: 'Change request ID for the request.'
42
- requires :id, type: String, desc: 'Trackable object ID.'
43
- optional :name, type: String, desc: 'Trackable object name.'
44
- optional :property_ids, type: Array[String], desc: 'Property IDs of a Trackable object.'
45
- end
46
- post ':id' do
47
- updated_trackable_object = Skee::App::TrackableObject::Endpoint.update(whitelisted_params)
48
- present updated_trackable_object,
49
- with: Skee::API::Routes::TrackableObject::ResponseEntity
50
- end
51
-
52
- desc 'Remove a trackable object from the tracking spec.'
53
- params do
54
- requires :change_request_id, type: String, desc: 'Change request ID for the request.'
55
- requires :id, type: String, desc: 'Trackable object ID.'
56
- end
57
- post ':id/remove' do
58
- updated_trackable_object = Skee::App::TrackableObject::Endpoint.remove(whitelisted_params)
59
- present updated_trackable_object,
60
- with: Skee::API::Routes::TrackableObject::ResponseEntity
61
- end
62
- end
63
- end
64
- end
@@ -1,24 +0,0 @@
1
- module Skee
2
- module API
3
- module Routes
4
- module TrackableObject
5
- class ResponseEntity < Grape::Entity
6
- class VersionedEntity < Grape::Entity
7
- expose :id, documentation: { type: 'String', desc: 'Unique ID of a trackable_object.' }
8
- end
9
- class EntitySnapshot < Grape::Entity
10
- expose :id, as: :snapshot_id, documentation: { type: 'String', desc: 'Unique ID of a trackable_object.' }
11
- expose :name, documentation: { type: 'String', desc: 'Name of the trackable object.' }
12
- expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID for the trackable object.' }
13
- expose :previous_snapshot_id, documentation: { type: 'String', desc: 'Trackable object ID of the previous version of this trackable object.' }
14
- expose :is_removed, safe: true, documentation: { type: 'String', desc: 'Marker to specify that trackable object is removed from the tracking spec.' }
15
- expose :property_ids, documentation: { type: 'Array', desc: 'Property IDs of a trackable object.' }
16
- end
17
-
18
- expose :versioned_entity, merge: true, using: ResponseEntity::VersionedEntity
19
- expose :versioned_entity_snapshot, merge: true, using: ResponseEntity::EntitySnapshot
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,88 +0,0 @@
1
- require_relative '../api_helpers'
2
- require_relative './response_entity'
3
- require_relative './spec_response'
4
- require_relative '../../../app/tracking_spec/endpoint'
5
-
6
- module Skee::API::Routes::TrackingSpec
7
- class API < Grape::API
8
- helpers Skee::API::Routes::APIHelpers
9
-
10
- resource :tracking_specs do
11
- desc 'List all Tracking Specs.'
12
- get do
13
- tracking_specs = Skee::App::TrackingSpec::Endpoint.list
14
- present tracking_specs,
15
- with: Skee::API::Routes::TrackingSpec::ResponseEntity
16
- end
17
-
18
- desc 'Retrieve a Tracking Spec.'
19
- params do
20
- requires :id, type: String, desc: 'Tracking Spec ID.'
21
- end
22
- get ':id' do
23
- tracking_spec = Skee::App::TrackingSpec::Endpoint.get(whitelisted_params)
24
- present tracking_spec,
25
- with: Skee::API::Routes::TrackingSpec::ResponseEntity
26
- end
27
-
28
- desc 'Generate a full Tracking Spec.'
29
- params do
30
- requires :id, type: String, desc: 'Tracking Spec ID.'
31
- end
32
- get ':id/full_spec' do
33
- full_spec = Skee::App::TrackingSpec::Endpoint.full_spec(whitelisted_params)
34
- present full_spec,
35
- with: Skee::API::Routes::TrackingSpec::SpecResponse
36
- end
37
-
38
- desc 'Create a Tracking Spec.'
39
- params do
40
- requires :name, type: String, desc: 'Name of the Tracking Spec.'
41
- optional :version_identifier, type: String, desc: 'Identifier of a Tracking Spec.'
42
- optional :project_id, type: String, desc: 'Project in which Tracking Spec created.'
43
- optional :change_request_id, type: String, desc: 'Change request from which Tracking Spec was created.'
44
- optional :status, type: String, desc: 'Status of a Tracking Spec.'
45
- optional :event_ids, type: Array[String], desc: 'Array of event IDs.'
46
- end
47
- post do
48
- new_tracking_spec = Skee::App::TrackingSpec::Endpoint.create(whitelisted_params)
49
- present new_tracking_spec,
50
- with: Skee::API::Routes::TrackingSpec::ResponseEntity
51
- end
52
-
53
- desc 'Update a Tracking Spec.'
54
- params do
55
- requires :id, type: String, desc: 'Tracking Spec ID.'
56
- optional :name, type: String, desc: 'Name of the Tracking Spec.'
57
- optional :version_identifier, type: String, desc: 'Identifier of a Tracking Spec.'
58
- optional :project_id, type: String, desc: 'Project in which Tracking Spec created.'
59
- optional :change_request_id, type: String, desc: 'Change request from which Tracking Spec was created.'
60
- optional :status, type: String, desc: 'Status of a Tracking Spec.'
61
- optional :event_ids, type: Array[String], desc: 'Array of event IDs.'
62
- end
63
- post ':id' do
64
- updated_tracking_spec = Skee::App::TrackingSpec::Endpoint.update(whitelisted_params)
65
- present updated_tracking_spec,
66
- with: Skee::API::Routes::TrackingSpec::ResponseEntity
67
- end
68
-
69
- desc 'Delete a Tracking Spec.'
70
- params do
71
- requires :id, type: String, desc: 'Tracking Spec ID.'
72
- end
73
- delete ':id' do
74
- Skee::App::TrackingSpec::Endpoint.delete(whitelisted_params)
75
- status 200
76
- end
77
-
78
- desc 'Expand a Tracking Spec'
79
- params do
80
- requires :id, type: String, desc: 'Tracking Spec ID.'
81
- requires :change_request_id, type: String, desc: 'Change request from which Tracking Spec was created.'
82
- end
83
- get ':id/expand' do
84
- Skee::App::TrackingSpec::Endpoint.expand(whitelisted_params)
85
- end
86
- end
87
- end
88
- end
@@ -1,17 +0,0 @@
1
- module Skee
2
- module API
3
- module Routes
4
- module TrackingSpec
5
- class ResponseEntity < Grape::Entity
6
- expose :id, documentation: { type: 'String', desc: 'Unique ID of a Tracking Spec.' }
7
- expose :version_identifier, documentation: { type: 'String', desc: 'Identifier of a Tracking Spec.' }
8
- expose :project_id, documentation: { type: 'String', desc: 'Project in which Tracking Spec created.' }
9
- expose :change_request_id, documentation: { type: 'String', desc: 'Change request from which Tracking Spec was created.' }
10
- expose :status, documentation: { type: 'String', desc: 'Status of a Tracking Spec.' }
11
- expose :name, documentation: { type: 'String', desc: 'Name of the Tracking Spec.' }
12
- expose :event_ids, documentation: { type: 'String', desc: 'Dictionary with list of IDs of all entities comprising the tracking spec.' }
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,19 +0,0 @@
1
- require_relative '../event/response_entity'
2
- require_relative '../trackable_object/response_entity'
3
- require_relative '../property/response_entity'
4
-
5
- module Skee
6
- module API
7
- module Routes
8
- module TrackingSpec
9
- class SpecResponse < Grape::Entity
10
- expose :id, documentation: { type: 'String', desc: 'Unique ID of a tracking spec.' }
11
- expose :version_identifier, documentation: { type: 'String', desc: 'Identifier of a Tracking Spec.' }
12
- expose :name, documentation: { type: 'String', desc: 'Name of the tracking spec.' }
13
- expose :change_request_id, documentation: { type: 'String', desc: 'Change request ID for the tracking spec.' }
14
- expose :events, with: Skee::API::Routes::Event::ResponseEntity
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,22 +0,0 @@
1
- require_relative '../api_helpers'
2
- require_relative './response_entity'
3
- require 'ostruct'
4
-
5
- module Skee::API::Routes::User
6
- class API < Grape::API
7
- helpers Skee::API::Routes::APIHelpers
8
-
9
- resource :users do
10
- desc 'Authenticate a user'
11
- params do
12
- requires :username, type: String, desc: 'username of the user'
13
- requires :password, type: String, desc: 'password of the user'
14
- end
15
- post ':authenticate' do
16
- response = OpenStruct.new({ username: params[:username], access_token: '123' })
17
- present response,
18
- with: Skee::API::Routes::User::ResponseEntity
19
- end
20
- end
21
- end
22
- end
@@ -1,12 +0,0 @@
1
- module Skee
2
- module API
3
- module Routes
4
- module User
5
- class ResponseEntity < Grape::Entity
6
- expose :username, documentation: {type: 'String', desc: 'Username of the user'}
7
- expose :access_token, documentation: {type: 'String', desc: 'AccessToken for the user'}
8
- end
9
- end
10
- end
11
- end
12
- end
@@ -1,30 +0,0 @@
1
- require_relative './utils/errors/api_exceptions'
2
- require_relative './utils/errors/service_exceptions'
3
-
4
- require_relative '../db/proto/project'
5
- require_relative '../db/proto/change_request'
6
-
7
- require_relative '../db/proto/event'
8
- require_relative '../db/proto/event_snapshot'
9
- require_relative '../db/proto/trackable_object'
10
- require_relative '../db/proto/trackable_object_snapshot'
11
- require_relative '../db/proto/property'
12
- require_relative '../db/proto/property_snapshot'
13
-
14
- module Skee
15
- module App
16
- DB = Skee::DB::Proto
17
- DB_MAPPING_ENTITY = {
18
- change_request: Skee::DB::Proto::ChangeRequest,
19
- event: Skee::DB::Proto::Event,
20
- project: Skee::DB::Proto::Project,
21
- trackable_object: Skee::DB::Proto::TrackableObject,
22
- property: Skee::DB::Proto::Property,
23
- }.freeze
24
- DB_MAPPING_ENTITY_SNAPSHOT = {
25
- event: Skee::DB::Proto::EventSnapshot,
26
- trackable_object: Skee::DB::Proto::TrackableObjectSnapshot,
27
- property: Skee::DB::Proto::PropertySnapshot,
28
- }.freeze
29
- end
30
- end
@@ -1,24 +0,0 @@
1
- require_relative './service'
2
- module Skee::App::ChangeRequest
3
- class Endpoint
4
- def self.list
5
- Service.list
6
- end
7
-
8
- def self.get(params)
9
- Service.get(params)
10
- end
11
-
12
- def self.create(params)
13
- Service.create(params)
14
- end
15
-
16
- def self.update(params)
17
- Service.update(params)
18
- end
19
-
20
- def self.delete(params)
21
- Service.delete(params)
22
- end
23
- end
24
- end
@@ -1,25 +0,0 @@
1
- module Skee
2
- module App
3
- module ChangeRequest
4
- class GenerateSystemChanges
5
- def initialize(change_request)
6
- @change_request = change_request
7
- end
8
-
9
- def call
10
-
11
- end
12
-
13
- private
14
-
15
- def create_new_change
16
-
17
- end
18
-
19
- def update_existing_change
20
-
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,79 +0,0 @@
1
- require_relative '../../db/proto/change_request'
2
- module Skee
3
- module App
4
- module ChangeRequest
5
- class Service
6
- DB = Skee::DB::Proto
7
-
8
- def self.list
9
- DB::ChangeRequest.all
10
- end
11
-
12
- def self.get(params)
13
- DB::ChangeRequest.find(params[:id])
14
- end
15
-
16
- def self.create(params)
17
- # add any validation or filtering logic here to
18
- # derive fields from params
19
- fields = {
20
- identifier: params[:identifier],
21
- project_id: params[:project_id],
22
- base_tracking_spec_id: params[:base_tracking_spec_id],
23
- status: params[:status],
24
- name: params[:name],
25
- description: params[:description],
26
- change_set: params[:change_set]
27
- }
28
- DB::ChangeRequest.create(fields)
29
- end
30
-
31
- def self.update(params)
32
- # send valid fields excluding id
33
- fields = {
34
- identifier: params[:identifier],
35
- project_id: params[:project_id],
36
- base_tracking_spec_id: params[:base_tracking_spec_id],
37
- status: params[:status],
38
- name: params[:name],
39
- description: params[:description],
40
- change_set: params[:change_set]
41
- }.compact
42
- change_request = DB::ChangeRequest.find(params[:id])
43
- change_request.update(fields)
44
- end
45
-
46
- def self.update_change_set(params)
47
- change_request = DB::ChangeRequest.find(params[:id])
48
- existing_change_set = change_request.change_set
49
- params[:changes].each do |entity, change_hash|
50
- existing_change_set[entity] ||= {}
51
- change_hash.each do |prev_id, new_id|
52
- if prev_id
53
- existing_change_set[entity][prev_id] = new_id
54
- else
55
- existing_change_set[entity][nil] ||= []
56
- existing_change_set[entity][nil] << new_id
57
- end
58
- end
59
- end
60
- end
61
-
62
- def self.remove_from_change_set(id:, entity:, entity_id:)
63
- change_request = DB::ChangeRequest.find(id)
64
- existing_change_set = change_request.change_set
65
- if existing_change_set[entity].values.include?(entity_id)
66
- existing_change_set[entity].delete_if {|_,value| value == entity_id}
67
- elsif existing_change_set[entity][nil].include?(entity_id)
68
- existing_change_set[entity][nil].delete(entity_id)
69
- end
70
- end
71
-
72
- def self.delete(params)
73
- change_request = DB::ChangeRequest.find(params[:id])
74
- change_request.delete
75
- end
76
- end
77
- end
78
- end
79
- end