Пример #1
0
        public async Task LoadData_ReturnsTrueAndRestoresClient()
        {
            IClient testClient = CreateClient();

            System.IO.File.Delete(TEST_FILE);
            using (FileRepository repo = new FileRepository())
            {
                Assert.IsTrue(repo.OpenRepository(TEST_FILE).GetAwaiter().GetResult());
                await repo.CreateClient(
                    testClient.Username,
                    testClient.FirstName,
                    testClient.LastName,
                    testClient.Street,
                    testClient.StreetNumber,
                    testClient.PhoneNumber);
            }
            using (FileRepository repo = new FileRepository())
            {
                Assert.IsTrue(repo.OpenRepository(TEST_FILE).GetAwaiter().GetResult());
                IClient client = await repo.GetClient(testClient.Username);

                Assert.IsNotNull(client);
                Assert.AreEqual(testClient.FirstName, client.FirstName);
                Assert.AreEqual(testClient.LastName, client.LastName);
                Assert.AreEqual(testClient.Street, client.Street);
                Assert.AreEqual(testClient.StreetNumber, client.StreetNumber);
                Assert.AreEqual(testClient.PhoneNumber, client.PhoneNumber);
            }
        }
Пример #2
0
        public async Task FileRepository_FileChanged_UpdatesData()
        {
            IClient  testClient = CreateClient();
            IProduct product    = CreateProduct();

            System.IO.File.Delete(TEST_FILE);
            using FileRepository repo = new FileRepository();
            Assert.IsTrue(repo.OpenRepository(TEST_FILE).GetAwaiter().GetResult());
            await repo.CreateClient(
                testClient.Username,
                testClient.FirstName,
                testClient.LastName,
                testClient.Street,
                testClient.StreetNumber,
                testClient.PhoneNumber);

            await repo.CreateProduct(product.Name, product.Price, product.ProductType);

            string fileData = System.IO.File.ReadAllText(TEST_FILE);
            await repo.RemoveClient(testClient);

            await repo.RemoveProduct((await repo.GetAllProducts()).First());

            Assert.AreEqual(0, (await repo.GetAllClients()).Count);
            Assert.AreEqual(0, (await repo.GetAllProducts()).Count);
            bool         clientsReplaced  = false;
            bool         productsReplaced = false;
            TestObserver obs = new TestObserver();

            using IDisposable clientUnsubscriber  = repo.Subscribe((IObserver <DataChanged <IClient> >)obs);
            using IDisposable productUnsubscriber = repo.Subscribe((IObserver <DataChanged <IProduct> >)obs);
            System.IO.File.WriteAllText(TEST_FILE, fileData);
            SpinWait.SpinUntil(() => {
                clientsReplaced  |= obs.ClientsReplaced();
                productsReplaced |= obs.ProductsReplaced();
                return(clientsReplaced && productsReplaced);
            }, UPDATE_TIMEOUT);
            Assert.IsTrue(clientsReplaced);
            Assert.IsTrue(productsReplaced);
        }