示例#1
0
        // ObjectResult<IEnumerable<ReaderOutput>>
        public ObjectResult Get()
        {
            _logger.LogInformation("Get all readers");
            string       message;
            ObjectResult result;

            try
            {
                var readers = new List <ReaderOutput>();
                if (database.Readers.Any())
                {
                    foreach (var reader in database.Readers)
                    {
                        var books = database.ReadedBooks
                                    .Where(x => x.Reader.Nickname == reader.Nickname)
                                    .Select(x => x.Name)
                                    .ToList();
                        var nickname    = reader.Nickname;
                        var addedreader = new ReaderOutput()
                        {
                            Nickname = nickname,
                            Books    = books
                        };
                        readers.Add(addedreader);
                    }
                    message = "Successful getting";
                    result  = Ok(readers);
                    _logger.LogInformation(message);
                }
                else
                {
                    message = "No readers found";
                    result  = NotFound(message);
                    _logger.LogInformation(message);
                }
            }
            catch
            {
                message = "Problem with database while getting";
                result  = StatusCode(500, message);
                _logger.LogError(message);
            }
            return(result);
        }
        private bool OutputEqual(ReaderOutput ro1, ReaderOutput ro2)
        {
            bool result = ro1.Nickname == ro2.Nickname;

            if (result)
            {
                if (ro1.Books != null && ro2.Books != null)
                {
                    result = ro1.Books.Count == ro2.Books.Count;
                    for (int i = 0; i < ro1.Books.Count && result; i++)
                    {
                        result = ro1.Books[i] == ro2.Books[i];
                    }
                }
                else
                {
                    result = ro1.Books == ro2.Books;
                }
            }
            return(result);
        }
        public void Test6()
        {
            var readers = new List <Reader>()
            {
                CreateReader("R1", new List <string>()
                {
                    "B1", "B2", "B3"
                }),
                CreateReader("R2", new List <string>()
                {
                    "B3", "B1", "B5"
                }),
                CreateReader("R3", new List <string>()
                {
                    "B2", "B6", "B7"
                })
            };
            var readerOutput = new ReaderOutput()
            {
                Nickname = "R2",
                Books    = new List <string>()
                {
                    "B3", "B1", "B5"
                }
            };

            database = GetDatabase(readers);
            var service = new ReaderController(database, _logger);

            var result = service.Get("R2");

            Assert.AreEqual(200, result.StatusCode);
            var output = (ReaderOutput)result.Value;

            Assert.AreEqual(true, OutputEqual(readerOutput, output));
        }