source: OpenWorkouts-current/ow/tests/test_catalog.py @ 5ec3a0b

currentfeature/docs
Last change on this file since 5ec3a0b was 5ec3a0b, checked in by borja <borja@…>, 5 years ago

Imported sources from the old python2-only repository:

  • Modified the code so it is python 3.6 compatible
  • Fixed deprecation warnings, pyramid 1.10.x supported now
  • Fixed deprecation warnings about some libraries, like pyramid-simpleform
  • Added pytest-pycodestyle and pytest-flakes for automatic checks on the source code files when running tests.
  • Added default pytest.ini setup to enforce some default parameters when running tests.
  • Cleaned up the code a bit, catched up with tests coverage.
  • Property mode set to 100644
File size: 3.6 KB
Line 
1from datetime import datetime, timedelta, timezone
2
3import pytest
4
5from repoze.catalog.catalog import Catalog
6from repoze.catalog.indexes.field import CatalogFieldIndex
7from repoze.catalog.query import Eq
8
9from ow.models.workout import Workout
10from ow.models.user import User
11from ow.models.root import OpenWorkouts
12
13from ow.catalog import (
14    get_catalog,
15    update_indexes,
16    install_catalog,
17    remove_from_catalog,
18    resources_from_query_results
19    )
20
21
22class TestCatalog(object):
23
24    @pytest.fixture
25    def root(self):
26        root = OpenWorkouts()
27        root['john'] = User(firstname='John', lastname='Doe',
28                            email='john.doe@example.net')
29        root['john'].password = 's3cr3t'
30        workout = Workout(
31            start=datetime(2015, 6, 28, 12, 55, tzinfo=timezone.utc),
32            duration=timedelta(minutes=60),
33            distance=30, sport='cycling'
34        )
35        root['john'].add_workout(workout)
36        return root
37
38    def test_update_indexes_no_changes(self, root):
39        catalog = get_catalog(root)
40        indexes = root._get_catalog_indexes()
41        changes = update_indexes(catalog, indexes)
42        assert changes['added'] == []
43        assert changes['removed'] == []
44
45    def test_update_indexes_added(self, root):
46        catalog = get_catalog(root)
47        indexes = root._get_catalog_indexes()
48        indexes['newindex'] = CatalogFieldIndex('newindex')
49        changes = update_indexes(catalog, indexes)
50        assert changes['added'] == ['newindex']
51        assert changes['removed'] == []
52
53    def test_update_indexes_removed(self, root):
54        catalog = get_catalog(root)
55        indexes = {'newindex': CatalogFieldIndex('newindex')}
56        changes = update_indexes(catalog, indexes)
57        assert changes['added'] == ['newindex']
58        assert changes['removed'] == ['sport']
59
60    def test_update_indexes_empty(self, root):
61        catalog = get_catalog(root)
62        indexes = {}
63        changes = update_indexes(catalog, indexes)
64        assert changes['added'] == []
65        assert changes['removed'] == ['sport']
66
67    def test_install_catalog(self):
68        root = OpenWorkouts()
69        assert getattr(root, 'catalog', None) is None
70        install_catalog(root)
71        assert isinstance(getattr(root, 'catalog', None), Catalog)
72
73    def test_get_catalog_existing_catalog(self, root):
74        assert isinstance(getattr(root, 'catalog', None), Catalog)
75        catalog = get_catalog(root)
76        assert catalog == root.catalog
77
78    def test_get_catalog_not_existing_catalog(self):
79        root = OpenWorkouts()
80        assert getattr(root, 'catalog', None) is None
81        catalog = get_catalog(root)
82        assert isinstance(getattr(root, 'catalog', None), Catalog)
83        assert catalog == root.catalog
84
85    def test_get_catalog_root_child(self, root):
86        user = root['john']
87        assert getattr(user, 'catalog', None) is None
88        catalog = get_catalog(user)
89        assert getattr(user, 'catalog', None) is None
90        assert isinstance(getattr(root, 'catalog', None), Catalog)
91        assert catalog == root.catalog
92
93    def test_remove_from_catalog(self, root):
94        catalog = get_catalog(root)
95        number, results = catalog.query(Eq('sport', 'cycling'))
96        assert number == 1
97        remove_from_catalog(catalog, root['john']['1'])
98        number, results = catalog.query(Eq('sport', 'cycling'))
99        assert number == 0
100
101    def test_resources_from_query_results(self, root):
102        catalog = get_catalog(root)
103        number, results = catalog.query(Eq('sport', 'cycling'))
104        resources = resources_from_query_results(catalog, results, root)
105        assert root['john']['1'] in list(resources)
Note: See TracBrowser for help on using the repository browser.