changeset 246:ebfe660f7cb1

More/better unit tests for `bitten.model.BuildStep`.
author cmlenz
date Mon, 03 Oct 2005 22:00:23 +0000
parents a22ec8fce6c9
children b28285d3ceec
files bitten/model.py bitten/tests/model.py
diffstat 2 files changed, 38 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/model.py
+++ b/bitten/model.py
@@ -513,7 +513,7 @@
     FAILURE = 'F'
 
     def __init__(self, env, build=None, name=None, description=None,
-                 status=None, started=None, stopped=None, errors=None):
+                 status=None, started=None, stopped=None):
         """Initialize a new build step with the specified attributes.
 
         To actually create this build step in the database, the `insert` method
@@ -526,7 +526,7 @@
         self.status = status
         self.started = started
         self.stopped = stopped
-        self.errors = errors or []
+        self.errors = []
         self._exists = False
 
     exists = property(fget=lambda self: self._exists)
--- a/bitten/tests/model.py
+++ b/bitten/tests/model.py
@@ -306,6 +306,7 @@
 
     def test_new(self):
         step = BuildStep(self.env)
+        self.assertEqual(False, step.exists)
         self.assertEqual(None, step.build)
         self.assertEqual(None, step.name)
 
@@ -313,6 +314,7 @@
         step = BuildStep(self.env, build=1, name='test', description='Foo bar',
                          status=BuildStep.SUCCESS)
         step.insert()
+        self.assertEqual(True, step.exists)
 
         db = self.env.get_db_cnx()
         cursor = db.cursor()
@@ -321,6 +323,23 @@
         self.assertEqual((1, 'test', 'Foo bar', BuildStep.SUCCESS, 0, 0),
                          cursor.fetchone())
 
+    def test_insert_with_errors(self):
+        step = BuildStep(self.env, build=1, name='test', description='Foo bar',
+                         status=BuildStep.SUCCESS)
+        step.errors += ['Foo', 'Bar']
+        step.insert()
+        self.assertEqual(True, step.exists)
+
+        db = self.env.get_db_cnx()
+        cursor = db.cursor()
+        cursor.execute("SELECT build,name,description,status,started,stopped "
+                       "FROM bitten_step")
+        self.assertEqual((1, 'test', 'Foo bar', BuildStep.SUCCESS, 0, 0),
+                         cursor.fetchone())
+        cursor.execute("SELECT message FROM bitten_error ORDER BY orderno")
+        self.assertEqual(('Foo',), cursor.fetchone())
+        self.assertEqual(('Bar',), cursor.fetchone())
+
     def test_insert_no_build_or_name(self):
         step = BuildStep(self.env, name='test')
         self.assertRaises(AssertionError, step.insert) # No build
@@ -355,6 +374,23 @@
         self.assertEqual(BuildStep.SUCCESS, step.status)
         self.assertEqual(['Foo', 'Bar'], step.errors)
 
+    def test_select(self):
+        db = self.env.get_db_cnx()
+        cursor = db.cursor()
+        cursor.executemany("INSERT INTO bitten_step VALUES (%s,%s,%s,%s,%s,%s)",
+                           [(1, 'test', 'Foo bar', BuildStep.SUCCESS, 0, 0),
+                            (1, 'dist', 'Foo baz', BuildStep.FAILURE, 0, 0)])
+
+        steps = list(BuildStep.select(self.env, build=1))
+        self.assertEqual(1, steps[0].build)
+        self.assertEqual('test', steps[0].name)
+        self.assertEqual('Foo bar', steps[0].description)
+        self.assertEqual(BuildStep.SUCCESS, steps[0].status)
+        self.assertEqual(1, steps[1].build)
+        self.assertEqual('dist', steps[1].name)
+        self.assertEqual('Foo baz', steps[1].description)
+        self.assertEqual(BuildStep.FAILURE, steps[1].status)
+
 
 class BuildLogTestCase(unittest.TestCase):
 
Copyright (C) 2012-2017 Edgewall Software