public IList <MusicContract> GetAll()
        {
            var musicContractFlatLines = _inputData
                                         .GetAssetData()
                                         .Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries)
                                         .Skip(1);

            var retList = new List <MusicContract>();

            foreach (var musicContractFlatLine in musicContractFlatLines)
            {
                var data = musicContractFlatLine.Split('|');

                if (data.Length != 5)
                {
                    throw new ArgumentException("Cannot create MusicContract object from invalid data");
                }

                var contract = new MusicContract()
                {
                    Artist = data[0],
                    Title  = data[1],
                    DistributionChannels = data[2].Split(',', StringSplitOptions.RemoveEmptyEntries).Select(dc => dc.Trim()).ToList(),
                    StartDate            = _dateParser.Parse(data[3]),
                    EndDate = _dateParser.Parse(data[4]),
                };

                retList.Add(contract);
            }

            return(retList);
        }
Пример #2
0
        public IEnumerable <MusicContract> ParseMusicData(string[] data)
        {
            IEnumerable <MusicContract> musicList = data.Skip(1).Select((c, i) =>
            {
                string[] split    = c.Split('|');
                var startDate     = split[3].RemoveDateTimeChars();
                var musicContract = new MusicContract
                {
                    Artist = split[0],
                    Title  = split[1],

                    StartDateStr = startDate,
                    StartDate    = DateTime.Parse(startDate)
                };

                var mechanisms = ParserMechanisms(split[2]);
                musicContract.DistributionMechanism = mechanisms;

                if (split.Length > 4 && !string.IsNullOrEmpty(split[4].Trim()))
                {
                    var endDate = split[4].RemoveDateTimeChars();

                    musicContract.EndDateStr = endDate;
                    musicContract.EndDate    = DateTime.Parse(endDate);
                }
                return(musicContract);
            }).ToList();

            return(musicList);
        }
Пример #3
0
        public IEnumerable <MusicContract> GetMusicContracts()
        {
            var musicContracts = new List <MusicContract>();
            var assembly       = Assembly.GetExecutingAssembly();
            var resourceName   = "GRM.Data.MusicContracts.txt";

            using (var stream = assembly.GetManifestResourceStream(resourceName))
                if (stream != null)
                {
                    using (var reader = new StreamReader(stream))
                    {
                        //This is the header. This is redundant for this test purposes
                        reader.ReadLine();

                        string s;
                        while ((s = reader.ReadLine()) != null)
                        {
                            var lineStrings   = s.Split('|');
                            var musicContract = new MusicContract
                            {
                                Artist    = lineStrings.Length > 0 ? lineStrings[0] : string.Empty,
                                Title     = lineStrings.Length > 1 ? lineStrings[1] : string.Empty,
                                Usages    = lineStrings.Length > 2 ? lineStrings[2] : string.Empty,
                                StartDate = lineStrings.Length > 3 ? lineStrings[3] : string.Empty,
                                EndDate   = lineStrings.Length > 4 ? lineStrings[4] : string.Empty
                            };

                            musicContracts.Add(musicContract);
                        }
                    }
                }

            return(musicContracts);
        }
Пример #4
0
        public void should_construct_music_contract()
        {
            // arrange
            var result = new MusicContract("artist", "title", new System.Collections.Generic.List <DistributionPartner>(), DateTime.Now, DateTime.Now);

            // assert
            Assert.IsNotNull(result);
        }
Пример #5
0
        private string FormatContract(MusicContract contract, string app)
        {
            var    mechanismEnum = contract.Usages.First(m => m.Partner == app).DistributionMechanisms.First();
            var    mechanism     = mechanismEnum.GetDisplayName();;
            string output        = $"{contract.Artist}|{contract.Title}|{mechanism}|{contract.StartDateStr}";

            if (!string.IsNullOrEmpty(contract.EndDateStr))
            {
                output += $"|{contract.EndDateStr}";
            }

            return(output);
        }
Пример #6
0
        private string buildMusicUsages(MusicContract musicContract)
        {
            var myString = "";
            var index    = 0;

            foreach (var m in musicContract.Usages)
            {
                myString += m;
                if (index != musicContract.Usages.Count)
                {
                    myString += ", ";
                }
                index++;
            }
            return(myString);
        }
Пример #7
0
        public void Setup()
        {
            _repositoryMock = new Mock <IRepository>();
            _musicContract1 = new MusicContract
            {
                Artist    = "Artist 1",
                Title     = "Title 1",
                Usages    = EContractUsage.DigitalDownload,
                StartDate = new DateTime(2012, 6, 1),
                EndDate   = new DateTime(2012, 7, 1)
            };
            _musicContract2 = new MusicContract
            {
                Artist    = "Artist 2",
                Title     = "Title 2",
                Usages    = EContractUsage.DigitalDownload,
                StartDate = new DateTime(2012, 6, 1)
            };
            _musicContract3 = new MusicContract
            {
                Artist    = "Artist 3",
                Title     = "Title 3",
                Usages    = EContractUsage.Streaming,
                StartDate = new DateTime(2013, 6, 1)
            };
            _repositoryMock.Setup(m => m.GetMusicContracts()).Returns(new[]
            {
                _musicContract1,
                _musicContract2,
                _musicContract3
            });

            _repositoryMock.Setup(m => m.GetDistributionContracts()).Returns(new[]
            {
                new DistributionContract {
                    Partner = "Partener1", Usage = EContractUsage.Streaming
                },
                new DistributionContract {
                    Partner = "Partener2", Usage = EContractUsage.DigitalDownload
                }
            });
            _handler = new ListCommandHandler(_repositoryMock.Object);
            _command = new QueryCommand();
        }
Пример #8
0
        public void TestCanGetSetProperties()
        {
            var now           = DateTime.Now;
            var musicContract = new MusicContract()
            {
                Artist    = "Foo Fighters",
                Title     = "Echoes, Silence, Patience and Grace",
                StartDate = now,
                EndDate   = now.AddYears(1),
                Usages    = new string[] { "Download", "Streaming", "Vinyl" }
            };

            Assert.AreEqual(musicContract.Artist, "Foo Fighters");
            Assert.AreEqual(musicContract.Title, "Echoes, Silence, Patience and Grace");
            Assert.IsTrue(musicContract.StartDate.HasValue);
            Assert.IsTrue(musicContract.EndDate.HasValue);
            Assert.AreEqual(musicContract.Usages.Length, 3);
            Assert.AreEqual(musicContract.Usages[1], "Streaming");
        }
Пример #9
0
        public void TestToStringMethod()
        {
            var now           = new DateTime(2012, 2, 1);
            var nextYear      = new DateTime(2013, 2, 1);
            var musicContract = new MusicContract()
            {
                Artist    = "The Bangles",
                Title     = "Walk like an Egyptian",
                StartDate = now,
                EndDate   = nextYear,
                Usages    = new string[] { "Download", "Streaming", "Vinyl" }
            };
            var musicContractNoEndDate = new MusicContract()
            {
                Artist    = "The Eagles",
                Title     = "Hotel California",
                StartDate = now,
                EndDate   = null,
                Usages    = new string[] { "Download", "Streaming", "Vinyl" }
            };

            Assert.AreEqual(musicContract.ToString(), "The Bangles|Walk like an Egyptian|Download,Streaming,Vinyl|1 Feb 2012|1 Feb 2013");
            Assert.AreEqual(musicContractNoEndDate.ToString(), "The Eagles|Hotel California|Download,Streaming,Vinyl|1 Feb 2012|");
        }
Пример #10
0
 private bool IsWithinTimeFrame(MusicContract contract, Options options)
 {
     return(options.DownloadDate.ParseGrmExact() > contract.StartDate.ParseGrmExact() &&
            (contract.EndDate.ParseGrmExact() == DateTime.MinValue || options.DownloadDate.ParseGrmExact() <
             contract.EndDate.ParseGrmExact()));
 }