62
63
db = CouchDatabase('testing', create=True, ctx=ctx)
63
64
record_id = db.put_record(self.record)
65
retreived_record = db.get_record(record_id)
66
db.get_record(record_id)
66
67
self.assertNotEquals(self.record.record_revision, None)
68
69
first = self.record.record_revision
70
71
record_id = db.put_record(self.record)
71
retreived_record = db.get_record(record_id)
72
db.get_record(record_id)
72
73
second = self.record.record_revision
74
75
self.assertTrue(first < second)
81
82
self.assertRaises(KeyError, f, self.record)
83
84
del self.record["a"]
85
86
def test_iter(self):
86
self.assertEquals(sorted(list(iter(self.record))),
87
self.assertEquals(sorted(list(iter(self.record))),
87
88
['a', 'b', 'record_type', 'subfield', 'subfield_uuid'])
89
90
def test_setitem_internal(self):
92
93
self.assertRaises(IllegalKeyException, f, self.record)
94
95
def test_no_record_type(self):
95
96
self.assertRaises(NoRecordTypeSpecified, Record, {})
111
112
['a', 'b', 'record_type', 'subfield', 'subfield_uuid'],
112
113
sorted(self.record.keys()))
113
114
self.assertIn("a", self.record)
115
self.assertTrue(self.record.has_key("a"))
116
self.assertFalse(self.record.has_key("f"))
114
117
self.assertNotIn("_id", self.record) # is internal. play dumb.
116
119
def test_application_annotations(self):
174
177
self.record["subfield_uuid"].append(value)
175
178
self.assertEqual(3, len(self.record["subfield_uuid"]))
176
179
self.assertEqual("value32", self.record["subfield_uuid"][-1]["field32"])
181
def test_mergeable_list_remove(self):
182
"""Test remove a normal value"""
184
self.record["subfield_uuid"].append(value)
185
self.record["subfield_uuid"].remove(value)
186
self.assertFalse(value in self.record["subfield_uuid"])
188
def test_mergeable_list_remove_record_dict(self):
189
"""Test remove a RecordDict value"""
191
"field31": "value31",
192
"field32": "value32"})
193
self.record["subfield_uuid"].append(value)
194
self.record["subfield_uuid"].remove(value)
195
self.assertFalse(value in self.record["subfield_uuid"])
197
def test_mergeable_list_remove_list(self):
198
"""Test list removal"""
199
value = [1, 2, 3, 4, 5]
200
self.record["subfield_uuid"].append(value)
201
self.record["subfield_uuid"].remove(value)
202
self.assertFalse(value in self.record["subfield_uuid"])
204
def test_mergeable_list_remove_tuple(self):
205
"""Test tuple removal"""
206
value = (1, 2, 3, 4, 5)
207
self.record["subfield_uuid"].append(value)
208
self.record["subfield_uuid"].remove(value)
209
self.assertFalse(value in self.record["subfield_uuid"])
211
def test_mergeable_list_remove_missing(self):
212
"""Test missing data rmeoval"""
213
self.assertRaises(ValueError, self.record["subfield_uuid"].remove,
215
def test_mergeable_list_remove_last(self):
216
"""Test that exception is raised when removing last item."""
217
self.record["subfield_uuid"] = [1]
218
self.assertRaises(ValueError, self.record["subfield_uuid"].remove, 1)
220
def test_mergeable_list_pop_correct_index(self):
221
"""Test the pop method when working with a correct index."""
222
value = [1, 2, 3, 4, 5]
223
self.record["subfield_uuid"] = value
224
# test with negative index
225
poped_value = self.record["subfield_uuid"].pop(-2)
226
self.assertEqual(value[-2], poped_value)
227
# test with positive index
228
poped_value = self.record["subfield_uuid"].pop(1)
229
self.assertEqual(value[1], poped_value)
231
def test_mergeable_list_pop_wrong_index(self):
232
"""Test pop when index is out or range."""
233
value = [1, 2, 3, 4, 5]
234
self.record["subfield_uuid"] = value
235
self.assertRaises(IndexError, self.record["subfield_uuid"].pop,
238
def test_mergeable_list_pop_last(self):
239
"""Test that exception is raised when poping last item"""
240
self.record["subfield_uuid"] = [1]
241
self.assertRaises(ValueError, self.record["subfield_uuid"].pop, 0)
178
243
def test_tuple(self):
179
244
"""Test assigning tuples to a key results in mergeable lists."""
180
245
rec = Record({'record_type': 'http://fnord.org/smorgasbord'})
230
295
globs = { "db": CouchDatabase('testing', create=True, ctx=ctx) }
231
296
results = doctest.testfile('../doc/records.txt', globs=globs)
232
297
self.assertEqual(0, results.failed)
234
299
def test_record_id(self):
235
300
data = {"_id":"recordid"}
236
301
record = Record(data, record_type="url")
240
305
record = Record(data, record_type="url", record_id=record_id)
241
306
self.assertEqual(record_id, record.record_id)
242
307
data = {"_id":"differentid"}
243
self.assertRaises(ValueError,
308
self.assertRaises(ValueError,
244
309
Record, data, record_id=record_id, record_type="url")
246
312
class TestRecordFactory(TestCase):
247
313
"""Test Record/Mergeable List factories."""
250
316
"""Test setup."""
317
super(TestRecordFactory, self).setUp()