flutter 0.1.0.pre.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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,157 +0,0 @@
1
- require_relative '../../test_helper'
2
- module Skee
3
- module API
4
- module Test
5
- module Functional
6
- module VersionedEntityHelper
7
-
8
- def get_all_entities
9
- get "/api/#{@entity_path}"
10
- assert last_response.ok?
11
- expected_entity_ids = @entity_fixture.all.map{ |e| e[:id] }
12
- response_entity_ids = JSON.parse(last_response.body).map{ |e| e['id'] }
13
- assert_empty(expected_entity_ids - response_entity_ids)
14
- end
15
-
16
- def retrieve_entity(id, params=nil)
17
- get "/api/#{@entity_path}/#{id}", params
18
- retrieved_entity = JSON.parse(last_response.body)
19
- assert last_response.ok?
20
- assert_equal(
21
- id,
22
- retrieved_entity['id']
23
- )
24
- retrieved_entity
25
- end
26
-
27
- def create_entity_invalid_change_request(new_entity_params)
28
- post "/api/#{@entity_path}", new_entity_params
29
- assert_equal(400, last_response.status)
30
- assert_equal(
31
- "{\"error\":\"Invalid change request\"}",
32
- last_response.body
33
- )
34
- end
35
-
36
- def create_entity_valid_name(new_entity_params)
37
- post "/api/#{@entity_path}", new_entity_params
38
- change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(new_entity_params['change_request_id'])
39
- new_entity = JSON.parse(last_response.body)
40
- assert_equal(201,last_response.status)
41
- assert_equal(
42
- new_entity_params['name'],
43
- new_entity['name']
44
- )
45
- assert_includes(change_request.change_set[@entity_type][new_entity['id']].values, new_entity['snapshot_id'])
46
- new_entity
47
- end
48
-
49
- def update_entity_invalid_change_request(id, update_params)
50
- post "/api/#{@entity_path}/#{id}", update_params
51
- assert_equal(400, last_response.status)
52
- assert_equal(
53
- "{\"error\":\"Invalid change request\"}",
54
- last_response.body
55
- )
56
- end
57
-
58
- def update_entity_valid_creates_new_entity(id, update_params)
59
- post "/api/#{@entity_path}/#{id}", update_params
60
- change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(update_params['change_request_id'])
61
- updated_entity = JSON.parse(last_response.body)
62
- assert_equal(201, last_response.status)
63
- assert_equal(id, updated_entity['id'])
64
- assert_includes(change_request.change_set[@entity_type].keys, id)
65
- assert_equal(change_request.change_set[@entity_type][id].values.first, updated_entity['snapshot_id'])
66
- assert_equal(change_request.change_set[@entity_type][id].keys.first, updated_entity['previous_snapshot_id'])
67
- updated_entity
68
- end
69
-
70
- def update_entity_valid_updates_existing_snapshot_of_updated_entity(id, update_params)
71
- old_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(update_params['change_request_id'])
72
- post "/api/#{@entity_path}/#{id}", update_params
73
- updated_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(update_params['change_request_id'])
74
- updated_entity = JSON.parse(last_response.body)
75
- assert_equal(201, last_response.status)
76
- assert_equal(id, updated_entity['id'])
77
- assert_includes(updated_change_request.change_set[@entity_type].keys, id)
78
- assert_equal(updated_change_request.change_set[@entity_type][id].values.first,
79
- old_change_request.change_set[@entity_type][id].values.first)
80
- assert_equal(updated_change_request.change_set[@entity_type][id].keys.first,
81
- old_change_request.change_set[@entity_type][id].keys.first)
82
- updated_entity
83
- end
84
-
85
- def update_entity_valid_updates_existing_snapshot_of_new_entity(id, update_params)
86
- old_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(update_params['change_request_id'])
87
- post "/api/#{@entity_path}/#{id}", update_params
88
- updated_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(update_params['change_request_id'])
89
- updated_entity = JSON.parse(last_response.body)
90
- assert_equal(201, last_response.status)
91
- assert_equal(id, updated_entity['id'])
92
- assert_includes(updated_change_request.change_set[@entity_type].keys, id)
93
- assert_equal(old_change_request.change_set[@entity_type][id].values.first,
94
- updated_change_request.change_set[@entity_type][id].values.first)
95
- assert_nil(updated_change_request.change_set[@entity_type][id].keys.first)
96
- assert_nil(updated_entity['previous_snapshot_id'])
97
- updated_entity
98
- end
99
-
100
- def remove_entity_invalid_change_request(id, remove_params)
101
- post "/api/#{@entity_path}/#{id}/remove", remove_params
102
- assert_equal(400, last_response.status)
103
- assert_equal(
104
- "{\"error\":\"Invalid change request\"}",
105
- last_response.body
106
- )
107
- end
108
-
109
- def remove_entity_valid_creates_new_entity(id, remove_params)
110
- post "/api/#{@entity_path}/#{id}/remove", remove_params
111
- change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(remove_params['change_request_id'])
112
- updated_entity = JSON.parse(last_response.body)
113
- assert_equal(201, last_response.status)
114
- assert_equal(true, updated_entity['is_removed'])
115
- assert_equal(id, updated_entity['id'])
116
- assert_includes(change_request.change_set[@entity_type].keys, id)
117
- assert_equal(change_request.change_set[@entity_type][id].values.first, updated_entity['snapshot_id'])
118
- assert_equal(change_request.change_set[@entity_type][id].keys.first, updated_entity['previous_snapshot_id'])
119
- updated_entity
120
- end
121
-
122
- def remove_entity_valid_updates_existing_snapshot_of_updated_entity(id, remove_params)
123
- old_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(remove_params['change_request_id'])
124
- post "/api/#{@entity_path}/#{id}/remove", remove_params
125
- updated_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(remove_params['change_request_id'])
126
- updated_entity = JSON.parse(last_response.body)
127
- assert_equal(201, last_response.status)
128
- assert_equal(true, updated_entity['is_removed'])
129
- assert_equal(id, updated_entity['id'])
130
- assert_includes(updated_change_request.change_set[@entity_type].keys, id)
131
- assert_equal(updated_change_request.change_set[@entity_type][id].values.first,
132
- old_change_request.change_set[@entity_type][id].values.first)
133
- assert_equal(updated_change_request.change_set[@entity_type][id].keys.first,
134
- old_change_request.change_set[@entity_type][id].keys.first)
135
- updated_entity
136
- end
137
-
138
- def remove_entity_valid_updates_existing_snapshot_of_new_entity(id, remove_params)
139
- old_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(remove_params['change_request_id'])
140
- post "/api/#{@entity_path}/#{id}/remove", remove_params
141
- updated_change_request = Skee::App::DB_MAPPING_ENTITY[:change_request].find(remove_params['change_request_id'])
142
- updated_entity = JSON.parse(last_response.body)
143
- assert_equal(201, last_response.status)
144
- assert_equal(true, updated_entity['is_removed'])
145
- assert_equal(id, updated_entity['id'])
146
- assert_includes(updated_change_request.change_set[@entity_type].keys, id)
147
- assert_equal(old_change_request.change_set[@entity_type][id].values.first,
148
- updated_change_request.change_set[@entity_type][id].values.first)
149
- assert_nil(updated_change_request.change_set[@entity_type][id].keys.first)
150
- assert_nil(updated_entity['previous_snapshot_id'])
151
- updated_entity
152
- end
153
- end
154
- end
155
- end
156
- end
157
- end
@@ -1,83 +0,0 @@
1
- module Skee
2
- module Test
3
- module Fixtures
4
- class ChangeRequests
5
- def self.all
6
- all_change_requests = [
7
- {
8
- 'id': '1',
9
- 'name': 'Self-enabling disintermediate budgetary management',
10
- 'identifier': 'Voltsillam',
11
- 'project_id': '1',
12
- 'source_tracking_spec_id': '0',
13
- 'status': 'open',
14
- 'description': 'nulla suscipit ligula in lacus curabitur at ipsum',
15
- 'change_set': {
16
- trackable_object: {
17
- '4' => {
18
- '4' => '5'
19
- },
20
- '5' => {
21
- nil => '7'
22
- }
23
- },
24
- property: {
25
- '4' => {
26
- '4' => '5'
27
- },
28
- '5' => {
29
- nil => '7'
30
- }
31
- },
32
- event: {
33
- '4' => {
34
- '4' => '5'
35
- },
36
- '5' => {
37
- nil => '7'
38
- }
39
- },
40
- }
41
- }
42
- ]
43
- all_change_requests << initial_change_request
44
- end
45
-
46
- def self.initial_change_request
47
- {
48
- 'id': '0',
49
- 'name': 'Budgetary management',
50
- 'identifier': 'beginning',
51
- 'project_id': '1',
52
- 'source_tracking_spec_id': nil,
53
- 'status': 'open',
54
- 'description': 'nulla suscipit ligula in lacus curabitur at ipsum',
55
- 'change_set': {
56
- trackable_object: {
57
- '4' => {
58
- nil => '4'
59
- },
60
- },
61
- property: {
62
- '5' => {
63
- nil => '7'
64
- }
65
- },
66
- event: {
67
- '1' => {
68
- nil => '1'
69
- },
70
- '3' => {
71
- nil => '5'
72
- },
73
- '4' => {
74
- nil => '4'
75
- }
76
- },
77
- }
78
- }
79
- end
80
- end
81
- end
82
- end
83
- end
@@ -1,105 +0,0 @@
1
- module Skee
2
- module Test
3
- module Fixtures
4
- class EventSnapshots
5
- def self.all
6
- [
7
- {
8
- 'id': '1',
9
- 'name': 'Closed App',
10
- 'description': 'Description of event A.',
11
- 'payload': {
12
- 'primary_user' => {
13
- 'reference_entity_type': :trackable_object,
14
- 'reference_entity_id': '1',
15
- 'is_array': false,
16
- 'is_primary': true,
17
- 'selected_property_ids': ['1'],
18
- },
19
- 'created_timestamp' => {
20
- 'reference_entity_type': :property,
21
- 'reference_entity_id': '2',
22
- 'is_array': false,
23
- 'is_primary': nil,
24
- 'selected_property_ids': ['2'],
25
- },
26
- 'cart' => {
27
- 'reference_entity_type': :trackable_object,
28
- 'reference_entity_id': '3',
29
- 'is_array': false,
30
- 'is_primary': nil,
31
- 'selected_property_ids': ['3'],
32
- }
33
- },
34
- 'change_request_id': '1',
35
- 'previous_snapshot_id': nil,
36
- 'is_removed': nil,
37
- },
38
- {
39
- 'id': '4',
40
- 'name': 'Launched App',
41
- 'description': 'Description of event A.',
42
- 'payload': {
43
- 'primary_user' => {
44
- 'reference_entity_type': :trackable_object,
45
- 'reference_entity_id': '1',
46
- 'is_array': false,
47
- 'is_primary': true,
48
- 'selected_property_ids': ['1'],
49
- },
50
- 'created_timestamp' => {
51
- 'reference_entity_type': :property,
52
- 'reference_entity_id': '2',
53
- 'is_array': false,
54
- 'is_primary': nil,
55
- 'selected_property_ids': ['2'],
56
- },
57
- 'cart' => {
58
- 'reference_entity_type': :trackable_object,
59
- 'reference_entity_id': '3',
60
- 'is_array': false,
61
- 'is_primary': nil,
62
- 'selected_property_ids': ['3'],
63
- }
64
- },
65
- 'change_request_id': '1',
66
- 'previous_snapshot_id': nil,
67
- 'is_removed': nil,
68
- },
69
- {
70
- 'id': '5',
71
- 'name': 'Opened App',
72
- 'description': 'Description of event A.',
73
- 'payload': {
74
- 'primary_user' => {
75
- 'reference_entity_type': :trackable_object,
76
- 'reference_entity_id': '1',
77
- 'is_array': false,
78
- 'is_primary': true,
79
- 'selected_property_ids': ['1'],
80
- },
81
- 'created_timestamp' => {
82
- 'reference_entity_type': :property,
83
- 'reference_entity_id': '2',
84
- 'is_array': false,
85
- 'is_primary': nil,
86
- 'selected_property_ids': ['2'],
87
- },
88
- 'cart' => {
89
- 'reference_entity_type': :trackable_object,
90
- 'reference_entity_id': '3',
91
- 'is_array': false,
92
- 'is_primary': nil,
93
- 'selected_property_ids': ['3'],
94
- }
95
- },
96
- 'change_request_id': '1',
97
- 'previous_snapshot_id': nil,
98
- 'is_removed': nil,
99
- },
100
- ]
101
- end
102
- end
103
- end
104
- end
105
- end
@@ -1,58 +0,0 @@
1
- module Skee
2
- module Test
3
- module Fixtures
4
- class Events
5
- def self.all
6
- [
7
- {
8
- 'id': '1',
9
- 'latest_snapshot_id': '1',
10
- 'snapshot_mapping': {
11
- '0' => '1'
12
- },
13
- 'is_removed': nil,
14
- }, {
15
- 'id': '2',
16
- 'latest_snapshot_id': nil,
17
- 'snapshot_mapping': {
18
- },
19
- 'is_removed': nil,
20
- }, {
21
- 'id': '3',
22
- 'latest_snapshot_id': '5',
23
- 'snapshot_mapping': {
24
- '0' => '5'
25
- },
26
- 'is_removed': nil,
27
- }, {
28
- 'id': '4',
29
- 'latest_snapshot_id': '4',
30
- 'snapshot_mapping': {
31
- '0' => '4'
32
- },
33
- 'is_removed': nil,
34
- }, {
35
- 'id': '5',
36
- 'latest_snapshot_id': '4',
37
- 'snapshot_mapping': {
38
- },
39
- 'is_removed': nil,
40
- }, {
41
- 'id': '6',
42
- 'latest_snapshot_id': nil,
43
- 'snapshot_mapping': {
44
- },
45
- 'is_removed': nil,
46
- }, {
47
- 'id': '7',
48
- 'latest_snapshot_id': nil,
49
- 'snapshot_mapping': {
50
- },
51
- 'is_removed': nil,
52
- }
53
- ]
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,66 +0,0 @@
1
- module Skee
2
- module Test
3
- module Fixtures
4
- class Properties
5
- def self.all
6
- [{
7
- 'id': '1',
8
- 'latest_snapshot_id': '1',
9
- 'snapshot_mapping': {
10
- '0' => '1'
11
- },
12
- 'is_removed': nil,
13
- }, {
14
- 'id': '2',
15
- 'latest_snapshot_id': '2',
16
- 'snapshot_mapping': {
17
- '0' => '2'
18
- },
19
- 'is_removed': nil,
20
- }, {
21
- 'id': '3',
22
- 'latest_snapshot_id': '3',
23
- 'snapshot_mapping': {
24
- '0' => '3'
25
- },
26
- 'is_removed': nil,
27
- }, {
28
- 'id': '4',
29
- 'latest_snapshot_id': '1',
30
- 'snapshot_mapping': {
31
- '0' => '1'
32
- },
33
- 'is_removed': nil,
34
- }, {
35
- 'id': '5',
36
- 'latest_snapshot_id': '4',
37
- 'snapshot_mapping': {
38
- },
39
- 'is_removed': nil,
40
- }, {
41
- 'id': '6',
42
- 'latest_snapshot_id': nil,
43
- 'snapshot_mapping': {
44
- },
45
- 'is_removed': nil,
46
- }, {
47
- 'id': '7',
48
- 'latest_snapshot_id': '6',
49
- 'snapshot_mapping': {
50
- '0' => '6'
51
- },
52
- 'is_removed': nil,
53
- }, {
54
- 'id': '8',
55
- 'latest_snapshot_id': '7',
56
- 'snapshot_mapping': {
57
- '0' => '7'
58
- },
59
- 'is_removed': nil,
60
- }
61
- ]
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,124 +0,0 @@
1
- module Skee
2
- module Test
3
- module Fixtures
4
- class PropertySnapshots
5
- def self.all
6
- [
7
- {
8
- 'id': '1',
9
- 'name': 'name',
10
- 'is_array': false,
11
- 'property_of': :trackable_object,
12
- 'data_type': 'String',
13
- 'description': "user's name",
14
- 'trackable_object_id': nil,
15
- 'is_nullable': false,
16
- 'additional_instructions': nil,
17
- 'data_format_id': nil,
18
- 'regex_validation': nil,
19
- 'change_request_id': '1',
20
- 'previous_snapshot_id': nil,
21
- 'is_removed': nil,
22
- },
23
- {
24
- 'id': '2',
25
- 'name': 'created_at',
26
- 'is_array': false,
27
- 'property_of': :event,
28
- 'data_type': 'String',
29
- 'description': 'created_at timestamp',
30
- 'trackable_object_id': nil,
31
- 'is_nullable': false,
32
- 'additional_instructions': nil,
33
- 'data_format_id': nil,
34
- 'regex_validation': nil,
35
- 'change_request_id': '1',
36
- 'previous_snapshot_id': nil,
37
- 'is_removed': nil,
38
- },
39
- {
40
- 'id': '3',
41
- 'name': 'products',
42
- 'is_array': true,
43
- 'property_of': :trackable_object,
44
- 'data_type': 'Array',
45
- 'description': 'list of products',
46
- 'trackable_object_id': '2',
47
- 'is_nullable': true,
48
- 'additional_instructions': nil,
49
- 'data_format_id': nil,
50
- 'regex_validation': nil,
51
- 'change_request_id': '1',
52
- 'previous_snapshot_id': nil,
53
- 'is_removed': nil,
54
- },
55
- {
56
- 'id': '4',
57
- 'name': 'price',
58
- 'is_array': false,
59
- 'property_of': :trackable_object,
60
- 'data_type': 'Float',
61
- 'description': 'price of products',
62
- 'trackable_object_id': nil,
63
- 'is_nullable': true,
64
- 'additional_instructions': nil,
65
- 'data_format_id': nil,
66
- 'regex_validation': nil,
67
- 'change_request_id': '1',
68
- 'previous_snapshot_id': nil,
69
- 'is_removed': nil,
70
- },
71
- {
72
- 'id': '5',
73
- 'name': 'discount',
74
- 'is_array': false,
75
- 'property_of': :trackable_object,
76
- 'data_type': 'Float',
77
- 'description': 'discount on products',
78
- 'trackable_object_id': nil,
79
- 'is_nullable': true,
80
- 'additional_instructions': nil,
81
- 'data_format_id': nil,
82
- 'regex_validation': nil,
83
- 'change_request_id': '1',
84
- 'previous_snapshot_id': '4',
85
- 'is_removed': nil,
86
- },
87
- {
88
- 'id': '6',
89
- 'name': 'address',
90
- 'is_array': false,
91
- 'property_of': :trackable_object,
92
- 'data_type': 'String',
93
- 'description': 'A location address',
94
- 'trackable_object_id': nil,
95
- 'is_nullable': true,
96
- 'additional_instructions': nil,
97
- 'data_format_id': nil,
98
- 'regex_validation': nil,
99
- 'change_request_id': '1',
100
- 'previous_snapshot_id': '4',
101
- 'is_removed': nil,
102
- },
103
- {
104
- 'id': '7',
105
- 'name': 'store_name',
106
- 'is_array': false,
107
- 'property_of': :trackable_object,
108
- 'data_type': 'String',
109
- 'description': 'Store name',
110
- 'trackable_object_id': nil,
111
- 'is_nullable': true,
112
- 'additional_instructions': nil,
113
- 'data_format_id': nil,
114
- 'regex_validation': nil,
115
- 'change_request_id': '1',
116
- 'previous_snapshot_id': '4',
117
- 'is_removed': nil,
118
- }
119
- ]
120
- end
121
- end
122
- end
123
- end
124
- end