Skip to content

Commit

Permalink
Merge pull request #113 from IlyaSkriblovsky/write-concern
Browse files Browse the repository at this point in the history
Test coverage for `WriteConcern` class
  • Loading branch information
psi29a committed Jun 2, 2015
2 parents d227c06 + b961987 commit 1d3e315
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions tests/test_write_concern.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
# limitations under the License.

from mock import Mock, patch
from pymongo.errors import ConfigurationError
from twisted.internet import defer
from twisted.trial import unittest
from txmongo.connection import MongoConnection, ConnectionPool
Expand Down Expand Up @@ -150,3 +151,52 @@ def test_ConnectionUrlParams(self):
finally:
yield coll.drop()
yield conn.disconnect()


class TestWriteConcernClass(unittest.TestCase):

def test_wtimeout(self):
wc = WriteConcern(wtimeout=123)
self.assertEqual(wc.document['wtimeout'], 123)

self.assertRaises(TypeError, WriteConcern, wtimeout=123.456)

def test_j(self):
wc = WriteConcern(j=True)
self.assertEqual(wc.document['j'], True)

self.assertRaises(TypeError, WriteConcern, j=1)

def test_fsync(self):
wc = WriteConcern(fsync=True)
self.assertEqual(wc.document['fsync'], True)

self.assertRaises(TypeError, WriteConcern, fsync=1)
# Can't set both j and fsync
self.assertRaises(ConfigurationError, WriteConcern, j=True, fsync=True)

def test_w(self):
WriteConcern(w=0)

# Can't set w=0 with any other options
self.assertRaises(ConfigurationError, WriteConcern, w=0, j=True)
self.assertRaises(ConfigurationError, WriteConcern, w=0, wtimeout=100)
self.assertRaises(ConfigurationError, WriteConcern, w=0, fsync=True)

self.assertRaises(TypeError, WriteConcern, w=1.5)

def test_repr(self):
self.assertEqual(repr(WriteConcern()), "WriteConcern()")
self.assertEqual(repr(WriteConcern(w=2)), "WriteConcern(w=2)")
self.assertEqual(repr(WriteConcern(fsync=True)), "WriteConcern(fsync=True)")

multiopt = repr(WriteConcern(w=2, wtimeout=500, fsync=True))
self.assertTrue(multiopt.startswith("WriteConcern("))
self.assertTrue(multiopt.endswith(')'))
inner = multiopt[13:-1]
self.assertEqual(set(inner.split(", ")), set(["w=2", "wtimeout=500", "fsync=True"]))

def test_cmp(self):
self.assertEqual(WriteConcern(w=2, wtimeout=500), WriteConcern(wtimeout=500, w=2))
self.assertNotEqual(WriteConcern(w=2, wtimeout=500),
WriteConcern(wtimeout=500, w=2, j=True))

0 comments on commit 1d3e315

Please sign in to comment.