Browse Source

Upgrade to factory-boy 2.4.1

Factory Boy got a new syntax in 2.4, and was released a while ago. As
Oscar's test factories are semi-public API, it's a nice gesture to
upgrade.
master
Maik Hoepfel 11 years ago
parent
commit
0a9b01448d
2 changed files with 51 additions and 34 deletions
  1. 50
    33
      oscar/test/newfactories.py
  2. 1
    1
      setup.py

+ 50
- 33
oscar/test/newfactories.py View File

23
            "StockRecordFactory", "ProductAttributeFactory",
23
            "StockRecordFactory", "ProductAttributeFactory",
24
            "ProductAttributeValueFactory", "AttributeOptionGroupFactory",
24
            "ProductAttributeValueFactory", "AttributeOptionGroupFactory",
25
            "AttributeOptionFactory", "PartnerFactory",
25
            "AttributeOptionFactory", "PartnerFactory",
26
-           "ProductCategoryFactory", "CategoryFactory", "RangeFactory"]
26
+           "ProductCategoryFactory", "CategoryFactory", "RangeFactory",
27
+           "ProductClassFactory"]
27
 
28
 
28
 Selector = get_class('partner.strategy', 'Selector')
29
 Selector = get_class('partner.strategy', 'Selector')
29
 
30
 
30
 
31
 
31
 class UserFactory(factory.DjangoModelFactory):
32
 class UserFactory(factory.DjangoModelFactory):
32
-    FACTORY_FOR = get_user_model()
33
-
34
     username = factory.Sequence(lambda n: 'the_j_meister nummer %d' % n)
33
     username = factory.Sequence(lambda n: 'the_j_meister nummer %d' % n)
35
     email = factory.Sequence(lambda n: 'example_%s@example.com' % n)
34
     email = factory.Sequence(lambda n: 'example_%s@example.com' % n)
36
     first_name = 'joseph'
35
     first_name = 'joseph'
40
     is_superuser = False
39
     is_superuser = False
41
     is_staff = False
40
     is_staff = False
42
 
41
 
42
+    class Meta:
43
+        model = get_user_model()
43
 
44
 
44
-class CountryFactory(factory.DjangoModelFactory):
45
-    FACTORY_FOR = get_model('address', 'Country')
46
 
45
 
46
+class CountryFactory(factory.DjangoModelFactory):
47
     iso_3166_1_a2 = 'GB'
47
     iso_3166_1_a2 = 'GB'
48
     name = "UNITED KINGDOM"
48
     name = "UNITED KINGDOM"
49
 
49
 
50
+    class Meta:
51
+        model = get_model('address', 'Country')
50
 
52
 
51
-class UserAddressFactory(factory.DjangoModelFactory):
52
-    FACTORY_FOR = get_model('address', 'UserAddress')
53
 
53
 
54
+class UserAddressFactory(factory.DjangoModelFactory):
54
     title = "Dr"
55
     title = "Dr"
55
     first_name = "Barry"
56
     first_name = "Barry"
56
     last_name = 'Barrington'
57
     last_name = 'Barrington'
60
     country = factory.SubFactory(CountryFactory)
61
     country = factory.SubFactory(CountryFactory)
61
     user = factory.SubFactory(UserFactory)
62
     user = factory.SubFactory(UserFactory)
62
 
63
 
64
+    class Meta:
65
+        model = get_model('address', 'UserAddress')
63
 
66
 
64
-class BasketFactory(factory.DjangoModelFactory):
65
-    FACTORY_FOR = get_model('basket', 'Basket')
66
 
67
 
68
+class BasketFactory(factory.DjangoModelFactory):
67
     @factory.post_generation
69
     @factory.post_generation
68
     def set_strategy(self, create, extracted, **kwargs):
70
     def set_strategy(self, create, extracted, **kwargs):
69
         # Load default strategy (without a user/request)
71
         # Load default strategy (without a user/request)
70
         self.strategy = Selector().strategy()
72
         self.strategy = Selector().strategy()
71
 
73
 
74
+    class Meta:
75
+        model = get_model('basket', 'Basket')
72
 
76
 
73
-class VoucherFactory(factory.DjangoModelFactory):
74
-    FACTORY_FOR = get_model('voucher', 'Voucher')
75
 
77
 
78
+class VoucherFactory(factory.DjangoModelFactory):
76
     name = "My voucher"
79
     name = "My voucher"
77
     code = "MYVOUCHER"
80
     code = "MYVOUCHER"
78
 
81
 
79
     start_datetime = now() - datetime.timedelta(days=1)
82
     start_datetime = now() - datetime.timedelta(days=1)
80
     end_datetime = now() - datetime.timedelta(days=10)
83
     end_datetime = now() - datetime.timedelta(days=10)
81
 
84
 
85
+    class Meta:
86
+        model = get_model('voucher', 'Voucher')
82
 
87
 
83
-class PartnerFactory(factory.DjangoModelFactory):
84
-    FACTORY_FOR = get_model('partner', 'Partner')
85
 
88
 
89
+class PartnerFactory(factory.DjangoModelFactory):
86
     name = "Gardners"
90
     name = "Gardners"
87
 
91
 
92
+    class Meta:
93
+        model = get_model('partner', 'Partner')
88
 
94
 
89
-class StockRecordFactory(factory.DjangoModelFactory):
90
-    FACTORY_FOR = get_model('partner', 'StockRecord')
91
 
95
 
96
+class StockRecordFactory(factory.DjangoModelFactory):
92
     partner = factory.SubFactory(PartnerFactory)
97
     partner = factory.SubFactory(PartnerFactory)
93
     partner_sku = factory.Sequence(lambda n: 'unit%d' % n)
98
     partner_sku = factory.Sequence(lambda n: 'unit%d' % n)
94
     price_currency = "GBP"
99
     price_currency = "GBP"
95
     price_excl_tax = D('9.99')
100
     price_excl_tax = D('9.99')
96
     num_in_stock = 100
101
     num_in_stock = 100
97
 
102
 
103
+    class Meta:
104
+        model = get_model('partner', 'StockRecord')
98
 
105
 
99
-class ProductClassFactory(factory.DjangoModelFactory):
100
-    FACTORY_FOR = get_model('catalogue', 'ProductClass')
101
 
106
 
107
+class ProductClassFactory(factory.DjangoModelFactory):
102
     name = "Books"
108
     name = "Books"
103
     requires_shipping = True
109
     requires_shipping = True
104
     track_stock = True
110
     track_stock = True
105
 
111
 
112
+    class Meta:
113
+        model = get_model('catalogue', 'ProductClass')
106
 
114
 
107
-class CategoryFactory(factory.DjangoModelFactory):
108
-    FACTORY_FOR = get_model('catalogue', 'Category')
109
 
115
 
116
+class CategoryFactory(factory.DjangoModelFactory):
110
     name = factory.Sequence(lambda n: 'Category %d' % n)
117
     name = factory.Sequence(lambda n: 'Category %d' % n)
111
 
118
 
112
     # Very naive handling of treebeard node fields. Works though!
119
     # Very naive handling of treebeard node fields. Works though!
113
     depth = 0
120
     depth = 0
114
     path = factory.Sequence(lambda n: '%04d' % n)
121
     path = factory.Sequence(lambda n: '%04d' % n)
115
 
122
 
123
+    class Meta:
124
+        model = get_model('catalogue', 'Category')
116
 
125
 
117
-class ProductCategoryFactory(factory.DjangoModelFactory):
118
-    FACTORY_FOR = get_model('catalogue', 'ProductCategory')
119
 
126
 
127
+class ProductCategoryFactory(factory.DjangoModelFactory):
120
     category = factory.SubFactory(CategoryFactory)
128
     category = factory.SubFactory(CategoryFactory)
121
 
129
 
130
+    class Meta:
131
+        model = get_model('catalogue', 'ProductCategory')
132
+
122
 
133
 
123
 class ProductFactory(factory.DjangoModelFactory):
134
 class ProductFactory(factory.DjangoModelFactory):
124
-    FACTORY_FOR = get_model('catalogue', 'Product')
135
+    class Meta:
136
+        model = get_model('catalogue', 'Product')
125
 
137
 
126
-    structure = FACTORY_FOR.STANDALONE
138
+    structure = Meta.model.STANDALONE
127
     upc = factory.Sequence(lambda n: '978080213020%d' % n)
139
     upc = factory.Sequence(lambda n: '978080213020%d' % n)
128
     title = "A confederacy of dunces"
140
     title = "A confederacy of dunces"
129
     product_class = factory.SubFactory(ProductClassFactory)
141
     product_class = factory.SubFactory(ProductClassFactory)
133
 
145
 
134
 
146
 
135
 class ProductAttributeFactory(factory.DjangoModelFactory):
147
 class ProductAttributeFactory(factory.DjangoModelFactory):
136
-    FACTORY_FOR = get_model('catalogue', 'ProductAttribute')
137
-
138
     code = name = 'weight'
148
     code = name = 'weight'
139
     product_class = factory.SubFactory(ProductClassFactory)
149
     product_class = factory.SubFactory(ProductClassFactory)
140
     type = "float"
150
     type = "float"
141
 
151
 
152
+    class Meta:
153
+        model = get_model('catalogue', 'ProductAttribute')
142
 
154
 
143
-class AttributeOptionGroupFactory(factory.DjangoModelFactory):
144
-    FACTORY_FOR = get_model('catalogue', 'AttributeOptionGroup')
145
 
155
 
156
+class AttributeOptionGroupFactory(factory.DjangoModelFactory):
146
     name = u'Grüppchen'
157
     name = u'Grüppchen'
147
 
158
 
159
+    class Meta:
160
+        model = get_model('catalogue', 'AttributeOptionGroup')
148
 
161
 
149
-class AttributeOptionFactory(factory.DjangoModelFactory):
150
-    FACTORY_FOR = get_model('catalogue', 'AttributeOption')
151
 
162
 
163
+class AttributeOptionFactory(factory.DjangoModelFactory):
152
     # Ideally we'd get_or_create a AttributeOptionGroup here, but I'm not
164
     # Ideally we'd get_or_create a AttributeOptionGroup here, but I'm not
153
     # aware of how to not create a unique option group for each call of the
165
     # aware of how to not create a unique option group for each call of the
154
     # factory
166
     # factory
155
 
167
 
156
     option = factory.Sequence(lambda n: 'Option %d' % n)
168
     option = factory.Sequence(lambda n: 'Option %d' % n)
157
 
169
 
170
+    class Meta:
171
+        model = get_model('catalogue', 'AttributeOption')
158
 
172
 
159
-class ProductAttributeValueFactory(factory.DjangoModelFactory):
160
-    FACTORY_FOR = get_model('catalogue', 'ProductAttributeValue')
161
 
173
 
174
+class ProductAttributeValueFactory(factory.DjangoModelFactory):
162
     attribute = factory.SubFactory(ProductAttributeFactory)
175
     attribute = factory.SubFactory(ProductAttributeFactory)
163
     product = factory.SubFactory(ProductFactory)
176
     product = factory.SubFactory(ProductFactory)
164
 
177
 
178
+    class Meta:
179
+        model = get_model('catalogue', 'ProductAttributeValue')
165
 
180
 
166
-class RangeFactory(factory.DjangoModelFactory):
167
-    FACTORY_FOR = get_model('offer', 'Range')
168
 
181
 
182
+class RangeFactory(factory.DjangoModelFactory):
169
     name = factory.Sequence(lambda n: 'Range %d' % n)
183
     name = factory.Sequence(lambda n: 'Range %d' % n)
170
     slug = factory.Sequence(lambda n: 'range-%d' % n)
184
     slug = factory.Sequence(lambda n: 'range-%d' % n)
185
+
186
+    class Meta:
187
+        model = get_model('offer', 'Range')

+ 1
- 1
setup.py View File

60
           # Used for oscar.test.contextmanagers.mock_signal_receiver
60
           # Used for oscar.test.contextmanagers.mock_signal_receiver
61
           'mock>=1.0.1,<1.1',
61
           'mock>=1.0.1,<1.1',
62
           # Used for oscar.test.newfactories
62
           # Used for oscar.test.newfactories
63
-          'factory-boy>=2.3.1,<2.4',
63
+          'factory-boy>=2.4.1,<2.5',
64
           # Used for automatically building larger HTML tables
64
           # Used for automatically building larger HTML tables
65
           'django-tables2==0.15.0',
65
           'django-tables2==0.15.0',
66
       ],
66
       ],

Loading…
Cancel
Save