Пример #1
0
        public void DisplayReceipe()
        {
            // Arrange
            var items = new List <Item>
            {
                new Item {
                    Id = 1, Label = "Phone", Price = 249
                },
                new Item {
                    Id = 2, Label = "Computer", Price = 999
                },
                new Item {
                    Id = 3, Label = "TV", Price = 799
                }
            };

            var clients = new List <Client>
            {
                new Client {
                    Id = 1, Name = "Bob"
                },
                new Client {
                    Id = 2, Name = "Leïa"
                }
            };

            var purchases = new List <Purchase>
            {
                new Purchase {
                    ItemId = 1, ClientId = 1, Quantity = 2
                },
                new Purchase {
                    ItemId = 2, ClientId = 1, Quantity = 1
                },
                new Purchase {
                    ItemId = 1, ClientId = 2, Quantity = 1
                },
                new Purchase {
                    ItemId = 2, ClientId = 2, Quantity = 2
                },
                new Purchase {
                    ItemId = 3, ClientId = 2, Quantity = 3
                },
            };

            var expected = new List <Tuple <string, string, int, double> >
            {
                new Tuple <string, string, int, double>("Bob", "Phone", 2, 249),
                new Tuple <string, string, int, double>("Bob", "Computer", 1, 999),
                new Tuple <string, string, int, double>("Leïa", "Phone", 1, 249),
                new Tuple <string, string, int, double>("Leïa", "Computer", 2, 999),
                new Tuple <string, string, int, double>("Leïa", "TV", 3, 799)
            };

            // Act
            var subject      = new Linq();
            var finalReceipe = subject.GetFinalReceipe(items, clients, purchases).ToList();

            // Assert
            Assert.AreEqual(expected.Count, finalReceipe.Count);

            foreach (var actualReceipeLine in finalReceipe)
            {
                Assert.IsTrue(expected.Exists(x =>
                                              x.Item1 == actualReceipeLine.Item1 && x.Item2 == actualReceipeLine.Item2 &&
                                              x.Item3 == actualReceipeLine.Item3 && x.Item4 == actualReceipeLine.Item4));
            }
        }