From 63f4b7ec53cc096763233412703f08c138c6c4f7 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Thu, 24 Mar 2016 07:52:54 -0400 Subject: [PATCH] fixes bug 1257146 - Product build types pure implementation --- .../postgresql/product_build_types.py | 2 +- socorro/middleware/middleware_app.py | 1 - .../postgresql/test_product_build_types.py | 6 +- webapp-django/crashstats/crashstats/models.py | 5 +- .../crashstats/crashstats/tests/test_views.py | 106 +++++++++--------- 5 files changed, 58 insertions(+), 62 deletions(-) diff --git a/socorro/external/postgresql/product_build_types.py b/socorro/external/postgresql/product_build_types.py index 4bac06a617..a951b55ee3 100644 --- a/socorro/external/postgresql/product_build_types.py +++ b/socorro/external/postgresql/product_build_types.py @@ -29,7 +29,7 @@ def get(self, **kwargs): sql = """ SELECT build_type, - throttle + throttle::REAL FROM product_build_types WHERE product_name = %(product)s """ diff --git a/socorro/middleware/middleware_app.py b/socorro/middleware/middleware_app.py index 8dc78fc5af..d2050f552d 100755 --- a/socorro/middleware/middleware_app.py +++ b/socorro/middleware/middleware_app.py @@ -53,7 +53,6 @@ ), (r'/field/(.*)', 'field.Field'), (r'/priorityjobs/(.*)', 'priorityjobs.Priorityjobs'), - (r'/products/build_types/(.*)', 'product_build_types.ProductBuildTypes'), (r'/products/(.*)', 'products.Products'), # deprecated (r'/query/', 'query.Query'), (r'/releases/(channels|featured|release)/(.*)', 'releases.Releases'), diff --git a/socorro/unittest/external/postgresql/test_product_build_types.py b/socorro/unittest/external/postgresql/test_product_build_types.py index 4330b3088d..0fff31ac60 100644 --- a/socorro/unittest/external/postgresql/test_product_build_types.py +++ b/socorro/unittest/external/postgresql/test_product_build_types.py @@ -2,8 +2,6 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -from decimal import Decimal - from nose.tools import eq_, assert_raises from socorro.external import MissingArgumentError @@ -91,8 +89,8 @@ def test_get(self): res = product_build_types.get(product='Firefox') res_expected = { 'hits': { - 'release': Decimal('0.2'), - 'beta': Decimal('1.0'), + 'release': 0.2, + 'beta': 1.0, } } eq_(res, res_expected) diff --git a/webapp-django/crashstats/crashstats/models.py b/webapp-django/crashstats/crashstats/models.py index 6cc33987f1..f8b1fa4042 100644 --- a/webapp-django/crashstats/crashstats/models.py +++ b/webapp-django/crashstats/crashstats/models.py @@ -26,6 +26,7 @@ import socorro.external.postgresql.gccrashes import socorro.external.postgresql.crontabber_state import socorro.external.postgresql.adi +import socorro.external.postgresql.product_build_types from socorrolib.app import socorro_app @@ -1723,7 +1724,9 @@ class ADI(SocorroMiddleware): class ProductBuildTypes(SocorroMiddleware): - URL_PREFIX = '/products/build_types/' + implementation = ( + socorro.external.postgresql.product_build_types.ProductBuildTypes + ) required_params = ( 'product', diff --git a/webapp-django/crashstats/crashstats/tests/test_views.py b/webapp-django/crashstats/crashstats/tests/test_views.py index 7873f4ab0b..383205188c 100644 --- a/webapp-django/crashstats/crashstats/tests/test_views.py +++ b/webapp-django/crashstats/crashstats/tests/test_views.py @@ -883,18 +883,17 @@ def mocked_adi_get(**options): models.ADI.implementation().get.side_effect = mocked_adi_get - def mocked_get(url, params, **options): - if '/products/build_types/' in url: - return Response({ - 'hits': { - 'release': 0.1, - 'beta': 1.0, - } - }) - - raise NotImplementedError(url) + def mocked_product_build_types_get(**options): + return { + 'hits': { + 'release': 0.1, + 'beta': 1.0, + } + } - rget.side_effect = mocked_get + models.ProductBuildTypes.implementation().get.side_effect = ( + mocked_product_build_types_get + ) def mocked_supersearch_get(**params): end_date = timezone.now().date() @@ -970,18 +969,17 @@ def mocked_adi_get(**options): models.ADI.implementation().get.side_effect = mocked_adi_get - def mocked_get(url, params, **options): - if '/products/build_types/' in url: - return Response({ - 'hits': { - 'release': 0.1, - 'beta': 1.0, - } - }) - - raise NotImplementedError(url) + def mocked_product_build_types_get(**options): + return { + 'hits': { + 'release': 0.1, + 'beta': 1.0, + } + } - rget.side_effect = mocked_get + models.ProductBuildTypes.implementation().get.side_effect = ( + mocked_product_build_types_get + ) def mocked_supersearch_get(**params): return { @@ -1063,18 +1061,17 @@ def mocked_adi_get(**options): models.ADI.implementation().get.side_effect = mocked_adi_get - def mocked_get(url, params, **options): - if '/products/build_types/' in url: - return Response({ - 'hits': { - 'release': 0.1, - 'beta': 1.0, - } - }) - - raise NotImplementedError(url) + def mocked_product_build_types_get(**options): + return { + 'hits': { + 'release': 0.1, + 'beta': 1.0, + } + } - rget.side_effect = mocked_get + models.ProductBuildTypes.implementation().get.side_effect = ( + mocked_product_build_types_get + ) def mocked_supersearch_get(**params): return { @@ -2189,18 +2186,17 @@ def mocked_adi_get(**options): start_date += datetime.timedelta(days=1) return response - def mocked_get(url, params, **options): - if '/products/build_types/' in url: - return Response({ - 'hits': { - 'release': 0.1, - 'beta': 1.0, - } - }) - - raise NotImplementedError(url) + def mocked_product_build_types_get(**options): + return { + 'hits': { + 'release': 0.1, + 'beta': 1.0, + } + } - rget.side_effect = mocked_get + models.ProductBuildTypes.implementation().get.side_effect = ( + mocked_product_build_types_get + ) models.ADI.implementation().get.side_effect = mocked_adi_get @@ -2387,15 +2383,17 @@ def mocked_adi_get(**options): models.ADI.implementation().get.side_effect = mocked_adi_get - def mocked_get(url, params, **options): - if '/products/build_types/' in url: - return Response({ - 'hits': { - 'release': 0.1, - 'beta': 1.0, - } - }) - raise NotImplementedError(url) + def mocked_product_build_types_get(**options): + return { + 'hits': { + 'release': 0.1, + 'beta': 1.0, + } + } + + models.ProductBuildTypes.implementation().get.side_effect = ( + mocked_product_build_types_get + ) def mocked_product_versions(**params): end_date = timezone.now().strftime('%Y-%m-%d') @@ -2446,8 +2444,6 @@ def mocked_product_versions(**params): mocked_product_versions ) - rget.side_effect = mocked_get - def mocked_supersearch_get(**params): eq_(params['product'], ['WaterWolf']) eq_(params['version'], ['19.0', '18.0b1', '18.0b'])