-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #15 from meaningfy-ws/feature/TED-84
Feature/ted 84
- Loading branch information
Showing
22 changed files
with
198 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
from typing import Iterator | ||
from pymongo import MongoClient | ||
from ted_sws.domain.adapters.repository_abc import NoticeRepositoryABC | ||
from ted_sws.domain.model.notice import Notice | ||
|
||
|
||
class NoticeRepository(NoticeRepositoryABC): | ||
""" | ||
This repository is intended for storing Notice objects. | ||
""" | ||
|
||
_collection_name = "notice_collection" | ||
_database_name = "notice_db" | ||
|
||
def __init__(self, mongodb_client: MongoClient, database_name: str = None): | ||
mongodb_client = mongodb_client | ||
notice_db = mongodb_client[database_name if database_name else self._database_name] | ||
self.collection = notice_db[self._collection_name] | ||
|
||
def add(self, notice: Notice): | ||
""" | ||
This method allows you to add notice objects to the repository. | ||
:param notice: | ||
:return: | ||
""" | ||
notice_dict = notice.dict() | ||
notice_dict["_id"] = notice_dict["ted_id"] | ||
self.collection.insert_one(notice_dict) | ||
|
||
def update(self, notice: Notice): | ||
""" | ||
This method allows you to update notice objects to the repository | ||
:param notice: | ||
:return: | ||
""" | ||
notice_dict = notice.dict() | ||
notice_dict["_id"] = notice_dict["ted_id"] | ||
self.collection.update_one({'_id':notice_dict["_id"]}, {"$set": notice_dict}) | ||
|
||
def get(self, reference) -> Notice: | ||
""" | ||
This method allows a notice to be obtained based on an identification reference. | ||
:param reference: | ||
:return: Notice | ||
""" | ||
result_dict = self.collection.find_one({"ted_id": reference}) | ||
return Notice(**result_dict) if result_dict else None | ||
|
||
def list(self) -> Iterator[Notice]: | ||
""" | ||
This method allows all records to be retrieved from the repository. | ||
:return: list of notices | ||
""" | ||
for result_dict in self.collection.find(): | ||
yield Notice(**result_dict) |
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import pytest | ||
from pymongo import MongoClient | ||
|
||
from ted_sws import config | ||
|
||
|
||
@pytest.fixture | ||
def mongodb_client(): | ||
uri = config.MONGO_DB_AUTH_URL | ||
mongodb_client = MongoClient(uri) | ||
return mongodb_client |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
from pymongo import MongoClient | ||
|
||
from ted_sws import config | ||
|
||
|
||
def test_mongodb_client(): | ||
uri = config.MONGO_DB_AUTH_URL | ||
mongodb_client = MongoClient(uri) | ||
mongodb_client.drop_database('test') | ||
test_db = mongodb_client['test'] | ||
fruits_collection = test_db['fruits'] | ||
fruits_collection.insert_one({"banana": 10, "orange": 50}) | ||
fruits_collection.insert_one({"banana": 15, "orange": 50}) | ||
result_fruits = fruits_collection.find_one({"banana": 10}) | ||
assert isinstance(result_fruits,dict) | ||
assert result_fruits["orange"] == 50 | ||
assert result_fruits["banana"] == 10 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import pytest | ||
|
||
from ted_sws.data_manager.adapters.notice_repository import NoticeRepository | ||
from ted_sws.domain.model.manifestation import XMLManifestation | ||
from ted_sws.domain.model.metadata import TEDMetadata | ||
from ted_sws.domain.model.notice import Notice | ||
|
||
NOTICE_TED_ID = "123456" | ||
TEST_DB_NAME = 'test_db' | ||
|
||
|
||
def test_notice_repository_create(mongodb_client): | ||
mongodb_client.drop_database(TEST_DB_NAME) | ||
notice_repository = NoticeRepository(mongodb_client=mongodb_client, database_name=TEST_DB_NAME) | ||
notice = Notice(ted_id=NOTICE_TED_ID, original_metadata=TEDMetadata(**{"AA": "Metadata"}), | ||
xml_manifestation=XMLManifestation(object_data="HELLO")) | ||
notice_repository.add(notice) | ||
result_notice = notice_repository.get(reference=NOTICE_TED_ID) | ||
assert result_notice | ||
assert result_notice.ted_id == NOTICE_TED_ID | ||
assert result_notice.original_metadata.AA == "Metadata" | ||
result_notices = list(notice_repository.list()) | ||
assert result_notices | ||
assert len(result_notices) == 1 | ||
with pytest.raises(Exception): | ||
notice_repository.add(notice) | ||
notice.original_metadata = TEDMetadata(**{"AA": "Updated metadata"}) | ||
notice_repository.update(notice) | ||
result_notice = notice_repository.get(reference=NOTICE_TED_ID) | ||
assert result_notice | ||
assert result_notice.ted_id == NOTICE_TED_ID | ||
assert result_notice.original_metadata.AA == "Updated metadata" | ||
mongodb_client.drop_database(TEST_DB_NAME) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
import mongomock | ||
import pymongo | ||
import pytest | ||
|
||
|
||
@pytest.fixture | ||
@mongomock.patch(servers=(('server.example.com', 27017),)) | ||
def mongodb_client(): | ||
return pymongo.MongoClient('server.example.com') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
import pytest | ||
|
||
from ted_sws.data_manager.adapters.notice_repository import NoticeRepository | ||
from ted_sws.domain.model.manifestation import XMLManifestation | ||
from ted_sws.domain.model.metadata import TEDMetadata | ||
from ted_sws.domain.model.notice import Notice | ||
|
||
NOTICE_TED_ID = "123456" | ||
TEST_DB_NAME = 'test_db' | ||
|
||
|
||
def test_notice_repository_create(mongodb_client): | ||
mongodb_client.drop_database(TEST_DB_NAME) | ||
notice_repository = NoticeRepository(mongodb_client=mongodb_client, database_name=TEST_DB_NAME) | ||
notice = Notice(ted_id=NOTICE_TED_ID, original_metadata=TEDMetadata(**{"AA": "Metadata"}), | ||
xml_manifestation=XMLManifestation(object_data="HELLO")) | ||
notice_repository.add(notice) | ||
result_notice = notice_repository.get(reference=NOTICE_TED_ID) | ||
assert result_notice | ||
assert result_notice.ted_id == NOTICE_TED_ID | ||
assert result_notice.original_metadata.AA == "Metadata" | ||
result_notices = list(notice_repository.list()) | ||
assert result_notices | ||
assert len(result_notices) == 1 | ||
with pytest.raises(Exception): | ||
notice_repository.add(notice) | ||
notice.original_metadata = TEDMetadata(**{"AA": "Updated metadata"}) | ||
notice_repository.update(notice) | ||
result_notice = notice_repository.get(reference=NOTICE_TED_ID) | ||
assert result_notice | ||
assert result_notice.ted_id == NOTICE_TED_ID | ||
assert result_notice.original_metadata.AA == "Updated metadata" | ||
mongodb_client.drop_database(TEST_DB_NAME) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters