class TestSave:

    def setup_method(self):
        self.repository = CandidateRepository()

    @pytest.mark.parametrize('candidate', [Candidate(user)])
    def test_succeeds_when_candidate_has_no_id(self, candidate):
        saved_candidate = self.repository.save(candidate)
        assert get_public_vars(self.repository.candidates[
            saved_candidate.id]) == get_public_vars(candidate)

    @pytest.mark.parametrize(
        'candidate, updated_candidate',
        [(Candidate(user), Candidate(user, description='updated'))])
    def test_update_succeeds_when_candidate_has_id(self, candidate,
                                                   updated_candidate):
        saved_candidate = self.repository.save(candidate)
        candidate_id = saved_candidate.id
        updated_candidate.id = candidate_id
        self.repository.save(updated_candidate)
        assert get_public_vars(
            self.repository.candidates[candidate_id]) == get_public_vars(
                updated_candidate)

    @pytest.mark.parametrize('candidate, event_item_id',
                             [(Candidate(user, id=1), 1)])
    def test_save_succeeds_when_given_event_item_id(self, candidate,
                                                    event_item_id):
        self.repository.save(candidate, event_item_id)
        assert set(self.repository.event_item_id_to_candidate_map[event_item_id]
                  ) == set([candidate])  # noqa E124
class TestDelete:

    def setup_method(self):
        self.repository = CandidateRepository()
        self.repository.candidates[1] = Candidate(user, id=1)

    @pytest.fixture()
    def regist_candidate_to_event_item_id_map(self):
        event_item_id = 1
        candidate = Candidate(user, id=1)
        self.repository.event_item_id_to_candidate_map[event_item_id] = [
            candidate
        ]

    @pytest.mark.parametrize('candidate', [Candidate(user, id=1)])
    def test_succeeds_when_target_candidate_exists(self, candidate):
        self.repository.delete(candidate)

    @pytest.mark.parametrize('candidate, event_item_id',
                             [(Candidate(user, id=1), 1)])
    def test_succeeds_when_target_candidate_registerd_in_event_item_id_map(
            self, candidate, event_item_id,
            regist_candidate_to_event_item_id_map):
        self.repository.delete(candidate)
        for registed_candidates \
                in self.repository.event_item_id_to_candidate_map.values():
            for registed_candidate in registed_candidates:
                assert candidate.id == registed_candidate.id

    @pytest.mark.parametrize('candidate', [Candidate(user, id=100)])
    def test_return_value_error_when_target_candidate_does_not_exist(
            self, candidate):
        with pytest.raises(ValueError):
            assert self.repository.delete(candidate)

    @pytest.mark.parametrize('candidate', [Candidate(user, id=None)])
    def test_return_value_error_when_given_candidate_id_is_none(
            self, candidate):
        with pytest.raises(ValueError):
            assert self.repository.delete(candidate)
Example #3
0
 def test_raise_type_error_with_invalid_args(self, invalid_args):
     with pytest.raises(TypeError):
         Candidate(**invalid_args)
Example #4
0
 def test_succeeds_initialization_with_valid_args(self, valid_args,
                                                  expected):
     candidate = Candidate(**valid_args)
     assert get_public_vars(candidate) == expected
Example #5
0
import pytest

from savoten.domain import Candidate, EventItem, User
from tests.util import get_public_vars

user = User('user_name', '*****@*****.**', 1)
candidate = Candidate(user)


class TestInit:
    @pytest.mark.parametrize('valid_args, expected',
                             [({
                                 'name': 'name',
                                 'candidates': [candidate],
                                 'description': 'description',
                                 'seats': 2,
                                 'max_choice': 3,
                                 'min_choice': 4,
                                 'id': 5
                             }, {
                                 'name': 'name',
                                 'candidates': [candidate],
                                 'description': 'description',
                                 'seats': 2,
                                 'max_choice': 3,
                                 'min_choice': 4,
                                 'id': 5
                             }),
                              ({
                                  'name': 'name',
                                  'candidates': [candidate]
Example #6
0
import pytest

from savoten.domain import Candidate, EventItem, User
from savoten.repository.memory import EventItemRepository
from tests.util import get_public_vars

user_args = {
    'name': 'test_user',
    'email': '*****@*****.**',
    'permission': 100
}
user = User(**user_args)
candidate_args = {'user': user}
candidate = Candidate(**candidate_args)


class TestSave:
    def setup_method(self):
        self.repository = EventItemRepository()

    @pytest.mark.parametrize('event_item',
                             [EventItem('test_name', [candidate])])
    def test_succeeds_when_event_item_has_no_id(self, event_item):
        saved_event_item = self.repository.save(event_item)
        assert get_public_vars(self.repository.event_items[
            saved_event_item.id]) == get_public_vars(event_item)

    @pytest.mark.parametrize('event_item, updated_event_item', [(EventItem(
        'test_name', [candidate]), EventItem('updated', [candidate]))])
    def test_update_succeeds_when_event_item_has_same_id(
            self, event_item, updated_event_item):
 def setup_class(cls):
     cls.repository = CandidateRepository()
     cls.repository.candidates[1] = Candidate(user, id=1)
 def regist_candidate_to_event_item_id_map(self):
     event_item_id = 1
     candidate = Candidate(user, id=1)
     self.repository.event_item_id_to_candidate_map[event_item_id] = [
         candidate
     ]
 def setup_method(self):
     self.repository = CandidateRepository()
     self.repository.candidates[1] = Candidate(user, id=1)
 def setup_class(cls):
     cls.repository = CandidateRepository()
     cls.test_candidates = [Candidate(user, id=i) for i in range(1, 5)]
     for candidate in cls.test_candidates:
         cls.repository.candidates[candidate.id] = candidate
 def setup_class(cls):
     cls.repository = CandidateRepository()
     cls.test_candidates = [Candidate(user, id=i) for i in range(1, 5)]
     event_item_id = 1
     cls.repository.event_item_id_to_candidate_map[
         event_item_id] = cls.test_candidates