예제 #1
6
파일: ChatFacts.cs 프로젝트: ucdavis/JabbR
        public static TestableChat GetTestableChat(string connectionId, StateChangeTracker clientState, ChatUser user, IDictionary<string, Cookie> cookies)
        {
            // setup things needed for chat
            var repository = new InMemoryRepository();
            var resourceProcessor = new Mock<IResourceProcessor>();
            var chatService = new Mock<IChatService>();
            var connection = new Mock<IConnection>();
            var settings = new Mock<IApplicationSettings>();
            var mockPipeline = new Mock<IHubPipelineInvoker>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(settings, resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            chat.Clients = new HubConnectionContext(mockPipeline.Object, mockedConnectionObject, "Chat", connectionId, clientState);

            var prinicipal = new Mock<IPrincipal>();

            var request = new Mock<IRequest>();
            request.Setup(m => m.Cookies).Returns(cookies);
            request.Setup(m => m.User).Returns(prinicipal.Object);

            // setup context
            chat.Context = new HubCallerContext(request.Object, connectionId);

            return chat;
        }
예제 #2
1
파일: ChatFacts.cs 프로젝트: skoon/JabbR
        public static TestableChat GetTestableChat(string clientId, TrackingDictionary clientState, ChatUser user, NameValueCollection cookies)
        {
            // setup things needed for chat
            var repository = new InMemoryRepository();
            var resourceProcessor = new Mock<IResourceProcessor>();
            var chatService = new Mock<IChatService>();
            var connection = new Mock<IConnection>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            // setup client agent
            chat.Agent = new ClientAgent(mockedConnectionObject, "Chat");

            var request = new Mock<IRequest>();
            request.Setup(m => m.Cookies).Returns(cookies);

            // setup signal agent
            var prinicipal = new Mock<IPrincipal>();
            chat.Caller = new SignalAgent(mockedConnectionObject, clientId, "Chat", clientState);

            // setup context
            chat.Context = new HubContext(new HostContext(request.Object, null, prinicipal.Object), clientId);

            return chat;
        }
예제 #3
0
            public void MakesOwnerAllowedIfRoomLocked()
            {
                var repository = new InMemoryRepository();
                var user = new ChatUser
                {
                    Name = "foo"
                };
                var user2 = new ChatUser
                {
                    Name = "foo2"
                };
                repository.Add(user);
                repository.Add(user2);
                var room = new ChatRoom
                {
                    Name = "Room",
                    Creator = user,
                    Private = true
                };
                room.Owners.Add(user);
                user.OwnedRooms.Add(room);
                user.Rooms.Add(room);
                room.Users.Add(user);

                var service = new ChatService(repository, new Mock<ICryptoService>().Object);

                service.AddOwner(user, user2, room);

                Assert.True(user2.AllowedRooms.Contains(room));
                Assert.True(room.AllowedUsers.Contains(user2));
                Assert.True(room.Owners.Contains(user2));
                Assert.True(user2.OwnedRooms.Contains(room));
            }
예제 #4
0
            public void MakesUserOwner()
            {
                var repository = new InMemoryRepository();
                var user = new ChatUser
                {
                    Name = "foo"
                };
                var user2 = new ChatUser
                {
                    Name = "foo2"
                };
                repository.Add(user);
                repository.Add(user2);
                var room = new ChatRoom
                {
                    Name = "Room",
                    Creator = user
                };
                room.Owners.Add(user);
                user.OwnedRooms.Add(room);
                user.Rooms.Add(room);
                room.Users.Add(user);

                var service = new ChatService(repository);

                service.AddOwner(user, user2, room);

                Assert.True(room.Owners.Contains(user2));
                Assert.True(user2.OwnedRooms.Contains(room));
            }
        public void Repository_Supports_Selectors()
        {
            var repo = new InMemoryRepository<Order>();

            // let's add a couple of orders to work with
            repo.Add(new Order()
                         {
                             Name = "Order 1",
                             Total = 120.00,
                             OrderDate = new DateTime(2013, 4, 26)
                         });

            repo.Add(new Order()
                         {
                             Name = "Order 2",
                             Total = 80.00,
                             OrderDate = new DateTime(2013, 4, 24)
                         });

            // normal Get method
            var order = repo.Get(1);
            order.OrderId.ShouldEqual(1);

            // in this case we only need the order name
            var orderName = repo.Get(1, x => x.Name);
            orderName.ShouldEqual("Order 1");

            // we can also bring back an anonymous type if needed
            var anonymousType = repo.Get(1, x => new { Name = x.Name, IsExpensiveOrder = x.Total > 100.0 });
            anonymousType.IsExpensiveOrder.ShouldBeTrue();

            // or we can map it to a specific type we have defined like a ViewModel
            var viewModel = repo.Get(1, x => new OrderViewModel() {Name = x.Name, IsExpensiveOrder = x.Total > 100.0});
            viewModel.IsExpensiveOrder.ShouldBeTrue();

            // We have the same options with the GetAll, Find and FindAll as well
            orderName = repo.Find(x => x.OrderId == 2, x => x.Name);
            orderName.ShouldEqual("Order 2");

            // we can also bring back an anonymous type if needed
            var anonymousTypes = repo.GetAll(x => new { Name = x.Name, IsExpensiveOrder = x.Total > 100.0 }).ToList();
            anonymousTypes.Count.ShouldEqual(2);
            anonymousTypes.First().Name.ShouldEqual("Order 1");
            anonymousTypes.First().IsExpensiveOrder.ShouldBeTrue();

            anonymousTypes.Last().Name.ShouldEqual("Order 2");
            anonymousTypes.Last().IsExpensiveOrder.ShouldBeFalse();

            // or we can map it to a specific type we have defined like a ViewModel
            var viewModels = repo.FindAll(x => x.OrderId < 5, x => new OrderViewModel() { Name = x.Name, IsExpensiveOrder = x.Total > 100.0 }).ToList();
            viewModels.Count.ShouldEqual(2);
            viewModels.First().Name.ShouldEqual("Order 1");
            viewModels.First().IsExpensiveOrder.ShouldBeTrue();

            viewModels.Last().Name.ShouldEqual("Order 2");
            viewModels.Last().IsExpensiveOrder.ShouldBeFalse();
        }
예제 #6
0
 public static IRepository CreateRepository()
 {
     var repository = new InMemoryRepository();
     repository.Add(new CarImage {Color = "Blue", RegisterPlate = "IOA-303", Speed = 93});
     repository.Add(new CarImage {Color = "Blue", RegisterPlate = "IOB-301", Speed = 75});
     repository.Add(new CarImage {Color = "Red", RegisterPlate = "IAC-300", Speed = 84});
     repository.Add(new CarImage {Color = "Black", RegisterPlate = "AOB-201", Speed = 120});
     repository.Add(new CarImage {Color = "Red", RegisterPlate = "BOB-101", Speed = 90});
     return repository;
 }
예제 #7
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            var repository = new InMemoryRepository<Product>();
            repository.Add(new Product { Available = 10, Title = "Snuten i Hollywood I", ImageFilePath = "Content/images/snuten_i_hollywood_i.jpg", Price = 99m});
            repository.Add(new Product { Available = 30, Title = "Snuten i Hollywood II", ImageFilePath = "Content/images/snuten_i_hollywood_ii.jpg", Price = 199m });
            repository.Add(new Product { Available = 66, Title = "Snuten i Hollywood III", ImageFilePath = "Content/images/snuten_i_hollywood_iii.jpg", Price = 49m });
            repository.Add(new Product { Available = 78, Title = "Snuten i Hollywood IV", ImageFilePath = "Content/images/snuten_i_hollywood_iv.jpg", Price = 69m });
        }
        public void ExecuteFindAll_With_Selector_Should_Use_Cache_After_First_Call()
        {
            var repos = new InMemoryRepository<Contact>(new StandardCachingStrategy<Contact>());

            repos.Add(new Contact { Name = "Test1" });
            repos.Add(new Contact { Name = "Test2" });

            var items = repos.FindAll(x => x.ContactId < 3, x => x.Name);
            repos.CacheUsed.ShouldBeFalse();
            items.Count().ShouldEqual(2);

            items = repos.FindAll(x => x.ContactId < 3, x => x.Name);
            repos.CacheUsed.ShouldBeTrue();
            items.Count().ShouldEqual(2);
        }
        public void ExecuteFind_Should_Use_Cache_After_First_Call()
        {
            var repos = new InMemoryRepository<Contact>(new StandardCachingStrategy<Contact>());

            repos.Add(new Contact { Name = "Test1" });
            repos.Add(new Contact { Name = "Test2" });

            var item= repos.Find(x => x.ContactId == 1);
            repos.CacheUsed.ShouldBeFalse();
            item.ShouldNotBeNull();

            item = repos.Find(x => x.ContactId == 1);
            repos.CacheUsed.ShouldBeTrue();
            item.ShouldNotBeNull();
        }
예제 #10
0
        public void SharpRepository_Supports_Basic_Crud_Operations()
        {
            // Declare your generic InMemory Repository.
            // Check out HowToAbstractAwayTheGenericRepository.cs for cleaner ways to new up a repo.
            var repo = new InMemoryRepository<Order, int>();

            // Create
            var create = new Order { Name = "Big sale" };
            repo.Add(create);

            const int expectedOrderId = 1;
            create.OrderId.ShouldEqual(expectedOrderId);

            // Read
            var read = repo.Get(expectedOrderId);
            read.Name.ShouldEqual(create.Name);

            // Update
            read.Name = "Really big sale";
            repo.Update(read);

            var update = repo.Get(expectedOrderId);
            update.OrderId.ShouldEqual(expectedOrderId);
            update.Name.ShouldEqual(read.Name);

            // Delete
            repo.Delete(update);
            var delete = repo.Get(expectedOrderId);
            delete.ShouldBeNull();
        }
        public void Repository_Handles_Sorting()
        {
            var repo = new InMemoryRepository<Order>();
            repo.Add(OrdersToLoad());

            // there are 2 ways to handle sorting, there is an Expression based way
            //  and a "magic string" based approach.
            // Why the 2 approaches?
            //  For convenience really.  In a Web based applicaiton sometimes it is easier to
            //  post back a string that represents the properrty that you want to sort on.

            // First, the Expression way
            var descendingOrders = repo.GetAll(new SortingOptions<Order, DateTime>(x => x.OrderDate, isDescending: true));
            descendingOrders.First().OrderId.ShouldEqual(1);

            var ascendingOrders = repo.GetAll(new SortingOptions<Order, DateTime>(x => x.OrderDate, isDescending: false));
            ascendingOrders.First().OrderId.ShouldEqual(2);

            // You can also combine sortings and selectors (See HowToUseGetSelectors for more info)
            var descendingNames = repo.GetAll(x => x.Name, new SortingOptions<Order, DateTime>(x => x.OrderDate, isDescending: true));
            descendingNames.First().ShouldEqual("Order 1");

            // The Magic String approach to sorting
            //  you can see that you don't need the second generic type (the property type to sort on), just the name of the property
            ascendingOrders = repo.GetAll(new SortingOptions<Order>("OrderDate", isDescending: false));
            ascendingOrders.First().OrderId.ShouldEqual(2);

            // using sorting with FindAll
            var minDate = DateTime.Now.AddDays(-7);
            var ordersWithinAWeek = repo.FindAll(x => x.OrderDate > minDate, new SortingOptions<Order, double>(x => x.Total, true));
            ordersWithinAWeek.Count().ShouldEqual(2);
        }
예제 #12
0
        public void EntityStoreAuditsModifiedTime()
        {
            var repo = new InMemoryRepository <Peer, string>();
            var peer = new Peer {
                PeerId = PeerIdHelper.GetPeerId("Test")
            };

            repo.Add(peer);
            var retrievedPeer = repo.Get(peer.DocumentId);

            retrievedPeer.Touch();
            repo.Update(retrievedPeer);
            var retrievedmodified = repo.Get(peer.DocumentId);
            var now = DateTime.UtcNow.Date;

            if (retrievedmodified.Modified == null)
            {
                return;
            }

            var dateComparer = retrievedmodified.Modified.Value.Date.ToString("MM/dd/yyyy");

            // ReSharper disable once SuspiciousTypeConversion.Global
            // ReSharper disable once ReturnValueOfPureMethodIsNotUsed
            dateComparer.Should().Equals(now.ToString("MM/dd/yyyy"));
        }
예제 #13
0
        public void SharpRepository_Supports_FindAll_Filtering_With_Specifications()
        {
            var repo = new InMemoryRepository <Order, int>();

            for (int i = 1; i <= 5; i++)
            {
                repo.Add(new Order {
                    Name = "Order" + i
                });
            }

            var order1 = repo.FindAll(new OrderByIdSpecification(1));

            order1.First().OrderId.ShouldBe(1);

            var order2 = repo.FindAll(new OrderByNameSpecification("Order2"));

            order2.First().Name.ShouldBe("Order2");

            var spec = new OrderByIdSpecification(3).And(new OrderByNameSpecification("Order3"));

            var order3 = repo.FindAll(spec);

            order3.First().OrderId.ShouldBe(3);
            order3.First().Name.ShouldBe("Order3");
        }
예제 #14
0
            public void RemovesClientFromUserClientList()
            {
                var repository = new InMemoryRepository();
                var user       = new ChatUser
                {
                    Name   = "foo",
                    Status = (int)UserStatus.Inactive
                };

                user.ConnectedClients.Add(new ChatClient
                {
                    Id   = "foo",
                    User = user
                });

                user.ConnectedClients.Add(new ChatClient
                {
                    Id   = "bar",
                    User = user
                });

                repository.Add(user);
                var service = new ChatService(repository, new Mock <ICryptoService>().Object);

                service.DisconnectClient("foo");

                Assert.Equal(1, user.ConnectedClients.Count);
                Assert.Equal("bar", user.ConnectedClients.First().Id);
            }
예제 #15
0
        public static TestableChat GetTestableChat(string clientId, TrackingDictionary clientState, ChatUser user, NameValueCollection cookies)
        {
            // setup things needed for chat
            var repository        = new InMemoryRepository();
            var resourceProcessor = new Mock <IResourceProcessor>();
            var chatService       = new Mock <IChatService>();
            var connection        = new Mock <IConnection>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            // setup client agent
            chat.Agent = new ClientAgent(mockedConnectionObject, "Chat");

            var request = new Mock <IRequest>();

            request.Setup(m => m.Cookies).Returns(cookies);

            // setup signal agent
            var prinicipal = new Mock <IPrincipal>();

            chat.Caller = new SignalAgent(mockedConnectionObject, clientId, "Chat", clientState);

            // setup context
            chat.Context = new HubContext(new HostContext(request.Object, null, prinicipal.Object), clientId);

            return(chat);
        }
예제 #16
0
파일: ChatFacts.cs 프로젝트: rajjan/JabbR
        public static TestableChat GetTestableChat(string connectionId, TrackingDictionary clientState, ChatUser user, NameValueCollection cookies)
        {
            // setup things needed for chat
            var repository = new InMemoryRepository();
            var resourceProcessor = new Mock<IResourceProcessor>();
            var chatService = new Mock<IChatService>();
            var connection = new Mock<IConnection>();
            var settings = new Mock<IApplicationSettings>();

            settings.Setup(m => m.AuthApiKey).Returns("key");

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(settings, resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            // setup client agent
            chat.Clients = new ClientProxy(mockedConnectionObject, "Chat");

            // setup signal agent
            var prinicipal = new Mock<IPrincipal>();

            var request = new Mock<IRequest>();
            request.Setup(m => m.Cookies).Returns(new Cookies(cookies));
            request.Setup(m => m.User).Returns(prinicipal.Object);

            chat.Caller = new StatefulSignalProxy(mockedConnectionObject, connectionId, "Chat", clientState);

            // setup context
            chat.Context = new HubCallerContext(request.Object, connectionId);

            return chat;
        }
예제 #17
0
        public void Logging_Via_Aspects()
        {
            var repository = new InMemoryRepository<Contact, int>();

            var contact1 = new Contact() {Name = "Contact 1"};
            repository.Add(contact1);
            repository.Add(new Contact() { Name = "Contact 2"});
            repository.Add(new Contact() { Name = "Contact 3"});

            contact1.Name += " EDITED";
            repository.Update(contact1);

            repository.Delete(2);

            repository.FindAll(x => x.ContactId < 50);
        }
예제 #18
0
            public void ThrowsIfRoomAlreadyLocked()
            {
                var repository = new InMemoryRepository();
                var user       = new ChatUser
                {
                    Name = "foo"
                };

                repository.Add(user);
                var room = new ChatRoom
                {
                    Name    = "Room",
                    Creator = user,
                    Private = true
                };

                room.AllowedUsers.Add(user);
                user.AllowedRooms.Add(room);
                user.Rooms.Add(room);
                room.Users.Add(user);

                var service = new ChatService(repository, new Mock <ICryptoService>().Object);

                Assert.Throws <InvalidOperationException>(() => service.LockRoom(user, room));
            }
예제 #19
0
        public void ExecuteGet_Should_Use_Cache_After_First_Call()
        {
            var repos = new InMemoryRepository <Contact>(new StandardCachingStrategy <Contact>(cacheProvider));

            repos.Add(new Contact {
                Name = "Test1"
            });
            repos.Add(new Contact {
                Name = "Test2"
            });

            var item = repos.Get(1);

            repos.CacheUsed.ShouldBeTrue();
            item.ShouldNotBeNull();
        }
        public void TestCreate_ShouldReturnValidPizzaObject()
        {
            // Setup Fixture
            var _pizzaRepo = new InMemoryRepository <Pizza>();
            var _sizeRepo  = new InMemoryRepository <Size>();

            _sizeRepo.Add(new Size()
            {
                Description = "Familiar", Price = 21m
            });

            var _pizzaService = new PizzaAppService(_pizzaRepo);

            var expected = new Pizza()
            {
                Id       = 1,
                Name     = "Big Ozzi",
                Size     = _sizeRepo.Get(1),
                Toppings = new List <Topping>()
                {
                    new Topping {
                        Name = "Cheese", Price = 3.5m
                    }
                }
            };

            // Execute SUT

            var actual = _pizzaService.Create(expected.Name, expected.Size, expected.Toppings);

            // Verify Outcomes

            Assert.Equal(1, _pizzaRepo.Count());
            ArePizzasSame(expected, actual);
        }
예제 #21
0
        public void Second_Get_Call_Should_Get_New_Item_From_Cache()
        {
            var repository = new InMemoryRepository <Contact, int>(new TimeoutCachingStrategy <Contact, int>(10)
            {
                CachePrefix = "#RepoTimeoutCache"
            });

            repository.Add(new Contact()
            {
                Name = "Test User"
            });

            var item = repository.Get(1); // after this call it's in cache

            item.Name.ShouldEqual("Test User");

            repository.Update(new Contact()
            {
                ContactId = 1, Name = "Test User EDITED"
            });                            // does update cache

            var item2 = repository.Get(1); // should get from cache since the timeout hasn't happened

            item2.Name.ShouldEqual("Test User EDITED");
        }
예제 #22
0
        public static TestableChat GetTestableChat(string connectionId, StateChangeTracker clientState, ChatUser user, IDictionary <string, Cookie> cookies)
        {
            // setup things needed for chat
            var repository        = new InMemoryRepository();
            var resourceProcessor = new Mock <IResourceProcessor>();
            var chatService       = new Mock <IChatService>();
            var connection        = new Mock <IConnection>();
            var settings          = new Mock <IApplicationSettings>();
            var mockPipeline      = new Mock <IHubPipelineInvoker>();

            // add user to repository
            repository.Add(user);

            // create testable chat
            var chat = new TestableChat(settings, resourceProcessor, chatService, repository, connection);
            var mockedConnectionObject = chat.MockedConnection.Object;

            chat.Clients = new HubConnectionContext(mockPipeline.Object, mockedConnectionObject, "Chat", connectionId, clientState);

            var prinicipal = new Mock <IPrincipal>();

            var request = new Mock <IRequest>();

            request.Setup(m => m.Cookies).Returns(cookies);
            request.Setup(m => m.User).Returns(prinicipal.Object);

            // setup context
            chat.Context = new HubCallerContext(request.Object, connectionId);

            return(chat);
        }
예제 #23
0
        public MainWindow()
        {
            InitializeComponent();

            // Use this as construction root for simplicity.
            // In real world app there should be good framework for this and this should be done
            // outside of main window for reason that then mainwindow is interchangeable too if required.
            var dataSource = new InMemoryRepository();

            // Dummy data for testing...
            dataSource.Add(new CarImage {Color="Black", RegisterPlate = "ABC-123", Speed = 140});

            var messenger = new MessageAggregator();
            var reportViewModel = new ReportViewModel(dataSource, messenger);
            var colorFilter = new ColorFilterViewModel();
            var filterViewModel = new FiltersViewModel(new List<IFilter> {colorFilter}, messenger);

            // Just for testing, apply dummy filter so that data is shown.
            messenger.Publish(new Messages.FiltersAppliedMessage());

            DataContext = new
            {
                Report = reportViewModel,
                Filters = filterViewModel
            };
        }
예제 #24
0
            public void LocksRoomIfOwner()
            {
                var repository = new InMemoryRepository();
                var user       = new ChatUser
                {
                    Name = "foo"
                };

                repository.Add(user);
                var room = new ChatRoom
                {
                    Name = "Room"
                };

                room.Users.Add(user);
                room.Owners.Add(user);
                user.OwnedRooms.Add(room);
                user.Rooms.Add(room);

                var service = new ChatService(repository, new Mock <ICryptoService>().Object);

                service.LockRoom(user, room);

                Assert.True(room.Private);
                Assert.True(user.AllowedRooms.Contains(room));
                Assert.True(room.AllowedUsers.Contains(user));
            }
예제 #25
0
        public void UpdateCustomer_ShouldUpdateValidCustomer()
        {
            //Fixture Setup
            var customer = new Customer()
            {
                CustomerCode  = "1002",
                FirstName     = "Yang",
                MiddleName    = "Ling",
                LastName      = "Yiao",
                DateOfBirth   = DateTime.Now,
                Gender        = "Female",
                StreetAddress = "6 Kimbery Ave",
                Suburb        = "Chatswood",
                PostCode      = "2065",
                State         = "Sydney",
                PhoneNo       = "4325345435345"
            };

            var customerRepo = new InMemoryRepository <Customer>();

            customerRepo.Add(customer);

            var customerService = new CustomerService(customerRepo);

            var expected = new Customer()
            {
                CustomerCode  = "1001",
                FirstName     = "Ken",
                MiddleName    = "Yew",
                LastName      = "Hang",
                DateOfBirth   = DateTime.Now,
                Gender        = "Male",
                StreetAddress = "5 Kimbery Ave",
                Suburb        = "Lane Cove",
                PostCode      = "2066",
                State         = "Sydney",
                PhoneNo       = "4325435345"
            };

            //Exercise the SUT (system under test)
            customerService.UpdateCustomer(customer.Id, expected.DateOfBirth, expected.FirstName, expected.LastName,
                                           expected.MiddleName, expected.Gender, expected.PhoneNo, expected.StreetAddress, expected.PostCode,
                                           expected.Suburb, expected.State);

            // State Verification
            var actual = customerRepo.Get(customer.Id);

            Assert.Equal(1, customerRepo.Count());
            Assert.Equal(expected.FirstName, actual.FirstName);
            Assert.Equal(expected.LastName, actual.LastName);
            Assert.Equal(expected.DateOfBirth, actual.DateOfBirth);
            Assert.Equal(expected.Gender, actual.Gender);
            Assert.Equal(expected.StreetAddress, actual.StreetAddress);
            Assert.Equal(expected.Suburb, actual.Suburb);
            Assert.Equal(expected.State, actual.State);
            Assert.Equal(expected.PostCode, actual.PostCode);
            Assert.Equal(expected.PhoneNo, actual.PhoneNo);
            Assert.Equal(expected.CustomerCode, actual.CustomerCode);
        }
예제 #26
0
            public void ThrowsIfNameIsTaken()
            {
                var repository = new InMemoryRepository();
                var user       = new ChatUser
                {
                    Name = "Test"
                };

                repository.Add(user);
                repository.Add(new ChatUser()
                {
                    Name = "taken"
                });
                var service = new ChatService(repository, new Mock <ICryptoService>().Object);

                Assert.Throws <InvalidOperationException>(() => service.ChangeUserName(user, "taken"));
            }
예제 #27
0
        public void ForEach_Should_Loop_Through_All()
        {
            var i = 0;
            var repository = new InMemoryRepository<Contact, int>();
            repository.Add(new Contact());
            repository.Add(new Contact());
            repository.Add(new Contact());
            repository.Add(new Contact());
            repository.Add(new Contact());

            foreach (var contact in repository)
            {
                i++;
            }

            i.ShouldEqual(5);
        }
예제 #28
0
        public void Add_adds_to_internal_list()
        {
            var list = new List<string> { "Apple", "Ball", "Cat", "Dog" };
            var repository = new InMemoryRepository<string>(list);

            repository.Add("DoDo");
            Assert.That(list.Contains("DoDo"));
        }
        public void Add_AddsItems()
        {
            var subject = new InMemoryRepository <RepositorySubject, int>(1, 2);

            subject.Add(3);
            Assert.That(subject.Count(), Is.EqualTo(3));
            Assert.That(subject.FindOne(e => e.Id == 3), Is.Not.Null);
        }
        public void Add_AlreadyExisting_AddThemNonetheless()
        {
            var subject = new InMemoryRepository <RepositorySubject, int>(1, 2);

            subject.Add(1);
            Assert.That(subject.Count(), Is.EqualTo(3));
            Assert.That(subject.FindAll(e => e.Id == 1).Count, Is.EqualTo(2));
        }
예제 #31
0
            public void ThrowsIfActingUserIsNotAdmin()
            {
                var repository = new InMemoryRepository();
                var nonAdmin = new ChatUser
                {
                    Name = "foo"
                };
                var user = new ChatUser
                {
                    Name = "foo2"
                };
                repository.Add(nonAdmin);
                repository.Add(user);

                var service = new ChatService(new Mock<ICache>().Object, repository);

                Assert.Throws<HubException>(() => service.AddAdmin(nonAdmin, user));
            }
예제 #32
0
            public void ThrowsIfActingUserIsNotAdmin()
            {
                var repository = new InMemoryRepository();
                var nonAdmin = new ChatUser
                {
                    Name = "foo"
                };
                var user = new ChatUser
                {
                    Name = "foo2"
                };
                repository.Add(nonAdmin);
                repository.Add(user);

                var service = new ChatService(repository, new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AddAdmin(nonAdmin, user));
            }
        public void DocumentVersionService_GetDocumentVersion_GetsTheVersionWithTheRequestedId()
        {
            var documentVersion = new DocumentVersion();

            _documentVersionRepository.Add(documentVersion);

            var version = _documentVersionsAdminService.GetDocumentVersion(documentVersion.Id);

            version.Should().Be(documentVersion);
        }
예제 #34
0
        public void Add_adds_to_internal_list()
        {
            var list = new List <string> {
                "Apple", "Ball", "Cat", "Dog"
            };
            var repository = new InMemoryRepository <string>(list);

            repository.Add("DoDo");
            Assert.That(list.Contains("DoDo"));
        }
        public void TryFindOne_MultipleResults_Null()
        {
            var subject = new InMemoryRepository <RepositorySubject, int>(new RepositorySubject(1, string.Empty), 2);

            subject.Add(new RepositorySubject(1, "one"));
            RepositorySubject entity;

            Assert.That(subject.TryFindOne(e => e.Id % 2 != 0, out entity), Is.False);
            Assert.That(entity, Is.Null);
        }
 public CurrentSiteLocatorTests()
 {
     CurrentSite = new Site {
         Name = "Current Site", BaseUrl = "www.currentsite.com", Id = 1
     };
     _httpRequestBase    = A.Fake <HttpRequestBase>();
     _inMemoryRepository = new InMemoryRepository <Site>();
     _currentSiteLocator = new CurrentSiteLocator(_inMemoryRepository, _httpRequestBase);
     _inMemoryRepository.Add(CurrentSite);
 }
예제 #37
0
        public void Changed_Convention_To_SomeRandomPrimaryKeyProperty_Should_Work()
        {
            var repository = new InMemoryRepository<ConventionTestItem3>();
            repository.Conventions.GetPrimaryKeyName = _ =>  "SomeRandomPrimaryKeyProperty" ;

            var item = new ConventionTestItem3() { Name = "Test1" };
            repository.Add(item);

            // The PK should have been found and updated so it's not zero anymore
            item.SomeRandomPrimaryKeyProperty.ShouldNotEqual(0);
        }
예제 #38
0
        public static InMemoryRepository<Photo> GetPhotoRepository(int numberOfPhotos = TestConstants.DefaultNumberOfModels)
        {
            var repo = new InMemoryRepository<Photo>();

            for (int i = 0; i < numberOfPhotos; i++)
            {
                repo.Add(GetValidPhoto(i));
            }

            return repo;
        }
예제 #39
0
        public ActionResult Create([Bind(Include = "Id,Name")] Administrator administrator)
        {
            if (ModelState.IsValid)
            {
                administrator.Id = db.GetAll <Administrator>().Select(a => a.Id).Max() + 1;
                db.Add(administrator);
                return(RedirectToAction("Index"));
            }

            return(View(administrator));
        }
예제 #40
0
        public ActionResult Create([Bind(Include = "Id,Username")] ApplicationUser applicationUser)
        {
            if (ModelState.IsValid)
            {
                applicationUser.Id = db.GetAll <ApplicationUser>().Select(a => a.Id).Max() + 1;
                db.Add(applicationUser);
                return(RedirectToAction("Index"));
            }

            return(View(applicationUser));
        }
예제 #41
0
        /// <summary>
        /// Fired when a client joins the chat. Here round trip state is available and we can register the user in the list
        /// </summary>
        public void Joined()
        {
            ChatUser user = new ChatUser()
            {
                Id       = Context.ConnectionId,
                Username = Clients.Caller.username
            };

            _repository.Add(user);
            Clients.All.joins(Context.ConnectionId, Clients.Caller.username, DateTime.Now);
        }
        public void TestUpdate_ShouldReturnUpdatedPizzaObjectFromRepo()
        {
            // Setup Fixture
            var _pizzaRepo = new InMemoryRepository <Pizza>();
            var _sizeRepo  = new InMemoryRepository <Size>();

            _sizeRepo.Add(new Size()
            {
                Description = "Familiar", Price = 21m
            });
            _sizeRepo.Add(new Size()
            {
                Description = "Personal", Price = 12m
            });

            var pizza = new Pizza()
            {
                Id       = 1,
                Name     = "Big Ozzi",
                Size     = _sizeRepo.Get(1),
                Toppings = new List <Topping>()
                {
                    new Topping {
                        Name = "Cheese", Price = 3.5m
                    }
                }
            };

            _pizzaRepo.Add(pizza);
            var _pizzaService = new PizzaAppService(_pizzaRepo);

            var expected = new Pizza()
            {
                Id       = 1,
                Name     = "Mighty Hawaian",
                Size     = _sizeRepo.Get(2),
                Toppings = new List <Topping>()
                {
                    new Topping {
                        Name = "Cheddar Cheese", Price = 4.5m
                    }
                }
            };

            // Execute SUT

            _pizzaService.Update(expected.Id, expected.Name, expected.Size, expected.Toppings);

            var actual = _pizzaRepo.Get(expected.Id);

            // Verify Outcomes

            ArePizzasSame(expected, actual);
        }
예제 #43
0
        public void Add_Should_Save_And_Assign_1_To_InMemory_Int_Id()
        {
            var dbPath     = EfDataDirectoryFactory.Build();
            var repository = new InMemoryRepository <ContactInt, int>();
            var contact    = new ContactInt {
                Name = "Test User"
            };

            repository.Add(contact);
            contact.ContactIntId.ShouldEqual(1);
        }
예제 #44
0
        public void ExecuteGetAll_With_Selector_Should_Use_Cache_After_First_Call()
        {
            var repos = new InMemoryRepository <Contact>(new StandardCachingStrategy <Contact>(cacheProvider));

            repos.Add(new Contact {
                Name = "Test1"
            });
            repos.Add(new Contact {
                Name = "Test2"
            });

            var items = repos.GetAll(x => x.Name);

            repos.CacheUsed.ShouldBeFalse();
            items.Count().ShouldBe(2);

            items = repos.GetAll(x => x.Name);
            repos.CacheUsed.ShouldBeTrue();
            items.Count().ShouldBe(2);
        }
예제 #45
0
            public void ThrowsIfNameInUse()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser()
                {
                    Name = "taken"
                });
                var service = new MembershipService(repository, new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AddUser("taken", "email", password: null));
            }
        public void ExecuteFind_Should_Use_Cache_After_First_Call()
        {
            var repos = new InMemoryRepository <Contact>(new StandardCachingStrategy <Contact>());

            repos.Add(new Contact {
                Name = "Test1"
            });
            repos.Add(new Contact {
                Name = "Test2"
            });

            var item = repos.Find(x => x.ContactId == 1);

            repos.CacheUsed.ShouldBeFalse();
            item.ShouldNotBeNull();

            item = repos.Find(x => x.ContactId == 1);
            repos.CacheUsed.ShouldBeTrue();
            item.ShouldNotBeNull();
        }
예제 #47
0
            public IJabbrRepository CreateRoomRepository()
            {
                var repository = new InMemoryRepository();
                var room = new ChatRoom() { Name = "hashtag" };
                var user = new ChatUser() { Name = "testhashtaguser" };
                repository.Add(room);
                room.Users.Add(user);
                user.Rooms.Add(room);

                return repository;
            }
예제 #48
0
        public static InMemoryRepository<Comment> GetCommentRepository(int numberOfCommens = TestConstants.DefaultNumberOfModels)
        {
            var repo = new InMemoryRepository<Comment>();

            for (int i = 0; i < numberOfCommens; i++)
            {
                repo.Add(GetValidComment(i));
            }

            return repo;
        }
예제 #49
0
        public ActionResult Create([Bind(Include = "Id,Name,EnrollmentDate,DateOfBirth,Address")] Student student)
        {
            if (ModelState.IsValid)
            {
                student.Id = db.GetAll <Student>().Max(s => s.Id) + 1;
                db.Add(student);
                return(RedirectToAction("Index"));
            }

            return(View(student));
        }
예제 #50
0
        public void TestObject_Should_Not_Have_MinValue_For_Created_After_Add()
        {
            var repository = new InMemoryRepository<AspectTestObject>();
            var testObject = new AspectTestObject {AspectTestObjectId = 1, Name = "Test 1"};

            testObject.Created.ShouldEqual(DateTime.MinValue);

            repository.Add(testObject);

            testObject.Created.ShouldNotEqual(DateTime.MinValue);
        }
        public void ExecuteFindAll_Should_Use_Cache_After_First_Call()
        {
            var repos = new InMemoryRepository <Contact>(new StandardCachingStrategy <Contact>());

            repos.Add(new Contact {
                Name = "Test1"
            });
            repos.Add(new Contact {
                Name = "Test2"
            });

            var items = repos.FindAll(x => x.ContactId < 3);

            repos.CacheUsed.ShouldBeFalse();
            items.Count().ShouldEqual(2);

            items = repos.FindAll(x => x.ContactId < 3);
            repos.CacheUsed.ShouldBeTrue();
            items.Count().ShouldEqual(2);
        }
예제 #52
0
        public static InMemoryRepository<Album> GetAlbumRepository(int numberOfAlbums = TestConstants.DefaultNumberOfModels)
        {
            var repo = new InMemoryRepository<Album>();

            for (int i = 0; i < numberOfAlbums; i++)
            {
                repo.Add(GetValidAlbum(i));
            }

            return repo;
        }
예제 #53
0
            public void ThrowsIfNameInUse()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser()
                {
                    Name = "taken"
                });
                var service = new ChatService(new Mock<ICache>().Object, repository,new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AddUser("taken", clientId: null, userAgent: null, password: null));
            }
예제 #54
0
            public void ThrowsIfNameInUse()
            {
                var repository = new InMemoryRepository();

                repository.Add(new ChatUser()
                {
                    Name = "taken"
                });
                var service = new ChatService(repository, new Mock <ICryptoService>().Object);

                Assert.Throws <InvalidOperationException>(() => service.AddUser("taken", clientId: null, userAgent: null, password: null));
            }
예제 #55
0
            public void ThrowsIfUserPasswordNotSet()
            {
                var repository = new InMemoryRepository();

                repository.Add(new ChatUser
                {
                    Name = "SomeUser"
                });
                var service = new ChatService(repository, new Mock <ICryptoService>().Object);

                Assert.Throws <InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "password"));
            }
예제 #56
0
        public void Setup()
        {
            Repository        = new InMemoryRepository <Company>();
            MembershipService = new InMemoryMembershipService();
            Sut = new IBSController(Repository);

            Repository.Add(new Company
            {
                Id          = CompanyId,
                CompanyName = "Taxi Diamond"
            });
        }
        public void Cache_Should_Timeout()
        {
            var repository = new InMemoryRepository<Contact, int>(new TimeoutCachingStrategy<Contact, int>(2) { CachePrefix = "#RepoTimeoutCache" });
            repository.Add(new Contact() { Name = "Test User" });

            repository.Get(1);
            repository.CacheUsed.ShouldBeTrue();

            Thread.Sleep(5000);

            repository.Get(1);
            repository.CacheUsed.ShouldBeFalse();
        }
        public void Join_GetAll_Should_Return_All_Items(IRepository<Contact, string> repository)
        {
            for (var i = 1; i <= 5; i++)
            {
                var contact = new Contact { Name = "Test User " + i, ContactTypeId = (i % 2) + 1};
                repository.Add(contact);
            }

            var contactTypeRepository = new InMemoryRepository<ContactType, int>();
            contactTypeRepository.Add(new ContactType() { ContactTypeId = 1, Abbreviation = "T1"});
            contactTypeRepository.Add(new ContactType() { ContactTypeId = 2, Abbreviation = "T2" });

            var compositeRepos = repository.Join(contactTypeRepository, c => c.ContactTypeId, ct => ct.ContactTypeId,
                            (c, ct) => new { Id = c.ContactId, Name = c.Name, TypeAbbrev = ct.Abbreviation });

            var all = compositeRepos.GetAll().ToList();

            all.Count.ShouldEqual(5);

            //IEnumerable<Contact> result = repository.GetAll().ToList();
            //result.Count().ShouldEqual(5);
        }
예제 #59
0
            public void MakesUserAdmin()
            {
                var repository = new InMemoryRepository();
                var admin = new ChatUser
                {
                    Name = "foo",
                    IsAdmin = true
                };
                var user = new ChatUser
                {
                    Name = "foo2",
                    IsAdmin = false
                };
                repository.Add(admin);
                repository.Add(user);

                var service = new ChatService(new Mock<ICache>().Object, repository);

                service.AddAdmin(admin, user);

                Assert.True(user.IsAdmin);
            }
예제 #60
0
            public void AddsNewMessageToRepository()
            {
                var repository = new InMemoryRepository();
                var user = new ChatUser
                {
                    Name = "foo"
                };
                repository.Add(user);
                var room = new ChatRoom
                {
                    Name = "Room"
                };
                repository.Add(room);
                room.Users.Add(user);
                user.Rooms.Add(room);

                var service = new ChatService(repository);
                ChatMessage message = service.AddMessage(user, room, "Content");

                Assert.NotNull(message);
                Assert.Same(message, room.Messages.First());
                Assert.Equal("Content", message.Content);
            }