Skip to content

Commit a5d7ee0

Browse files
committed
RUBY-907 writeConcernError is a document
1 parent 35408d2 commit a5d7ee0

File tree

2 files changed

+7
-27
lines changed

2 files changed

+7
-27
lines changed

lib/mongo/error/parser.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ def parse!
4848
parse_single(@message, ERROR)
4949
parse_single(@message, ERRMSG)
5050
parse_multiple(@message, WRITE_ERRORS)
51-
parse_multiple(@message, WRITE_CONCERN_ERROR)
51+
parse_single(@message, ERRMSG,
52+
document[WRITE_CONCERN_ERROR]) if document[WRITE_CONCERN_ERROR]
5253
end
5354

5455
def parse_single(message, key, doc = document)

spec/mongo/error/parser_spec.rb

Lines changed: 5 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -84,35 +84,14 @@
8484
end
8585
end
8686

87-
context 'when the document contains writeConcernErrors' do
87+
context 'when the document contains a writeConcernError' do
8888

89-
context 'when a single error exists' do
90-
91-
let(:document) do
92-
{ 'writeConcernError' => [{ 'errmsg' => 'not authorized for query', 'code' => 13 }]}
93-
end
94-
95-
it 'returns the message' do
96-
expect(parser.message).to eq('not authorized for query (13)')
97-
end
89+
let(:document) do
90+
{ 'writeConcernError' => { 'code' => 100, 'errmsg' => 'Not enough data-bearing nodes' } }
9891
end
9992

100-
context 'when multiple errors exist' do
101-
102-
let(:document) do
103-
{
104-
'writeConcernError' => [
105-
{ 'code' => 9, 'errmsg' => 'Unknown modifier: $st' },
106-
{ 'code' => 9, 'errmsg' => 'Unknown modifier: $bl' }
107-
]
108-
}
109-
end
110-
111-
it 'returns the messages concatenated' do
112-
expect(parser.message).to eq(
113-
'Unknown modifier: $st (9), Unknown modifier: $bl (9)'
114-
)
115-
end
93+
it 'returns the message' do
94+
expect(parser.message).to eq('Not enough data-bearing nodes (100)')
11695
end
11796
end
11897
end

0 commit comments

Comments
 (0)