forked from codeforamerica/cfapi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
factories.py
78 lines (65 loc) · 3.27 KB
/
factories.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# -*- coding: utf8 -*-
import factory
from app import Organization, Project, Event, Story, db, Issue
from factory.alchemy import SQLAlchemyModelFactory
from sqlalchemy.orm import scoped_session, sessionmaker
from random import choice
from datetime import datetime, timedelta
class OrganizationFactory(SQLAlchemyModelFactory):
FACTORY_FOR = Organization
FACTORY_SESSION = db.session
name = factory.Sequence(lambda n: u'Civiç Örganizatioñ {0}'.format(n))
website = factory.Sequence(lambda n: 'http://www.civicorganization{0}.com'.format(n))
events_url = factory.Sequence(lambda n: 'http://www.meetup.com.com/events/civicproject{0}'.format(n))
rss = factory.Sequence(lambda n: 'http://www.civicorganization{0}.rss'.format(n))
projects_list_url = factory.Sequence(lambda n: 'http://www.civicorganization{0}.com/projects'.format(n))
city = "San Francisco, CA"
latitude = 37.7749
longitude = -122.4194
type = "Brigade"
class ProjectFactory(SQLAlchemyModelFactory):
FACTORY_FOR = Project
FACTORY_SESSION = db.session
name = 'Civic Project'
code_url = 'http://www.github.com/civic-project'
link_url = 'http://www.civicproject.com'
description = 'This is a description'
type = factory.LazyAttribute(lambda n: choice(['web service', 'api', 'data standard']))
categories = factory.LazyAttribute(lambda n: choice(['housing', 'community engagement', 'criminal justice', 'education']))
github_details = {'repo': 'git@github.com:codeforamerica/civic-project.git'}
organization_name = factory.LazyAttribute(lambda e: OrganizationFactory().name)
class EventFactory(SQLAlchemyModelFactory):
FACTORY_FOR = Event
FACTORY_SESSION = db.session
FACTORY_HIDDEN_ARGS = ('now',)
name = factory.Sequence(lambda n: 'Civic Event {0}'.format(n))
description = 'A civic event'
event_url = factory.Sequence(lambda n: 'http://www.meetup.com/civic-project-hack-night{0}'.format(n))
location = '155 9th St., San Francisco, CA'
now = factory.LazyAttribute(lambda o: datetime.utcnow())
start_time_notz = factory.LazyAttribute(lambda o: o.now + timedelta(hours=10))
end_time_notz = factory.LazyAttribute(lambda o: o.now + timedelta(hours=12))
utc_offset = -28800
created_at = factory.LazyAttribute(lambda o: o.now)
organization_name = factory.LazyAttribute(lambda e: OrganizationFactory().name)
class StoryFactory(SQLAlchemyModelFactory):
FACTORY_FOR = Story
FACTORY_SESSION = db.session
title = factory.Sequence(lambda n: 'Civic Story {0}'.format(n))
link = 'http://www.codeforamerica.org/blog/2014/03/19/thanks-again-for-your-support-esri/'
type = "blog"
organization_name = factory.LazyAttribute(lambda e: OrganizationFactory().name)
class IssueFactory(SQLAlchemyModelFactory):
FACTORY_FOR = Issue
FACTORY_SESSION = db.session
title = factory.Sequence(lambda n: 'Civic Issue {0}'.format(n))
html_url = factory.Sequence(lambda n: 'http://www.github.com/codeforamerica/cfapi/issues/{0}'.format(n))
labels = [
{
"color": "84b6eb",
"name": "enhancement",
"url": "https://api.github.com/repos/codeforamerica/cfapi/labels/enhancement"
}
]
body = factory.Sequence(lambda n: 'Civic Issue blah blah blah {0}'.format(n))
project_id = 1