public void ItIsNotPossibleToAddTranslationWithIncorrectGermanWord(string germanWord)
        {
            var command = new AddPolishGermanTranslationCommand("krzesło", germanWord);
            var handler = new AddPolishGermanTranslationCommandHandler();
            var events  = new EventRecorder();

            Assert.Throws <Exception>(() =>
            {
                handler.Execute(command, events.Record, () => 1);
            });
            events.AssertAllEvents(e => Assert.IsNotType <PolishGermanTranslationAddedEvent>(e));
        }
        public void Execute(AddPolishGermanTranslationCommand command, EventPublisher eventPublisher, IdFactory idFactory)
        {
            if (string.IsNullOrWhiteSpace(command.PolishWord))
            {
                throw new Exception();
            }
            if (string.IsNullOrWhiteSpace(command.GermanWord))
            {
                throw new Exception();
            }
            var translationId = idFactory();

            eventPublisher(new PolishGermanTranslationAddedEvent(translationId, command.PolishWord, command.GermanWord));
        }
        public void ItIsPossibleToAddTranslation()
        {
            var command = new AddPolishGermanTranslationCommand("krzesło", "der Stuhl");
            var handler = new AddPolishGermanTranslationCommandHandler();
            var events  = new EventRecorder();

            handler.Execute(command, events.Record, () => 1);

            events.AssertRecordedOneEvent <PolishGermanTranslationAddedEvent>(
                e =>
            {
                Assert.Equal("krzesło", e.PolishWord);
                Assert.Equal("der Stuhl", e.GermanWord);
                Assert.Equal(1, e.TranslationId);
            });
        }