From 29a91c5bc65524fffeaaba493f30c419b98f0869 Mon Sep 17 00:00:00 2001
From: Douglas Barbosa Alexandre <dbalexandre@gmail.com>
Date: Tue, 16 Aug 2016 11:13:21 -0300
Subject: [PATCH] Fix matcher `match_response_schema`

---
 spec/controllers/projects/boards/issues_controller_spec.rb | 2 +-
 spec/controllers/projects/boards/lists_controller_spec.rb  | 4 ++--
 spec/fixtures/api/schemas/issues.json                      | 4 ++++
 spec/fixtures/api/schemas/lists.json                       | 4 ++++
 spec/support/api/schema_matcher.rb                         | 5 ++---
 5 files changed, 13 insertions(+), 6 deletions(-)
 create mode 100644 spec/fixtures/api/schemas/issues.json
 create mode 100644 spec/fixtures/api/schemas/lists.json

diff --git a/spec/controllers/projects/boards/issues_controller_spec.rb b/spec/controllers/projects/boards/issues_controller_spec.rb
index ac034ced930..04df58bf4f6 100644
--- a/spec/controllers/projects/boards/issues_controller_spec.rb
+++ b/spec/controllers/projects/boards/issues_controller_spec.rb
@@ -26,7 +26,7 @@ describe Projects::Boards::IssuesController do
 
         parsed_response = JSON.parse(response.body)
 
-        expect(response).to match_response_schema('issue', array: true)
+        expect(response).to match_response_schema('issues')
         expect(parsed_response.length).to eq 2
       end
     end
diff --git a/spec/controllers/projects/boards/lists_controller_spec.rb b/spec/controllers/projects/boards/lists_controller_spec.rb
index 8e6b496e1d6..92190b4b69e 100644
--- a/spec/controllers/projects/boards/lists_controller_spec.rb
+++ b/spec/controllers/projects/boards/lists_controller_spec.rb
@@ -29,7 +29,7 @@ describe Projects::Boards::ListsController do
 
       parsed_response = JSON.parse(response.body)
 
-      expect(response).to match_response_schema('list', array: true)
+      expect(response).to match_response_schema('lists')
       expect(parsed_response.length).to eq 3
     end
 
@@ -204,7 +204,7 @@ describe Projects::Boards::ListsController do
       it 'returns the defaults lists' do
         generate_default_board_lists user: user
 
-        expect(response).to match_response_schema('list', array: true)
+        expect(response).to match_response_schema('lists')
       end
     end
 
diff --git a/spec/fixtures/api/schemas/issues.json b/spec/fixtures/api/schemas/issues.json
new file mode 100644
index 00000000000..0d2067f704a
--- /dev/null
+++ b/spec/fixtures/api/schemas/issues.json
@@ -0,0 +1,4 @@
+{
+  "type": "array",
+  "items": { "$ref": "issue.json" }
+}
diff --git a/spec/fixtures/api/schemas/lists.json b/spec/fixtures/api/schemas/lists.json
new file mode 100644
index 00000000000..9f618aa9de5
--- /dev/null
+++ b/spec/fixtures/api/schemas/lists.json
@@ -0,0 +1,4 @@
+{
+  "type": "array",
+  "items": { "$ref": "list.json" }
+}
diff --git a/spec/support/api/schema_matcher.rb b/spec/support/api/schema_matcher.rb
index 929b637e5eb..e42d727672b 100644
--- a/spec/support/api/schema_matcher.rb
+++ b/spec/support/api/schema_matcher.rb
@@ -1,9 +1,8 @@
-RSpec::Matchers.define :match_response_schema do |schema, options = {}|
+RSpec::Matchers.define :match_response_schema do |schema, **options|
   match do |response|
     schema_directory = "#{Dir.pwd}/spec/fixtures/api/schemas"
     schema_path = "#{schema_directory}/#{schema}.json"
-    list = options.fetch(:array, false)
 
-    JSON::Validator.validate!(schema_path, response.body, list: list)
+    JSON::Validator.validate!(schema_path, response.body, options)
   end
 end
-- 
GitLab