Beispiel #1
0
        public void SetUp()
        {
            var talkInfoExtractor = new TalkInfoExtractor();
            var talkvalidator     = new TalkValidator();

            talkManager = new TalkManagerService(talkInfoExtractor, talkvalidator);
        }
        public void It_Should_ValidateTalk(string talk, bool expectedIsValid)
        {
            //arrange
            var talkValidator = new TalkValidator();

            //act
            var isValid = talkValidator.IsValid(talk);

            //assert
            Assert.Equal(expectedIsValid, isValid);
        }
Beispiel #3
0
        public void It_Should_Throw_NotValidTalkException_Given_InvalidTalk(string[] talks, string exceptionMessage)
        {
            //arrange
            var talkValidator          = new TalkValidator();
            var textFileInputProcessor = new TextFileInputProcessor(talkValidator);

            //act
            Action actual = () => textFileInputProcessor.Process(talks);

            //assert
            var exception = Assert.Throws <InvalidTalkException>(actual);

            Assert.Equal(exceptionMessage, exception.Message);
        }
        public void It_Should_ExitTheApplication_When_UserInputIsQ()
        {
            //Arrange
            var trackGenerator = new TrackGenerator(
                2,
                new List <SessionAllocator>
            {
                new SessionAllocator(
                    ConfigurationLoader.LoadSessionConfiguration("morningSession.json")),
                new SessionAllocator(
                    ConfigurationLoader.LoadSessionConfiguration("afternoonSession.json"))
            },
                new TalkDurationValidator());

            var pathValidator = new PathValidator();

            var talkValidator = new TalkValidator();

            var consoleDisplay = new ConsoleDisplayStub();

            var consoleCollector = new Mock <IInputCollector>();

            consoleCollector.SetupSequence(x => x.Collect())
            .Returns("q");

            var conferenceTrackManager = new ConferenceTrackManager(consoleDisplay, consoleCollector.Object, new TextFileInputProvider(pathValidator), new TextFileInputProcessor(talkValidator), trackGenerator);

            //Act
            conferenceTrackManager.ManageTracks();

            //Assert
            var expectedMessages = new List <string>
            {
                Constants.Welcome,
                Constants.FilePathPrompt
            };

            for (var i = 0; i < consoleDisplay.Messages.Count; i++)
            {
                Assert.Equal(expectedMessages[i], consoleDisplay.Messages[i]);
            }
            //Assert.True(consoleDisplay.Messages.SequenceEqual(expectedMessages));
        }
Beispiel #5
0
        static void Main(string[] args)
        {
            var morningSessionAllocator = new SessionAllocator(
                ConfigurationLoader.LoadSessionConfiguration("morningSession.json"));

            var afternoonSessionAllocator = new SessionAllocator(
                ConfigurationLoader.LoadSessionConfiguration("afternoonSession.json"));

            var trackGenerator = new TrackGenerator(
                2,
                new List <SessionAllocator>
            {
                morningSessionAllocator,
                afternoonSessionAllocator
            },
                new TalkDurationValidator());

            var talkValidator = new TalkValidator();

            var pathValidator = new PathValidator();

            var conferenceTrackManager = new ConferenceTrackManager(
                new ConsoleDisplay(),
                new ConsoleInputCollector(),
                new TextFileInputProvider(pathValidator),
                new TextFileInputProcessor(talkValidator),
                trackGenerator);

            conferenceTrackManager.ManageTracks();

            // /Users/amanda.chau/fma/fma-katas/ConferenceTrackManagementKata/ConferenceTrack.UnitTests/Input/OriginalTestInput.txt

            ///Users/amanda.chau/fma/fma-katas/ConferenceTrackManagementKata/ConferenceTrack.UnitTests/Input/InvalidTestInput.txt
            ///
            /// /Users/amanda.chau/fma/fma-katas/ConferenceTrackManagementKata/ConferenceTrack.UnitTests/Input/InvalidTalkDuration.txt
        }
        public void It_Should_DisplayErrorsAndTracks_WhenGivenInValidFilesThenAValidOne()
        {
            //Arrange
            var trackGenerator = new TrackGenerator(
                2,
                new List <SessionAllocator>
            {
                new SessionAllocator(
                    ConfigurationLoader.LoadSessionConfiguration("morningSession.json")),
                new SessionAllocator(
                    ConfigurationLoader.LoadSessionConfiguration("afternoonSession.json"))
            },
                new TalkDurationValidator());

            var pathValidator = new PathValidator();

            var talkValidator = new TalkValidator();

            var consoleDisplay = new ConsoleDisplayStub();

            var consoleCollector = new Mock <IInputCollector>();

            consoleCollector.SetupSequence(x => x.Collect())
            .Returns(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "In", "OriginalTestInput.txt"))
            .Returns(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Input", "InvalidTestInput.txt"))
            .Returns(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Input", "InvalidTalkDuration.txt"))
            .Returns(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Input", "OriginalTestInput.txt"))
            .Returns("1");

            var conferenceTrackManager = new ConferenceTrackManager(consoleDisplay, consoleCollector.Object, new TextFileInputProvider(pathValidator), new TextFileInputProcessor(talkValidator), trackGenerator);

            //Act
            conferenceTrackManager.ManageTracks();

            //Assert
            var expectedMessages = new List <string>
            {
                Constants.Welcome,
                Constants.FilePathPrompt,
                $"Not a valid path or file: {Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "In", "OriginalTestInput.txt")}. \nOnly .txt files are valid",
                Constants.FilePathPrompt,
                "Not a valid talk: A World Without HackerNews. \nMust contain duration in minutes or be a lightning talk.",
                Constants.FilePathPrompt,
                "Invalid talk duration: 445min.\nThe duration of talks must be shorter then the session duration",
                Constants.FilePathPrompt,
                Constants.DisplayTypePrompt,
                "Track 1",
                "09:00 AM  Writing Fast Tests Against Enterprise Rails 60min",
                "10:00 AM  Communicating Over Distance 60min",
                "11:00 AM  Rails Magic 60min",
                "12:00 PM  Lunch",
                "01:00 PM  Ruby Errors from Mismatched Gem Versions 45min",
                "01:45 PM  Common Ruby Errors 45min",
                "02:30 PM  Accounting-Driven Development 45min",
                "03:15 PM  Pair Programming vs Noise 45min",
                "04:00 PM  Clojure Ate Scala (on my project) 45min",
                "05:00 PM  Networking Event",
                "Track 2",
                "09:00 AM  Ruby on Rails: Why We Should Move On 60min",
                "10:00 AM  Ruby on Rails Legacy App Maintenance 60min",
                "11:00 AM  Overdoing it in Python 45min",
                "11:45 AM  Rails for Python Developers lightning",
                "12:00 PM  Lunch",
                "01:00 PM  Lua for the Masses 30min",
                "01:30 PM  Woah 30min",
                "02:00 PM  Sit Down and Write 30min",
                "02:30 PM  Programming in the Boondocks of Seattle 30min",
                "03:00 PM  Ruby vs. Clojure for Back-End Development 30min",
                "03:30 PM  A World Without HackerNews 30min",
                "04:00 PM  User Interface CSS in Rails Apps 30min",
                "05:00 PM  Networking Event"
            };

            for (var i = 0; i < consoleDisplay.Messages.Count; i++)
            {
                Assert.Equal(expectedMessages[i], consoleDisplay.Messages[i]);
            }
            //Assert.True(consoleDisplay.Messages.SequenceEqual(expectedMessages));
        }
Beispiel #7
0
        public TaliValidatorTests()
        {
            List <List <Talks> > talkList = new List <List <Talks> >()
            {
                new List <Talks>()
                {
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test", Title = "test"
                    },
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test2", Title = "test2"
                    },
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test3", Title = "test3"
                    },
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test4", Title = "test4"
                    },
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test5", Title = "test5"
                    },
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test6", Title = "test6"
                    },
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test7", Title = "test7"
                    },
                    new Talks()
                    {
                        TimeDuration = 60, Name = "test8", Title = "test8"
                    }
                }
            };

            List <Talks> talks = new List <Talks>()
            {
                new Talks()
                {
                    TimeDuration = 60, Name = "test", Title = "test"
                },
                new Talks()
                {
                    TimeDuration = 60, Name = "test2", Title = "test2"
                },
                new Talks()
                {
                    TimeDuration = 60, Name = "test3", Title = "test3"
                },
                new Talks()
                {
                    TimeDuration = 60, Name = "test4", Title = "test4"
                },
                new Talks()
                {
                    TimeDuration = 60, Name = "test5", Title = "test5"
                },
                new Talks()
                {
                    TimeDuration = 60, Name = "test6", Title = "test6"
                },
                new Talks()
                {
                    TimeDuration = 60, Name = "test7", Title = "test7"
                },
                new Talks()
                {
                    TimeDuration = 60, Name = "test8", Title = "test8"
                }
            };

            var utilMock = new Mock <IUtils>();

            utilMock
            .Setup(x => x.FindPossibleCombSession(It.IsAny <List <Talks> >(), It.IsAny <int>(), It.IsAny <Boolean>()))
            .Returns(talkList);
            utilMock.Setup(x => x.GetNextScheduledTime(It.IsAny <DateTime>(), It.IsAny <int>())).Returns("9 AM");
            utilMock.Setup(x => x.GetScheduledTalksList(It.IsAny <List <List <Talks> > >(), It.IsAny <List <List <Talks> > >())).Returns(talkList);
            utilMock.Setup(x => x.GetTotalTalksTime(It.IsAny <List <Talks> >())).Returns(180);
            this._talkValidator = new TalkValidator(new TrackGenerator(utilMock.Object));
        }