diff --git a/.github/workflows/tests-py38.yml b/.github/workflows/tests-py38.yml index afa63853..95c5aadc 100644 --- a/.github/workflows/tests-py38.yml +++ b/.github/workflows/tests-py38.yml @@ -17,7 +17,11 @@ jobs: python-version: 3.8 - name: docker-compose - run: docker-compose -f .actions-docker-compose.yml up -d + run: docker compose -f .actions-docker-compose.yml up -d + + - run: | + sudo apt-get update + sudo apt-get install pkg-config libxml2-dev libxmlsec1-dev libxmlsec1-openssl - name: cache pip uses: actions/cache@v2 @@ -30,7 +34,7 @@ jobs: - name: pip install run: | - python -m pip install --upgrade pip wheel setuptools + python -m pip install --upgrade pip==24.0 wheel setuptools pip install -r dev-requirements.txt - name: flake8 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2427ff76..00208a70 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: python-version: 3.6 - name: docker-compose - run: docker-compose -f .actions-docker-compose.yml up -d + run: docker compose -f .actions-docker-compose.yml up -d - run: | sudo apt-get update @@ -76,4 +76,4 @@ jobs: run: npm run test - name: build - run: npm run build + run: npm run build \ No newline at end of file diff --git a/dev-requirements.txt b/dev-requirements.txt index 541fde94..a1de46a2 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -3,7 +3,7 @@ flake8 sphinx sphinx-autobuild -pytest==3.10.0 +pytest==7.0.0 pytest-cov==2.6.1 pytest-mock==1.10.1 responses>=0.10.6,<0.11 diff --git a/tests/test_agenda.py b/tests/test_agenda.py index 08e66d98..a08a841f 100644 --- a/tests/test_agenda.py +++ b/tests/test_agenda.py @@ -12,6 +12,7 @@ from .utils import post_json, delete_json, get_json, get_admin_user_id, mock_send_email from copy import deepcopy from bson import ObjectId +from pytest import fixture date_time_format = '%Y-%m-%dT%H:%M:%S' @@ -78,14 +79,14 @@ def mock_utcnow(): return datetime.strptime('2018-11-23T22:00:00', date_time_format) - +@fixture def test_item_detail(client): resp = client.get('/agenda/urn:conference') assert resp.status_code == 200 assert 'urn:conference' in resp.get_data().decode() assert 'Conference Planning' in resp.get_data().decode() - +@fixture def test_item_json(client): resp = client.get('/agenda/urn:conference?format=json') data = json.loads(resp.get_data()) @@ -95,7 +96,7 @@ def test_item_json(client): assert 'internal_note' in data['planning_items'][0] assert 'internal_note' in data['coverages'][0]['planning'] - +@fixture def test_item_json_does_not_return_files(client, app): # public user with client.session_transaction() as session: @@ -109,14 +110,14 @@ def test_item_json_does_not_return_files(client, app): assert 'internal_note' not in data['planning_items'][0] assert 'internal_note' not in data['coverages'][0]['planning'] - +@fixture def get_bookmarks_count(client, user): resp = client.get('/agenda/search?bookmarks=%s' % str(user)) assert resp.status_code == 200 data = json.loads(resp.get_data()) return data['_meta']['total'] - +@fixture def test_bookmarks(client, app): user_id = get_admin_user_id(app) assert user_id @@ -137,7 +138,7 @@ def test_bookmarks(client, app): assert 0 == get_bookmarks_count(client, user_id) - +@fixture def test_item_copy(client, app): resp = client.post('/wire/{}/copy?type=agenda'.format('urn:conference'), content_type='application/json') assert resp.status_code == 200 @@ -149,7 +150,7 @@ def test_item_copy(client, app): user_id = get_admin_user_id(app) assert str(user_id) in data['copies'] - +@fixture @mock.patch('newsroom.wire.views.send_email', mock_send_email) def test_share_items(client, app, mocker): user_ids = app.data.insert('users', [{ @@ -182,7 +183,7 @@ def test_share_items(client, app, mocker): user_id = get_admin_user_id(app) assert str(user_id) in data['shares'] - +@fixture def test_agenda_search_filtered_by_query_product(client, app): app.data.insert('navigations', [{ '_id': 51, @@ -232,7 +233,7 @@ def test_agenda_search_filtered_by_query_product(client, app): assert 1 == len(data['_items']) assert '_aggregations' in data - +@fixture @mock.patch('newsroom.agenda.email.send_email', mock_send_email) def test_coverage_request(client, app): post_json(client, '/settings/general_settings', {'coverage_request_recipients': 'admin@bar.com'}) @@ -251,7 +252,7 @@ def test_coverage_request(client, app): assert 'http://localhost:5050/agenda?item={}'.format(parse.quote('urn:conference')) in outbox[0].body assert 'Some info message' in outbox[0].body - +@fixture def test_watch_event(client, app): user_id = get_admin_user_id(app) assert 0 == get_bookmarks_count(client, user_id) @@ -262,7 +263,7 @@ def test_watch_event(client, app): delete_json(client, '/agenda_watch', {'items': ['urn:conference']}) assert 0 == get_bookmarks_count(client, user_id) - +@fixture def test_watch_coverages(client, app): user_id = get_admin_user_id(app) @@ -274,7 +275,7 @@ def test_watch_coverages(client, app): after_watch_item = get_entity_or_404('urn:conference', 'agenda') assert after_watch_item['coverages'][0]['watches'] == [user_id] - +@fixture def test_unwatch_coverages(client, app): user_id = get_admin_user_id(app) @@ -294,7 +295,7 @@ def test_unwatch_coverages(client, app): after_watch_item = get_entity_or_404('urn:conference', 'agenda') assert after_watch_item['coverages'][0]['watches'] == [] - +@fixture def test_remove_watch_coverages_on_watch_item(client, app): user_id = ObjectId(get_admin_user_id(app)) other_user_id = PUBLIC_USER_ID @@ -317,7 +318,7 @@ def test_remove_watch_coverages_on_watch_item(client, app): assert after_watch_item['coverages'][0]['watches'] == [str(other_user_id)] assert after_watch_item['watches'] == [user_id] - +@fixture def test_fail_watch_coverages(client, app): user_id = get_admin_user_id(app) @@ -343,7 +344,7 @@ def test_fail_watch_coverages(client, app): content_type='application/json') assert resp.status_code == 403 - +@fixture @mock.patch('newsroom.utils.get_utcnow', mock_utcnow) def test_local_time(client, app, mocker): # 9 am Sydney Time - day light saving on @@ -371,7 +372,7 @@ def test_local_time(client, app, mocker): end_date = get_end_date('now/M', end_local_date) assert '2018-12-23T12:59:59' == end_date.strftime(date_time_format) - +@fixture def test_get_location_string(): agenda = {} assert get_location_string(agenda) == '' @@ -401,7 +402,7 @@ def test_get_location_string(): }] assert get_location_string(agenda) == 'Sydney Opera House, 2 Macquarie Street, Sydney, Sydney, 2000, Australia' - +@fixture def test_get_public_contacts(): agenda = {} assert get_public_contacts(agenda) == [] @@ -435,7 +436,7 @@ def test_get_public_contacts(): 'mobile': '' }] - +@fixture def test_get_agenda_dates(): agenda = { 'dates': { @@ -469,7 +470,7 @@ def test_get_agenda_dates(): } assert get_agenda_dates(agenda) == '08:00 30/05/2018' - +@fixture def test_filter_agenda_by_coverage_status(client): client.post('/push', data=json.dumps(test_planning), content_type='application/json') @@ -496,7 +497,7 @@ def test_filter_agenda_by_coverage_status(client): assert 'bar' == data['_items'][1]['_id'] assert 'urn:conference' == data['_items'][2]['_id'] - +@fixture def test_filter_events_only(client): test_planning = { "description_text": "description here", @@ -571,7 +572,7 @@ def test_filter_events_only(client): assert 'planning_items' not in data['_items'][0] assert 'coverages' not in data['_items'][0] - +@fixture def test_related_wire_items(client, app): test_planning_with_coveragre = deepcopy(test_planning) test_planning_with_coveragre["coverages"] = [