Merge lp:~salgado/offspring/object-factory into lp:~linaro-automation/offspring/linaro

Proposed by Guilherme Salgado
Status: Merged
Approved by: James Tunnicliffe
Approved revision: no longer in the source branch.
Merged at revision: 52
Proposed branch: lp:~salgado/offspring/object-factory
Merge into: lp:~linaro-automation/offspring/linaro
Diff against target: 114 lines (+108/-0)
1 file modified
lib/offspring/web/queuemanager/tests/factory.py (+108/-0)
To merge this branch: bzr merge lp:~salgado/offspring/object-factory
Reviewer Review Type Date Requested Status
James Tunnicliffe (community) Approve
Review via email: mp+76742@code.launchpad.net

Description of the change

Create a new factory of (django) model objects to be used in tests

To post a comment you must log in.
Revision history for this message
James Tunnicliffe (dooferlad) wrote :

Looks good.

review: Approve
lp:~salgado/offspring/object-factory updated
30. By Guilherme Salgado

Fix one final place which was using offspring-builder-script instead of offspring-builder-config

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added directory 'lib/offspring/web/queuemanager/tests'
=== added file 'lib/offspring/web/queuemanager/tests/__init__.py'
=== added file 'lib/offspring/web/queuemanager/tests/factory.py'
--- lib/offspring/web/queuemanager/tests/factory.py 1970-01-01 00:00:00 +0000
+++ lib/offspring/web/queuemanager/tests/factory.py 2011-09-23 13:55:27 +0000
@@ -0,0 +1,108 @@
1from itertools import count
2
3from django.contrib.auth.models import User
4from django_group_access.models import AccessGroup
5
6from offspring.web.queuemanager.models import (
7 BuildRequest,
8 BuildResult,
9 Lexbuilder,
10 Project,
11 Release)
12
13
14class ObjectFactory(object):
15
16 def __init__(self):
17 self.counter = count()
18
19 def getUniqueEmailAddress(self):
20 return "%s@example.com" % self.getUniqueString('email')
21
22 def getUniqueString(self, prefix=None):
23 """Return a string unique to this factory instance.
24
25 :param prefix: Used as a prefix for the unique string. If unspecified,
26 defaults to 'generic-string'.
27 """
28 if prefix is None:
29 prefix = "generic-string"
30 string = "%s%s" % (prefix, self.getUniqueInteger())
31 return string.lower()
32
33 def getUniqueInteger(self):
34 """Return an integer unique to this factory instance."""
35 return self.counter.next()
36
37 def makeAccessGroup(self, users):
38 name = self.getUniqueString()
39 group = AccessGroup(name=name)
40 group.save()
41 for user in users:
42 group.members.add(user)
43 group.save()
44 return group
45
46 def makeUser(self):
47 userid = password = self.getUniqueString()
48 user = User.objects.create_user(
49 userid, self.getUniqueEmailAddress(), password)
50 user.save()
51 return user
52
53 def makeProject(self, name=None, title=None, is_private=False,
54 owner=None, access_groups=[]):
55 if name is None:
56 name = self.getUniqueString()
57 if title is None:
58 title = self.getUniqueString()
59 if owner is None:
60 owner = self.makeUser()
61 project = Project(
62 name=name, title=title, is_private=is_private, owner=owner)
63 project.save()
64 for group in access_groups:
65 project.access_groups.add(group)
66 project.save()
67 return project
68
69 def makeBuildResult(self, project=None):
70 if project is None:
71 project = self.makeProject()
72 project.save()
73 result = BuildResult(project=project)
74 result.save()
75 return result
76
77 def makeRelease(self, build=None, name=None, creator=None):
78 if build is None:
79 build = self.makeBuildResult()
80 if name is None:
81 name = self.getUniqueString()
82 if creator is None:
83 creator = self.makeUser()
84 release = Release(build=build, name=name, creator=creator)
85 release.save()
86 return release
87
88 def makeLexbuilder(self, name=None, uri=None, current_job=None):
89 if name is None:
90 name = self.getUniqueString()
91 if uri is None:
92 uri = 'htt://example.com/%s' % name
93 if current_job is None:
94 current_job = self.makeBuildResult()
95 builder = Lexbuilder(name=name, uri=uri, current_job=current_job)
96 builder.save()
97 return builder
98
99 def makeBuildRequest(self, project=None):
100 if project is None:
101 project = self.makeProject()
102 project.save()
103 request = BuildRequest(project=project)
104 request.save()
105 return request
106
107
108factory = ObjectFactory()

Subscribers

People subscribed via source and target branches