pact_broker 1.2.0 → 1.3.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.
- checksums.yaml +13 -5
- data/.gitignore +2 -0
- data/CHANGELOG.md +5 -0
- data/README.md +2 -1
- data/Rakefile +1 -3
- data/db/migrations/07_increase_json_content_length.rb +6 -1
- data/db/migrations/08_create_latest_pact_view.rb +7 -5
- data/db/migrations/14_add_timestamps_to_pact_views.rb +28 -0
- data/lib/pact_broker/api.rb +0 -4
- data/lib/pact_broker/api/decorators/latest_pact_decorator.rb +4 -1
- data/lib/pact_broker/api/decorators/pact_decorator.rb +2 -2
- data/lib/pact_broker/api/decorators/pact_version_decorator.rb +3 -4
- data/lib/pact_broker/api/decorators/pact_versions_decorator.rb +4 -4
- data/lib/pact_broker/api/decorators/pacticipant_decorator.rb +3 -2
- data/lib/pact_broker/api/decorators/tag_decorator.rb +2 -2
- data/lib/pact_broker/api/decorators/timestamps.rb +24 -0
- data/lib/pact_broker/api/decorators/webhook_decorator.rb +2 -2
- data/lib/pact_broker/api/decorators/webhooks_decorator.rb +4 -4
- data/lib/pact_broker/api/renderers/html_pact_renderer.rb +16 -4
- data/lib/pact_broker/api/resources/base_resource.rb +0 -1
- data/lib/pact_broker/api/resources/group.rb +11 -6
- data/lib/pact_broker/api/resources/index.rb +5 -6
- data/lib/pact_broker/api/resources/latest_pact.rb +8 -5
- data/lib/pact_broker/api/resources/latest_pacts.rb +3 -3
- data/lib/pact_broker/api/resources/pact.rb +9 -5
- data/lib/pact_broker/api/resources/pact_webhooks.rb +9 -5
- data/lib/pact_broker/api/resources/pacticipant.rb +10 -5
- data/lib/pact_broker/api/resources/relationships.rb +3 -3
- data/lib/pact_broker/api/resources/tag.rb +8 -7
- data/lib/pact_broker/api/resources/webhook.rb +1 -1
- data/lib/pact_broker/api/resources/webhook_execution.rb +1 -1
- data/lib/pact_broker/app.rb +8 -57
- data/lib/pact_broker/logging.rb +1 -0
- data/lib/pact_broker/models/pact.rb +6 -8
- data/lib/pact_broker/repositories/pact.rb +29 -0
- data/lib/pact_broker/repositories/pact_content.rb +0 -0
- data/lib/pact_broker/repositories/pact_repository.rb +66 -21
- data/lib/pact_broker/repositories/tag_repository.rb +1 -1
- data/lib/pact_broker/repositories/version_repository.rb +2 -1
- data/lib/pact_broker/services/pact_service.rb +14 -16
- data/lib/pact_broker/ui.rb +2 -0
- data/lib/pact_broker/ui/app.rb +81 -0
- data/lib/pact_broker/ui/controllers/groups.rb +1 -1
- data/lib/pact_broker/version.rb +1 -1
- data/lib/rack/pact_broker/convert_file_extension_to_accept_header.rb +44 -0
- data/pact_broker.gemspec +1 -0
- data/public/javascripts/highlight.pack.js +1 -0
- data/public/stylesheets/github-json.css +127 -0
- data/public/stylesheets/pact.css +4 -0
- data/spec/fixtures/consumer-provider.json +21 -0
- data/spec/integration/app_spec.rb +165 -0
- data/spec/integration/endpoints/pact_put_spec.rb +43 -0
- data/spec/lib/pact_broker/api/decorators/latest_pact_decorator_spec.rb +42 -0
- data/spec/lib/pact_broker/api/decorators/pact_version_decorator_spec.rb +5 -0
- data/spec/lib/pact_broker/api/decorators/pacticipant_decorator_spec.rb +2 -1
- data/spec/lib/pact_broker/api/decorators/webhook_decorator_spec.rb +9 -2
- data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +14 -3
- data/spec/lib/pact_broker/repositories/pact_repository_spec.rb +88 -4
- data/spec/lib/pact_broker/repositories/tag_repository_spec.rb +2 -0
- data/spec/lib/pact_broker/repositories/version_repository_spec.rb +20 -2
- data/spec/lib/pact_broker/services/pacticipant_service_spec.rb +1 -1
- data/spec/service_consumers/pact_helper.rb +2 -17
- data/spec/spec_helper.rb +4 -22
- data/spec/support/database_cleaner.rb +18 -0
- data/spec/support/fixture_helpers.rb +10 -0
- data/spec/support/provider_state_builder.rb +4 -15
- metadata +82 -47
@@ -17,17 +17,20 @@ module PactBroker
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def resource_exists?
|
20
|
-
|
21
|
-
@pact != nil
|
20
|
+
pact
|
22
21
|
end
|
23
22
|
|
24
23
|
def to_json
|
25
|
-
response.headers['X-Pact-Consumer-Version'] =
|
26
|
-
PactBroker::Api::Decorators::PactDecorator.new(
|
24
|
+
response.headers['X-Pact-Consumer-Version'] = pact.consumer_version_number
|
25
|
+
PactBroker::Api::Decorators::PactDecorator.new(pact).to_json(base_url: base_url)
|
27
26
|
end
|
28
27
|
|
29
28
|
def to_html
|
30
|
-
PactBroker.configuration.html_pact_renderer.call(
|
29
|
+
PactBroker.configuration.html_pact_renderer.call(pact)
|
30
|
+
end
|
31
|
+
|
32
|
+
def pact
|
33
|
+
@pact ||= pact_service.find_latest_pact(identifier_from_path)
|
31
34
|
end
|
32
35
|
|
33
36
|
end
|
@@ -15,11 +15,11 @@ module PactBroker
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def to_json
|
18
|
-
|
18
|
+
PactBroker::Api::Decorators::PactCollectionDecorator.new(pacts).to_json(base_url: base_url)
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
|
21
|
+
def pacts
|
22
|
+
pact_service.find_latest_pacts
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
@@ -35,18 +35,22 @@ module PactBroker
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def resource_exists?
|
38
|
-
|
39
|
-
@pact != nil
|
38
|
+
pact
|
40
39
|
end
|
41
40
|
|
42
41
|
def from_json
|
43
|
-
|
44
|
-
|
42
|
+
response_code = pact ? 200 : 201
|
43
|
+
@pact = pact_service.create_or_update_pact(identifier_from_path.merge(:json_content => request_body))
|
45
44
|
response.body = to_json
|
45
|
+
response_code
|
46
46
|
end
|
47
47
|
|
48
48
|
def to_json
|
49
|
-
PactBroker::Api::Decorators::PactDecorator.new(
|
49
|
+
PactBroker::Api::Decorators::PactDecorator.new(pact).to_json(base_url: base_url)
|
50
|
+
end
|
51
|
+
|
52
|
+
def pact
|
53
|
+
@pact ||= pact_service.find_pact(identifier_from_path)
|
50
54
|
end
|
51
55
|
|
52
56
|
end
|
@@ -23,8 +23,7 @@ module PactBroker
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def resource_exists?
|
26
|
-
|
27
|
-
(@provider = find_pacticipant(identifier_from_path[:provider_name], "provider"))
|
26
|
+
consumer && provider
|
28
27
|
end
|
29
28
|
|
30
29
|
def malformed_request?
|
@@ -45,7 +44,6 @@ module PactBroker
|
|
45
44
|
def from_json
|
46
45
|
saved_webhook = webhook_service.create next_uuid, webhook, consumer, provider
|
47
46
|
response.body = Decorators::WebhookDecorator.new(saved_webhook).to_json(base_url: base_url)
|
48
|
-
true
|
49
47
|
end
|
50
48
|
|
51
49
|
def to_json
|
@@ -54,8 +52,6 @@ module PactBroker
|
|
54
52
|
|
55
53
|
private
|
56
54
|
|
57
|
-
attr_reader :consumer, :provider
|
58
|
-
|
59
55
|
def webhooks
|
60
56
|
webhook_service.find_by_consumer_and_provider consumer, provider
|
61
57
|
end
|
@@ -68,6 +64,14 @@ module PactBroker
|
|
68
64
|
@next_uuid ||= webhook_service.next_uuid
|
69
65
|
end
|
70
66
|
|
67
|
+
def consumer
|
68
|
+
@consumer ||= find_pacticipant(identifier_from_path[:consumer_name], "consumer")
|
69
|
+
end
|
70
|
+
|
71
|
+
def provider
|
72
|
+
@provider ||= find_pacticipant(identifier_from_path[:provider_name], "provider")
|
73
|
+
end
|
74
|
+
|
71
75
|
def find_pacticipant name, role
|
72
76
|
pacticipant_service.find_pacticipant_by_name(name).tap do | pacticipant |
|
73
77
|
set_json_error_message("No #{role} with name '#{name}' found") if pacticipant.nil?
|
@@ -31,18 +31,17 @@ module PactBroker
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def from_json
|
34
|
-
if
|
34
|
+
if pacticipant
|
35
35
|
@pacticipant = pacticipant_service.update params.merge(name: pacticipant_name)
|
36
36
|
else
|
37
37
|
@pacticipant = pacticipant_service.create params.merge(name: pacticipant_name)
|
38
|
-
response.headers["Location"] = pacticipant_url(base_url,
|
38
|
+
response.headers["Location"] = pacticipant_url(base_url, pacticipant)
|
39
39
|
end
|
40
40
|
response.body = to_json
|
41
41
|
end
|
42
42
|
|
43
43
|
def resource_exists?
|
44
|
-
|
45
|
-
@pacticipant != nil
|
44
|
+
pacticipant
|
46
45
|
end
|
47
46
|
|
48
47
|
def delete_resource
|
@@ -51,7 +50,13 @@ module PactBroker
|
|
51
50
|
end
|
52
51
|
|
53
52
|
def to_json
|
54
|
-
PactBroker::Api::Decorators::PacticipantRepresenter.new(
|
53
|
+
PactBroker::Api::Decorators::PacticipantRepresenter.new(pacticipant).to_json(base_url: base_url)
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def pacticipant
|
59
|
+
@pacticipant ||= pacticipant_service.find_pacticipant_by_name(pacticipant_name)
|
55
60
|
end
|
56
61
|
|
57
62
|
def pacticipant_name
|
@@ -16,11 +16,11 @@ module PactBroker
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def to_csv
|
19
|
-
|
19
|
+
PactBroker::Api::Decorators::RelationshipsCsvDecorator.new(pacts).to_csv
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
23
|
-
|
22
|
+
def pacts
|
23
|
+
pact_service.find_latest_pacts
|
24
24
|
end
|
25
25
|
|
26
26
|
end
|
@@ -19,23 +19,24 @@ module PactBroker
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def from_json
|
22
|
-
unless
|
22
|
+
unless tag
|
23
23
|
@tag = tag_service.create identifier_from_path
|
24
|
-
|
24
|
+
# Make it return a 201 by setting the Location header
|
25
|
+
response.headers["Location"] = tag_url(base_url, tag)
|
25
26
|
end
|
26
|
-
response.body =
|
27
|
+
response.body = to_json
|
27
28
|
end
|
28
29
|
|
29
30
|
def resource_exists?
|
30
|
-
|
31
|
+
tag
|
31
32
|
end
|
32
33
|
|
33
34
|
def to_json
|
34
|
-
|
35
|
+
PactBroker::Api::Decorators::TagDecorator.new(tag).to_json(base_url: base_url)
|
35
36
|
end
|
36
37
|
|
37
|
-
def
|
38
|
-
|
38
|
+
def tag
|
39
|
+
@tag ||= tag_service.find identifier_from_path
|
39
40
|
end
|
40
41
|
|
41
42
|
end
|
data/lib/pact_broker/app.rb
CHANGED
@@ -2,6 +2,7 @@ require 'pact_broker/configuration'
|
|
2
2
|
require 'pact_broker/db'
|
3
3
|
require 'pact_broker/project_root'
|
4
4
|
require 'rack/hal_browser'
|
5
|
+
require 'rack/pact_broker/convert_file_extension_to_accept_header'
|
5
6
|
|
6
7
|
module PactBroker
|
7
8
|
|
@@ -42,53 +43,23 @@ module PactBroker
|
|
42
43
|
def build_app
|
43
44
|
@app = Rack::Builder.new
|
44
45
|
|
45
|
-
@app.use Rack::Static, :urls => ["/stylesheets", "/
|
46
|
-
|
47
|
-
logger.info "Mounting UI"
|
48
|
-
require 'pact_broker/ui/controllers/relationships'
|
49
|
-
require 'pact_broker/ui/controllers/groups'
|
50
|
-
require 'pact_broker/doc/controllers/app'
|
51
|
-
|
52
|
-
ui = Rack::Builder.new {
|
53
|
-
|
54
|
-
use HtmlFilter
|
55
|
-
|
56
|
-
map "/ui/relationships" do
|
57
|
-
run PactBroker::UI::Controllers::Relationships
|
58
|
-
end
|
59
|
-
|
60
|
-
map "/groups" do
|
61
|
-
run PactBroker::UI::Controllers::Groups
|
62
|
-
end
|
63
|
-
|
64
|
-
map "/doc" do
|
65
|
-
run PactBroker::Doc::Controllers::App
|
66
|
-
end
|
67
|
-
|
68
|
-
map "/" do
|
69
|
-
run lambda { |env|
|
70
|
-
# A request for the root path in the browser (not the json index) should
|
71
|
-
# redirect to ui/relationships
|
72
|
-
if (env['PATH_INFO'].chomp("/") == "")
|
73
|
-
[303, {'Location' => 'ui/relationships'},[]]
|
74
|
-
else
|
75
|
-
[404, {},[]]
|
76
|
-
end
|
77
|
-
}
|
78
|
-
end
|
79
|
-
}
|
46
|
+
@app.use Rack::Static, :urls => ["/stylesheets", "/css", "/fonts", "/js", "/javascripts"], :root => PactBroker.project_root.join("public")
|
47
|
+
@app.use Rack::PactBroker::ConvertFileExtensionToAcceptHeader
|
80
48
|
|
81
49
|
if configuration.use_hal_browser
|
82
50
|
logger.info "Mounting HAL browser"
|
83
|
-
@app.use Rack::HalBrowser::Redirect
|
51
|
+
@app.use Rack::HalBrowser::Redirect
|
84
52
|
else
|
85
53
|
logger.info "Not mounting HAL browser"
|
86
54
|
end
|
87
55
|
|
56
|
+
logger.info "Mounting UI"
|
57
|
+
require 'pact_broker/ui/app'
|
58
|
+
|
88
59
|
logger.info "Mounting PactBroker::API"
|
89
60
|
require 'pact_broker/api'
|
90
61
|
|
91
|
-
apps = [
|
62
|
+
apps = [PactBroker::UI::App.new, PactBroker::API]
|
92
63
|
|
93
64
|
@app.map "/" do
|
94
65
|
run Rack::Cascade.new(apps)
|
@@ -96,26 +67,6 @@ module PactBroker
|
|
96
67
|
|
97
68
|
end
|
98
69
|
|
99
|
-
class HtmlFilter
|
100
|
-
|
101
|
-
def initialize app
|
102
|
-
@app = app
|
103
|
-
end
|
104
|
-
|
105
|
-
def call env
|
106
|
-
if accepts_html_and_not_json_or_csv env
|
107
|
-
@app.call(env)
|
108
|
-
else
|
109
|
-
[404, {},[]]
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def accepts_html_and_not_json_or_csv env
|
114
|
-
accept = env['HTTP_ACCEPT'] || ''
|
115
|
-
accept.include?("html") && !accept.include?("json") && !accept.include?("csv")
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|
119
70
|
end
|
120
71
|
|
121
72
|
end
|
data/lib/pact_broker/logging.rb
CHANGED
@@ -3,15 +3,14 @@ require 'pact_broker/db'
|
|
3
3
|
module PactBroker
|
4
4
|
|
5
5
|
module Models
|
6
|
-
class Pact
|
6
|
+
class Pact
|
7
7
|
|
8
|
-
|
9
|
-
associate(:many_to_one, :provider, :class => "PactBroker::Models::Pacticipant", :key => :provider_id, :primary_key => :id)
|
10
|
-
associate(:many_to_one, :consumer_version, :class => "PactBroker::Models::Version", :key => :version_id, :primary_key => :id)
|
8
|
+
attr_accessor :id, :provider, :consumer_version, :consumer, :updated_at, :created_at, :json_content, :consumer_version_number
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
def initialize attributes
|
11
|
+
attributes.each_pair do | key, value |
|
12
|
+
self.send(key.to_s + "=", value)
|
13
|
+
end
|
15
14
|
end
|
16
15
|
|
17
16
|
def consumer
|
@@ -35,6 +34,5 @@ module PactBroker
|
|
35
34
|
end
|
36
35
|
end
|
37
36
|
|
38
|
-
Pact.plugin :timestamps, :update_on_create=>true
|
39
37
|
end
|
40
38
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'pact_broker/models/pact'
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Repositories
|
5
|
+
|
6
|
+
class Pact < Sequel::Model
|
7
|
+
|
8
|
+
set_primary_key :id
|
9
|
+
associate(:many_to_one, :provider, :class => "PactBroker::Models::Pacticipant", :key => :provider_id, :primary_key => :id)
|
10
|
+
associate(:many_to_one, :consumer_version, :class => "PactBroker::Models::Version", :key => :version_id, :primary_key => :id)
|
11
|
+
|
12
|
+
Pact.plugin :timestamps, :update_on_create=>true
|
13
|
+
|
14
|
+
def to_model
|
15
|
+
PactBroker::Models::Pact.new(
|
16
|
+
id: id,
|
17
|
+
provider: provider,
|
18
|
+
consumer: consumer_version.pacticipant,
|
19
|
+
consumer_version_number: consumer_version.number,
|
20
|
+
consumer_version: consumer_version,
|
21
|
+
json_content: json_content,
|
22
|
+
updated_at: updated_at,
|
23
|
+
created_at: created_at
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
File without changes
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'sequel'
|
2
2
|
require 'pact_broker/logging'
|
3
3
|
require 'ostruct'
|
4
|
+
require 'pact_broker/repositories/pact'
|
4
5
|
|
5
6
|
module PactBroker
|
6
7
|
module Repositories
|
@@ -9,62 +10,98 @@ module PactBroker
|
|
9
10
|
include PactBroker::Logging
|
10
11
|
|
11
12
|
def find_all_pacts_between consumer_name, options
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
to_models do
|
14
|
+
pact_finder(consumer_name, options.fetch(:and))
|
15
|
+
.left_outer_join(:tags, {:version_id => :id}, {implicit_qualifier: :versions})
|
16
|
+
.reverse_order(:order)
|
17
|
+
end
|
15
18
|
end
|
16
19
|
|
17
20
|
def find_by_version_and_provider version_id, provider_id
|
18
|
-
|
21
|
+
to_model do
|
22
|
+
PactBroker::Repositories::Pact.where(version_id: version_id, provider_id: provider_id).single_record
|
23
|
+
end
|
19
24
|
end
|
20
25
|
|
21
26
|
def find_latest_pacts
|
22
|
-
# Need to use aliases because sqlite returns row with `` in the column name,
|
27
|
+
# Need to use aliases because sqlite returns row with `` in the column name,
|
28
|
+
# mysql does not
|
23
29
|
db[:latest_pacts].select(:id,
|
24
30
|
:consumer_id___consumer_id, :consumer_name___consumer_name,
|
25
31
|
:provider_id___provider_id, :provider_name___provider_name,
|
26
|
-
:consumer_version_number___consumer_version_number
|
32
|
+
:consumer_version_number___consumer_version_number,
|
33
|
+
:created_at___created_at,
|
34
|
+
:updated_at___updated_at).all.collect do | row |
|
27
35
|
row_to_pact row
|
28
36
|
end
|
29
37
|
|
30
38
|
end
|
31
39
|
|
32
40
|
def find_latest_pact(consumer_name, provider_name, tag = nil)
|
33
|
-
|
34
|
-
|
35
|
-
|
41
|
+
to_model do
|
42
|
+
finder = pact_finder(consumer_name, provider_name)
|
43
|
+
finder = add_tag_criteria(finder, tag) unless tag.nil?
|
44
|
+
finder.order(:order).last
|
45
|
+
end
|
36
46
|
end
|
37
47
|
|
38
48
|
def find_pact consumer_name, consumer_version, provider_name
|
39
|
-
|
49
|
+
to_model do
|
50
|
+
pact_finder(consumer_name, provider_name)
|
51
|
+
.where('versions.number = ?', consumer_version)
|
52
|
+
.single_record
|
53
|
+
end
|
40
54
|
end
|
41
55
|
|
42
56
|
def create params
|
43
|
-
|
57
|
+
to_model do
|
58
|
+
Pact.new(
|
59
|
+
version_id: params[:version_id],
|
60
|
+
provider_id: params[:provider_id],
|
61
|
+
json_content: params[:json_content]
|
62
|
+
).save
|
63
|
+
end
|
44
64
|
end
|
45
65
|
|
46
|
-
def
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
66
|
+
def update id, params
|
67
|
+
to_model do
|
68
|
+
Pact.find(id: id).tap do | pact |
|
69
|
+
pact.update(json_content: params[:json_content])
|
70
|
+
end
|
51
71
|
end
|
52
72
|
end
|
53
73
|
|
54
74
|
def find_previous_pact pact
|
55
|
-
previous_pact = db[:all_pacts]
|
75
|
+
previous_pact = db[:all_pacts]
|
76
|
+
.where(
|
77
|
+
:consumer_id => pact.consumer.id,
|
78
|
+
:provider_id => pact.provider.id)
|
79
|
+
.where('consumer_version_order < ?', pact.consumer_version.order)
|
80
|
+
.order(:consumer_version_order)
|
81
|
+
.last
|
56
82
|
previous_pact ? row_to_pact(previous_pact) : nil
|
57
83
|
end
|
58
84
|
|
59
85
|
private
|
60
86
|
|
87
|
+
def to_model
|
88
|
+
database_model = yield
|
89
|
+
database_model ? database_model.to_model : nil
|
90
|
+
end
|
91
|
+
|
92
|
+
def to_models
|
93
|
+
database_models = yield
|
94
|
+
database_models.collect(&:to_model)
|
95
|
+
end
|
96
|
+
|
61
97
|
def db
|
62
98
|
PactBroker::Models::Version.new.db
|
63
99
|
end
|
64
100
|
|
65
101
|
def pact_finder consumer_name, provider_name
|
66
|
-
PactBroker::
|
67
|
-
:pacts__id, :pacts__json_content, :pacts__version_id, :pacts__provider_id,
|
102
|
+
PactBroker::Repositories::Pact.select(
|
103
|
+
:pacts__id, :pacts__json_content, :pacts__version_id, :pacts__provider_id,
|
104
|
+
:pacts__created_at, :pacts__updated_at,
|
68
105
|
:versions__number___consumer_version_number).
|
69
106
|
join(:versions, {:id => :version_id}, {implicit_qualifier: :pacts}).
|
70
107
|
join(:pacticipants, {:id => :pacticipant_id}, {:table_alias => :consumers, implicit_qualifier: :versions}).
|
@@ -86,8 +123,16 @@ module PactBroker
|
|
86
123
|
consumer.id = row[:consumer_id]
|
87
124
|
provider = Models::Pacticipant.new(name: row[:provider_name])
|
88
125
|
provider.id = row[:provider_id]
|
89
|
-
consumer_version = OpenStruct.new(
|
90
|
-
|
126
|
+
consumer_version = OpenStruct.new(
|
127
|
+
number: row[:consumer_version_number],
|
128
|
+
pacticipant: consumer)
|
129
|
+
pact = Models::Pact.new(id: row[:id],
|
130
|
+
consumer: consumer,
|
131
|
+
consumer_version: consumer_version,
|
132
|
+
provider: provider,
|
133
|
+
consumer_version_number: row[:consumer_version_number],
|
134
|
+
created_at: row[:created_at],
|
135
|
+
updated_at: row[:updated_at])
|
91
136
|
end
|
92
137
|
|
93
138
|
end
|