Procházet zdrojové kódy

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 před 11 roky
rodič
revize
0a9b01448d
2 změnil soubory, kde provedl 51 přidání a 34 odebrání
  1. 50
    33
      oscar/test/newfactories.py
  2. 1
    1
      setup.py

+ 50
- 33
oscar/test/newfactories.py Zobrazit soubor

@@ -23,14 +23,13 @@ __all__ = ["UserFactory", "CountryFactory", "UserAddressFactory",
23 23
            "StockRecordFactory", "ProductAttributeFactory",
24 24
            "ProductAttributeValueFactory", "AttributeOptionGroupFactory",
25 25
            "AttributeOptionFactory", "PartnerFactory",
26
-           "ProductCategoryFactory", "CategoryFactory", "RangeFactory"]
26
+           "ProductCategoryFactory", "CategoryFactory", "RangeFactory",
27
+           "ProductClassFactory"]
27 28
 
28 29
 Selector = get_class('partner.strategy', 'Selector')
29 30
 
30 31
 
31 32
 class UserFactory(factory.DjangoModelFactory):
32
-    FACTORY_FOR = get_user_model()
33
-
34 33
     username = factory.Sequence(lambda n: 'the_j_meister nummer %d' % n)
35 34
     email = factory.Sequence(lambda n: 'example_%s@example.com' % n)
36 35
     first_name = 'joseph'
@@ -40,17 +39,19 @@ class UserFactory(factory.DjangoModelFactory):
40 39
     is_superuser = False
41 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 47
     iso_3166_1_a2 = 'GB'
48 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 55
     title = "Dr"
55 56
     first_name = "Barry"
56 57
     last_name = 'Barrington'
@@ -60,70 +61,81 @@ class UserAddressFactory(factory.DjangoModelFactory):
60 61
     country = factory.SubFactory(CountryFactory)
61 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 69
     @factory.post_generation
68 70
     def set_strategy(self, create, extracted, **kwargs):
69 71
         # Load default strategy (without a user/request)
70 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 79
     name = "My voucher"
77 80
     code = "MYVOUCHER"
78 81
 
79 82
     start_datetime = now() - datetime.timedelta(days=1)
80 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 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 97
     partner = factory.SubFactory(PartnerFactory)
93 98
     partner_sku = factory.Sequence(lambda n: 'unit%d' % n)
94 99
     price_currency = "GBP"
95 100
     price_excl_tax = D('9.99')
96 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 108
     name = "Books"
103 109
     requires_shipping = True
104 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 117
     name = factory.Sequence(lambda n: 'Category %d' % n)
111 118
 
112 119
     # Very naive handling of treebeard node fields. Works though!
113 120
     depth = 0
114 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 128
     category = factory.SubFactory(CategoryFactory)
121 129
 
130
+    class Meta:
131
+        model = get_model('catalogue', 'ProductCategory')
132
+
122 133
 
123 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 139
     upc = factory.Sequence(lambda n: '978080213020%d' % n)
128 140
     title = "A confederacy of dunces"
129 141
     product_class = factory.SubFactory(ProductClassFactory)
@@ -133,38 +145,43 @@ class ProductFactory(factory.DjangoModelFactory):
133 145
 
134 146
 
135 147
 class ProductAttributeFactory(factory.DjangoModelFactory):
136
-    FACTORY_FOR = get_model('catalogue', 'ProductAttribute')
137
-
138 148
     code = name = 'weight'
139 149
     product_class = factory.SubFactory(ProductClassFactory)
140 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 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 164
     # Ideally we'd get_or_create a AttributeOptionGroup here, but I'm not
153 165
     # aware of how to not create a unique option group for each call of the
154 166
     # factory
155 167
 
156 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 175
     attribute = factory.SubFactory(ProductAttributeFactory)
163 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 183
     name = factory.Sequence(lambda n: 'Range %d' % n)
170 184
     slug = factory.Sequence(lambda n: 'range-%d' % n)
185
+
186
+    class Meta:
187
+        model = get_model('offer', 'Range')

+ 1
- 1
setup.py Zobrazit soubor

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

Načítá se…
Zrušit
Uložit