public TestEnvironment()
            {
                UserSecrets = new MemoryRepository <UserSecret>(new[]
                {
                    new UserSecret {
                        Id = "user01"
                    },
                    new UserSecret {
                        Id = "user03"
                    }
                });

                RealtimeService = new SFMemoryRealtimeService();

                ParatextService = Substitute.For <IParatextService>();
                ParatextService.GetParatextUsername(Arg.Is <UserSecret>(u => u.Id == "user01")).Returns("PT User 1");
                ParatextService.GetParatextUsername(Arg.Is <UserSecret>(u => u.Id == "user03")).Returns("PT User 3");
                var options = Microsoft.Extensions.Options.Options.Create(new LocalizationOptions
                {
                    ResourcesPath = "Resources"
                });
                var factory = new ResourceManagerStringLocalizerFactory(options, NullLoggerFactory.Instance);

                Localizer = new StringLocalizer <SharedResource>(factory);
                var siteOptions = Substitute.For <IOptions <SiteOptions> >();

                siteOptions.Value.Returns(new SiteOptions
                {
                    Name = "xForge",
                });
                Mapper = new ParatextNotesMapper(UserSecrets, ParatextService, Localizer, siteOptions);
            }
예제 #2
0
        public async Task InsertTest()
        {
            MemoryRepository       repository   = new MemoryRepository();
            IEnumerable <Employee> employeeList = await repository.GetAll();

            Assert.AreEqual(employeeList.Count(), 0);

            await repository.Insert(new Employee { Id = 1, FirstName = "Employee 1", LastName = "Employee 1", Email = "Email 1" });

            employeeList = await repository.GetAll();

            Assert.AreEqual(employeeList.Count(), 1);

            await repository.Insert(new Employee { Id = 2, FirstName = "Employee 2", LastName = "Employee 2", Email = "Email 2" });

            employeeList = await repository.GetAll();

            Assert.AreEqual(employeeList.Count(), 2);

            await repository.DeleteAll();

            employeeList = await repository.GetAll();

            Assert.AreEqual(employeeList.Count(), 0);
        }
예제 #3
0
 public StubDataCustomerRepository(MemoryRepository <Customer> memRepository)
 {
     this._memRepository = memRepository;
     _memRepository.Add(Customer.Create(1, "William Han"));
     _memRepository.Add(Customer.Create(2, "Martin Fowler"));
     _memRepository.Add(Customer.Create(3, "Uncle Bob"));
 }
예제 #4
0
 public void should_create_unique_admin_user()
 {
     var userRepository = new MemoryRepository<User>();
     var userCreationService = new UserCreateService(userRepository);
     var user = userCreationService.Create(Username, Password, Email, true, "");
     user.Administrator.ShouldBeTrue();
 }
 public void Constructors()
 {
   using (var repository = new MemoryRepository<TestEntity>())
   {
     Assert.False(repository.Any());
   }
 }
        public static MemoryRepository<Post> GetPostsRepository()
        {
            var postsRepository = new MemoryRepository<Post>();
            var users = GetUsersRepository();
            var threads = GetThreadsRepository();

            for (int i = 0; i < 20; i++)
            {
                var thread = threads.GetById(i % 5);
                var user = users.GetById("id" + i % 10);
                var post = new Post
                {
                    Content = "content" + i,
                    Id = i,
                    PostDate = new DateTime(2015, 11, i + 1),
                    ThreadId = thread.Id,
                    Thread = thread,
                    UserId = user.Id,
                    User = user
                };

                postsRepository.Add(post);
            }

            return postsRepository;
        }
예제 #7
0
 public void EventReplayingOnStartUp(
     List <SomeEvent> eventStore,
     IRepository <string, SomeData> repository,
     View view,
     ISequenceResolver sequenceResolver,
     IEventResolver eventResolver,
     IViewManager viewManager)
 {
     "Given an event store with three events"._(() => eventStore =
                                                    new List <SomeEvent>
     {
         new SomeEvent {
             Sequence = 1, Id = "test"
         },
         new SomeEvent {
             Sequence = 2, Id = "test2"
         },
         new SomeEvent {
             Sequence = 3, Id = "test3"
         },
     });
     "and a view repository"._(() => repository = new MemoryRepository <string, SomeData>());
     "and a view"._(() => view = new SomeView(repository));
     "and a sequence resolver"._(() => sequenceResolver    = new CustomSequenceResolver());
     "and an event resolver"._(() => eventResolver         = new CustomEventResolver(eventStore));
     "when a view manager is created"._(ctx => viewManager =
                                            ViewManager.ForViews(view)
                                            .OrderEventsUsing(sequenceResolver).StartAtSequenceNumber(0)
                                            .ResolveMissingEventsUsing(eventResolver).WithATimeoutOf(Timeout.Infinite)
                                            .Create().Using(ctx));
     "and the operation is given time to process"._(() => Thread.Sleep(1000));
     "then the view received the third event last"._(() => repository.Get("root").LastEventId.Should().Be(eventStore[2].Id));
     "and the view received three events"._(() => repository.Get("root").EventCount.Should().Be(3));
 }
 public MemorySellUnitOfWork()
 {
     customerRepository = new MemoryRepository <Customer>();
     employeeRepository = new MemoryRepository <Employee>();
     orderRepository    = new MemoryRepository <Order>();
     productRepository  = new MemoryRepository <Product>();
 }
예제 #9
0
 /// <summary>
 /// Optional repository for tracking the objects relationship to other <see cref="SpontaneousObject"/>
 /// </summary>
 /// <param name="repository"></param>
 protected SpontaneousObject(MemoryRepository repository)
 {
     if (repository != null)
     {
         repository.InsertAndHydrate(this, new Dictionary <string, object>());
     }
 }
예제 #10
0
 public void should_not_indicate_new_install_flag_when_there_are_users()
 {
     var userRepository = new MemoryRepository<User>(new User());
     var handler = new PublicGetHandler(userRepository);
     var model = handler.Execute();
     model.IsNewInstall.ShouldBeFalse();
 }
        public void CanSnapshotSingleViewDuringDispatch()
        {
            var repository         = new TestRepository();
            var views              = new View[] { new SomeView(repository) };
            var snapshotRepository = new MemoryRepository <string, Snapshot>();
            var firstEvent         = new SomeEvent {
                Id = "test"
            };
            var secondEvent = new SomeEvent {
                Id = "test2"
            };

            using (var snapshotManager = new SnapshotManager(views, snapshotRepository, 20))
            {
                snapshotManager.Dispatch(new Event {
                    SequenceNumber = 1, Payload = firstEvent
                });

                // act
                var preSnapshotEvent = repository.Get(secondEvent.Id);
                repository.WaitUntilSnapshotSaveStarted();
                repository.WaitUntilSnapshotSaveEnded();
                snapshotManager.Dispatch(new Event {
                    SequenceNumber = 2, Payload = secondEvent
                });

                repository.WaitUntilSnapshotSaveEnded();
                var postSnapshotEvent = repository.Get(secondEvent.Id);

                // assert
                preSnapshotEvent.Should().BeNull();
                postSnapshotEvent.Should().Be(secondEvent);
            }
        }
예제 #12
0
        private MemoryDataContext CreateMockdataContext()
        {
            var docs  = new MemoryRepository <Document>();
            var repos = new MemoryRepository <Repository>();
            var orgs  = new MemoryRepository <Organization>();
            var users = new MemoryRepository <User>();

            var newOrg = new Organization()
            {
                Created = DateTime.UtcNow,
                Updated = DateTime.UtcNow,
                Name    = "Test Org",
            };

            orgs.Add(newOrg);

            var repoData = new MemoryMetadata()
            {
                HasPassword   = true,
                Password      = "******",
                RootDirectory = @"C:\Users\alija\Documents\Programming\Test%20Project"
            };

            var newRepo = new Repository()
            {
                Name           = "Test Repo",
                OrganizationId = newOrg.Id,
                SCM            = SupportedSystems.Memory,
                CustomRepositoryInformation = JsonConvert.SerializeObject(repoData)
            };

            repos.Add(newRepo);

            return(new MemoryDataContext(docs, orgs, repos, users));
        }
예제 #13
0
            public TestEnvironment()
            {
                IServiceProvider serviceProvider = Substitute.For <IServiceProvider>();

                RealtimeService = new SFMemoryRealtimeService();
                ParatextService = Substitute.For <IParatextService>();
                var userSecrets = new MemoryRepository <UserSecret>(new[]
                {
                    new UserSecret {
                        Id = "user01", ParatextTokens = new Tokens
                        {
                            AccessToken  = CreateAccessToken(DateTime.Now),
                            RefreshToken = "test_refresh_token1"
                        }
                    },
                    new UserSecret {
                        Id = "user03", ParatextTokens = new Tokens
                        {
                            AccessToken  = CreateAccessToken(DateTime.Now),
                            RefreshToken = "test_refresh_token2"
                        }
                    }
                });

                SetupSFData(true, true);

                ParatextSyncRunner = Substitute.For <IParatextSyncRunner>();
                Func <IParatextSyncRunner> syncRunnerFactory = () => ParatextSyncRunner;

                ProgramLogger = Substitute.For <IProgramLogger>();
                Service       = new SyncAllService(syncRunnerFactory, RealtimeService, ParatextService, userSecrets,
                                                   ProgramLogger);
            }
예제 #14
0
        public void GetNotes_WhenNotEmptyRepository_ReturnAllItems()
        {
            var repository = new MemoryRepository();
            var note1      = new Note {
                Title = "note1"
            };

            repository.AddNote(note1);
            var note2 = new Note {
                Title = "note2"
            };

            repository.AddNote(note2);
            var note3 = new Note {
                Title = "note3"
            };

            repository.AddNote(note3);
            var note4 = new Note {
                Title = "note4"
            };

            repository.AddNote(note4);
            var note5 = new Note {
                Title = "note5"
            };

            repository.AddNote(note5);

            var list = repository.GetNotes();

            Assert.Equal(5, list.Count);
        }
예제 #15
0
        public void GetNotes_WhenEmptyRepository_ReturnEmptyList()
        {
            var repository = new MemoryRepository();
            var list       = repository.GetNotes();

            Assert.Empty(list);
        }
예제 #16
0
        public void Add_WhenAddNote_ReturnNewId()
        {
            var repository = new MemoryRepository();
            var note1      = new Note {
                Title = "note1"
            };

            repository.AddNote(note1);
            Assert.Equal(1, note1.Id);
            var note2 = new Note {
                Title = "note2"
            };

            repository.AddNote(note2);
            Assert.Equal(2, note2.Id);
            var note3 = new Note {
                Title = "note3"
            };

            repository.AddNote(note3);
            Assert.Equal(3, note3.Id);
            var note4 = new Note {
                Title = "note4"
            };

            repository.AddNote(note4);
            Assert.Equal(4, note4.Id);
            var note5 = new Note {
                Title = "note5"
            };

            repository.AddNote(note5);
            Assert.Equal(5, note5.Id);
        }
예제 #17
0
 public void DispatchingEventsInTheWrongOrderWithANonZeroStartingSequenceNumber(
     IRepository <string, SomeData> repository,
     View view,
     ISequenceResolver sequenceResolver,
     IViewManager viewManager,
     SomeEvent firstEvent,
     SomeEvent secondEvent)
 {
     "Given a view repository"._(() => repository = new MemoryRepository <string, SomeData>());
     "and a view"._(() => view = new SomeView(repository));
     "and a sequence resolver"._(() => sequenceResolver = new CustomSequenceResolver());
     "and a view manager"._(ctx => viewManager          =
                                ViewManager.ForViews(view).OrderEventsUsing(sequenceResolver).StartAtSequenceNumber(2).Create().Using(ctx));
     "and a first event"._(() => firstEvent = new SomeEvent {
         Sequence = 2, Id = "test2"
     });
     "and a second event"._(() => secondEvent = new SomeEvent {
         Sequence = 3, Id = "test3"
     });
     "when those events are dispatched out of order"._(
         () =>
     {
         viewManager.QueueForDispatch(secondEvent);
         viewManager.QueueForDispatch(firstEvent);
     });
     "and the operation is given time to process"._(() => Thread.Sleep(1000));
     "then the view received the second event last"._(() => repository.Get("root").LastEventId.Should().Be(secondEvent.Id));
     "and the view received two events"._(() => repository.Get("root").EventCount.Should().Be(1));
 }
예제 #18
0
        public static void AddExpensesRepository(this IServiceCollection services)
        {
            var today         = DateTime.Today;
            var lastMonth     = DateTime.Today.AddMonths(-1);
            var previousMonth = DateTime.Today.AddMonths(-2);

            var expensesRepository = new MemoryRepository <Expense>();

            expensesRepository.Add(new Expense {
                Date = new DateTime(previousMonth.Year, previousMonth.Month, 8), Amount = 1050, Category = ExpenseCategory.Housing, Subject = "Rent"
            });
            expensesRepository.Add(new Expense {
                Date = new DateTime(previousMonth.Year, previousMonth.Month, 18), Amount = 140, Category = ExpenseCategory.Education, Subject = "Books"
            });
            expensesRepository.Add(new Expense {
                Date = new DateTime(lastMonth.Year, lastMonth.Month, 6), Amount = 1050, Category = ExpenseCategory.Housing, Subject = "Rent"
            });
            expensesRepository.Add(new Expense {
                Date = new DateTime(lastMonth.Year, lastMonth.Month, 15), Amount = 415, Category = ExpenseCategory.Healthcare, Subject = "H-Care"
            });
            expensesRepository.Add(new Expense {
                Date = new DateTime(lastMonth.Year, lastMonth.Month, 27), Amount = 76, Category = ExpenseCategory.Entertainment, Subject = "Harry Potter Series"
            });
            expensesRepository.Add(new Expense {
                Date = new DateTime(today.Year, today.Month, 7), Amount = 1050, Category = ExpenseCategory.Housing, Subject = "Rent"
            });
            expensesRepository.Add(new Expense {
                Date = new DateTime(today.Year, today.Month, 13), Amount = 870, Category = ExpenseCategory.Entertainment, Subject = "New TV"
            });

            services.AddSingleton <IRepository <Expense> >(expensesRepository);
        }
        public void ReadLast_WhenCalled_ReturnClockInOutObject()
        {
            var memoryRepository = new MemoryRepository();
            var date             = DateTime.Now;
            var clockInOut       = new ClockInOut
            {
                UserId = 1,
                Date   = date,
                Type   = ClockType.In
            };
            var clockInOutLast = new ClockInOut
            {
                UserId = 1,
                Date   = date,
                Type   = ClockType.Out
            };

            memoryRepository.Write(clockInOut);
            memoryRepository.Write(clockInOut);
            memoryRepository.Write(clockInOutLast);

            var result1 = memoryRepository.ReadLast(1);
            var result2 = memoryRepository.ReadLast(2);

            result1.Should().NotBeNull();
            result1.Type.Should().Equals(ClockType.Out);
            result2.Should().BeNull();
        }
예제 #20
0
        public static void AddEarningsRepository(this IServiceCollection services)
        {
            var today         = DateTime.Today;
            var lastMonth     = DateTime.Today.AddMonths(-1);
            var previousMonth = DateTime.Today.AddMonths(-2);

            var earningRepository = new MemoryRepository <Earning>();

            earningRepository.Add(new Earning {
                Date = new DateTime(previousMonth.Year, previousMonth.Month, 25), Amount = 2480, Category = EarningCategory.Salary, Subject = "Monthly Salary"
            });
            earningRepository.Add(new Earning {
                Date = new DateTime(previousMonth.Year, previousMonth.Month, 12), Amount = 440, Category = EarningCategory.Freelancing, Subject = "Freelancing Client A"
            });
            earningRepository.Add(new Earning {
                Date = new DateTime(lastMonth.Year, lastMonth.Month, 25), Amount = 2480, Category = EarningCategory.Salary, Subject = "Monthly Salary"
            });
            earningRepository.Add(new Earning {
                Date = new DateTime(lastMonth.Year, lastMonth.Month, 12), Amount = 790, Category = EarningCategory.Freelancing, Subject = "Freelancing Client A"
            });
            earningRepository.Add(new Earning {
                Date = new DateTime(lastMonth.Year, lastMonth.Month, 4), Amount = 387, Category = EarningCategory.CapitalGain, Subject = "ETF Dividends"
            });
            earningRepository.Add(new Earning {
                Date = new DateTime(today.Year, today.Month, 25), Amount = 2480, Category = EarningCategory.Salary, Subject = "Monthly Salary"
            });
            earningRepository.Add(new Earning {
                Date = new DateTime(today.Year, today.Month, 14), Amount = 680, Category = EarningCategory.Freelancing, Subject = "Freelancing Client A"
            });
            earningRepository.Add(new Earning {
                Date = new DateTime(today.Year, today.Month, 12), Amount = 245, Category = EarningCategory.Flipping, Subject = "Old TV"
            });

            services.AddSingleton <IRepository <Earning> >(earningRepository);
        }
        public async void Add_ModifiedViaNewInstance_ShouldUpdateOriginal()
        {
            // Arrange
            string oldValue = "Old Value";
            string newValue = "New Value";
            Guid   entityId = Guid.NewGuid();

            IRepositoryWithGuidKey <FakeEntity> repository = new MemoryRepository <FakeEntity>();
            FakeEntity originalEntity = new FakeEntity
            {
                EntityId = entityId,
                Value    = oldValue
            };
            FakeEntity modifiedEntity = new FakeEntity
            {
                EntityId = entityId,
                Value    = newValue
            };

            // Act
            bool result = await repository.SaveAsync(originalEntity);

            result = result && await repository.SaveAsync(modifiedEntity);

            // Assert
            Assert.True(result);
            Assert.NotSame(originalEntity, modifiedEntity);
            Assert.Equal(originalEntity.Value, modifiedEntity.Value);
        }
예제 #22
0
        public void MemoryRepository_should_support_filters_in_LoadWith_expressions()
        {
            IRepository repository = new MemoryRepository(new CoreTestsMappingSourceManager());

            ClassA entityA = new ClassA();

            repository.Insert(entityA);

            repository.Insert(new ClassB()
            {
                ClassAId = entityA.Id, Name = "B1"
            });
            repository.Insert(new ClassB()
            {
                ClassAId = entityA.Id, Name = "B2"
            });
            repository.Insert(new ClassB()
            {
                ClassAId = entityA.Id, Name = "B3"
            });

            LoadOptions options = new LoadOptions();

            options.LoadWith <ClassA>(a => a.ClassBs.Where(b => b.Name == "B1" || b.Name == "B2"));

            var selected = repository.All <ClassA>(options).SingleOrDefault();

            Assert.IsNotNull(selected);
            Assert.IsNotNull(selected.ClassBs);
            Assert.AreEqual(2, selected.ClassBs.Count);
        }
예제 #23
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddAutoMapper();

            var memoryRepository = new MemoryRepository <Employee>();

            SetupEmployees().ForEach(employee => memoryRepository.Save(employee.Id, employee));
            services.AddSingleton <IRepository <Employee> >(memoryRepository);

            services.AddTransient <IEmployeeService, EmployeeService>();
            services.AddTransient <IQuoteService, QuoteService>();
            services.AddTransient <IRuleEvaluator, DiscountCalculator>();

            /* Rules Registration */
            services.AddTransient(r => new NameStartingWithTheLetterA(1000, 500, (decimal).1));

            services.AddTransient <Func <string, IDiscountRule[]> >(serviceProvider => key =>
            {
                switch (key)
                {
                case "NameStartingWithTheLetterA":
                    return(new[] { serviceProvider.GetService <NameStartingWithTheLetterA>() });

                case "All":
                    return(new[] { serviceProvider.GetService <NameStartingWithTheLetterA>() });

                default:
                    throw new KeyNotFoundException();
                }
            });
        }
예제 #24
0
        public void Load_With_Many_To_One()
        {
            IRepository repository = new MemoryRepository(new CoreTestsMappingSourceManager());

            ClassA entityA = new ClassA()
            {
            };

            repository.Insert(entityA);

            ClassB entityB = new ClassB()
            {
                ClassAId = entityA.Id
            };

            repository.Insert(entityB);

            LoadOptions options = new LoadOptions();

            options.LoadWith <ClassB>(b => b.ClassA);

            var selected = repository.All <ClassB>(options)
                           .Where(b => b.Id == entityB.Id)
                           .SingleOrDefault();

            Assert.IsNotNull(selected);
            Assert.IsNotNull(selected.ClassA);
            Assert.AreEqual(entityA.Id, selected.ClassA.Id);
        }
예제 #25
0
            public TestEnvironment()
                : base("project-users")
            {
                Users = new MemoryRepository <UserEntity>(new[]
                {
                    new UserEntity {
                        Id = "user01"
                    },
                    new UserEntity {
                        Id = "user02"
                    },
                    new UserEntity {
                        Id = "user03"
                    }
                });
                ParatextService = Substitute.For <IParatextService>();
                var jobs                = Substitute.For <IRepository <SyncJobEntity> >();
                var engineService       = Substitute.For <IEngineService>();
                var backgroundJobClient = Substitute.For <IBackgroundJobClient>();

                Service = new SFProjectUserService(JsonApiContext, Mapper, UserAccessor, Entities, Users,
                                                   ParatextService)
                {
                    ProjectMapper = new SFProjectService(JsonApiContext, Mapper, UserAccessor, Entities,
                                                         engineService, SiteOptions, new SyncJobManager(jobs, Entities, backgroundJobClient)),
                    UserMapper = new UserService(JsonApiContext, Mapper, UserAccessor, Users, SiteOptions)
                };
            }
예제 #26
0
        private MemoryRepository <T> CreateAndRegisterMemoryRepository <T>()
        {
            var repository = new MemoryRepository <T>();

            this.RegisterRepository(repository);
            return(repository);
        }
        private void AddDistributionColumns(QueryBuilder qb)
        {
            var repo = new MemoryRepository();

            qb.AddColumn(new SpontaneouslyInventedColumn(repo, "CountTotal", "count(1)"));
            qb.AddColumn(new SpontaneouslyInventedColumn(repo, "CountNull", "SUM(CASE WHEN " + GetColumnSelectSql() + " IS NULL THEN 1 ELSE 0  END)"));
            qb.AddColumn(new SpontaneouslyInventedColumn(repo, "CountZero", "SUM(CASE WHEN " + GetColumnSelectSql() + " = 0 THEN 1  ELSE 0 END)"));

            qb.AddColumn(new SpontaneouslyInventedColumn(repo, "Max", "max(" + GetColumnSelectSql() + ")"));
            qb.AddColumn(new SpontaneouslyInventedColumn(repo, "Min", "min(" + GetColumnSelectSql() + ")"));

            switch (ColumnInfo.GetQuerySyntaxHelper().DatabaseType)
            {
            case DatabaseType.MicrosoftSQLServer:
                qb.AddColumn(new SpontaneouslyInventedColumn(repo, "stdev ", "stdev(" + GetColumnSelectSql() + ")"));
                break;

            case DatabaseType.MySql:
            case DatabaseType.Oracle:
                qb.AddColumn(new SpontaneouslyInventedColumn(repo, "stddev ", "stddev(" + GetColumnSelectSql() + ")"));
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            qb.AddColumn(new SpontaneouslyInventedColumn(repo, "avg", "avg(" + GetColumnSelectSql() + ")"));
        }
예제 #28
0
        public void Test_Save()
        {
            ClientCandidate candidate = new ClientCandidate();

            ClientCandidateWorkProfile workProfile = candidate.WorkProfiles.AddNew();

            workProfile.CompanyName = "HirePro";

            ClientContact contact = new ClientContact();

            candidate.Contact = contact;

            contact.Address = "277 5th Cross 6th Block Koramangala";

            MemoryRepository <ClientCandidate> .Save(candidate);

            Assert.IsFalse(candidate.IsNew);

            Assert.IsFalse(candidate.IsDirty);
            Assert.IsFalse(candidate.WorkProfiles.IsDirty);
            Assert.IsFalse(candidate.Contact.IsDirty);

            Assert.IsTrue(candidate.IsValid);

            Assert.IsFalse(candidate.IsSavable);
            Assert.IsFalse(candidate.CanSave());

            Assert.IsNotNull(candidate.WorkProfiles);
            Assert.AreEqual(candidate.WorkProfiles.Count, 1);
            Assert.IsNotNull(candidate.Contact);
        }
 public PipelineCompatibleWithUseCaseNode(MemoryRepository repo, Pipeline pipeline, PipelineUseCase useCase) : base(null)
 {
     Pipeline     = pipeline;
     UseCase      = useCase;
     Repository   = repo;
     _useCaseType = UseCase.GetType();
 }
예제 #30
0
 public void should_add_and_successfully_authenticate_the_first_user()
 {
     var userRepository = new MemoryRepository<User>();
     var authenticationService = new AuthenticationService(userRepository, new UserCreateService(userRepository));
     authenticationService.Authenticate(Username, Password);
     userRepository.Count().ShouldEqual(1);
 }
        public static MemoryRepository<Comment> GetCommentsRepository()
        {
            var commentsRepository = new MemoryRepository<Comment>();
            var users = GetUsersRepository();
            var posts = GetPostsRepository();

            for (int i = 0; i < 20; i++)
            {
                var user = users.GetById("id" + i % 10);
                var post = posts.GetById(i);
                var comment = new Comment
                {
                    Id = i,
                    CommentDate = new DateTime(2015, 11, i + 1),
                    Content = "content" + i,
                    PostId = post.Id,
                    Post = post,
                    UserId = user.Id,
                    User = user,
                };

                commentsRepository.Add(comment);
            }

            return commentsRepository;
        }
        public StubDataOrderRepository(MemoryRepository <Order> memRepository)
        {
            this.memRepository = memRepository;

            this.memRepository.Add(Order.Create(new Guid("2143d854-0982-44b5-9c5d-acfaf3b7236a"),
                                                new Guid("c7daa440-096e-448b-ae45-d71268078225")));
        }
        public void CanFlushWithInjectedDataAndNoLongRunningFlushing()
        {
            // arrange
            var injectedRepository = new MemoryRepository <string, string>();
            var hybridRepository   = new HybridRepository <string, string>(injectedRepository);

            injectedRepository.AddOrUpdate(Update, "update");
            injectedRepository.AddOrUpdate(Remove, "remove");

            // act
            hybridRepository.AddOrUpdate(Add, "add");
            hybridRepository.AddOrUpdate(Update, "update_changed");
            hybridRepository.Remove(Remove);
            hybridRepository.TakeSnapshot();
            hybridRepository.FlushSnapshot();

            var add    = injectedRepository.Get(Add);
            var update = injectedRepository.Get(Update);
            var remove = injectedRepository.Get(Remove);

            // assert
            add.Should().Be("add");
            update.Should().Be("update_changed");
            remove.Should().BeNull();
        }
        public static MemoryRepository<Recipe> GetRecipeRepositiry(int numberOfRecipes)
        {
            var repo = new MemoryRepository<Recipe>();

            repo.Add(new Recipe()
            {
                Id = 1,
                Title = "Tandoori Carrots",
                Preparation = "Preparation 1, Preparation 1, Preparation 1, Preparation 1, Preparation 1, Preparation 1, Preparation 1, Preparation 1, Preparation 1",
                Category = new Category() { Name = "Healthy" },
                CreatedOn = new DateTime(2016, 1, 12, 12, 12, 12),
                Creator = new User() { NickName = "Creator 1" },
                Tags = new List<Tag>() { new Tag() { Text = "default" } },
                Images = new List<RecipeImage>() { new RecipeImage() { OriginalName = "image1.png", Extension = ".png" } }
            });

            repo.Add(new Recipe()
            {
                Id = 2,
                Title = "Sheetpandinners Chicken",
                Preparation = "Preparation 2, Preparation 2, Preparation 2, Preparation 2, Preparation 2, Preparation 2, Preparation 2, Preparation 2, Preparation 2",
                Category = new Category() { Name = "Quick and Easy" },
                CreatedOn = new DateTime(2016, 1, 12, 11, 11, 11),
                Creator = new User() { NickName = "Creator 2" },
                Tags = new List<Tag>() { new Tag() { Text = "default" } },
                Images = new List<RecipeImage>() { new RecipeImage() { OriginalName = "image2.png", Extension = ".png" } }
            });

            repo.Add(new Recipe()
            {
                Id = 3,
                Title = "Salad with butter and basted mushrooms",
                Preparation = "Preparation 3, Preparation 3, Preparation 3, Preparation 3, Preparation 3, Preparation 3, Preparation 3, Preparation 3, Preparation 3",
                Category = new Category() { Name = "Vegetarian" },
                CreatedOn = new DateTime(2016, 1, 12, 10, 10, 10),
                Creator = new User() { NickName = "Creator 3" },
                Tags = new List<Tag>() { new Tag() { Text = "default" } },
                Images = new List<RecipeImage>() { new RecipeImage() { OriginalName = "image3.png", Extension = ".png" } }
            });

            for (int i = 4; i <= numberOfRecipes + 3; i++)
            {
                var date = DateTime.Now;
                date.AddDays(i);

                repo.Add(new Recipe()
                {
                    Id = i,
                    Title = "Salad with butter and basted mushrooms " + i,
                    Preparation = "Preparation " + i,
                    Category = new Category() { Name = "Vegetarian" },
                    CreatedOn = date,
                    Tags = new List<Tag>() { new Tag() { Text = "default" } },
                    Creator = new User() { NickName = "Creator " + i },
                    Images = new List<RecipeImage>() { new RecipeImage() { OriginalName = "image" + i + ".png", Extension = ".png" } }
                });
            }

            return repo;
        }
예제 #35
0
 public SpontaneouslyInventedSqlParameter(MemoryRepository repo, string declarationSql, string value, string comment, IQuerySyntaxHelper syntaxHelper) : base(repo)
 {
     _syntaxHelper = syntaxHelper;
     ParameterSQL  = declarationSql;
     Value         = value;
     Comment       = comment;
 }
 public void Init()
 {
     usersRepository = TestObjectsFactory.GetUsersRepository();
     threadsRepository = TestObjectsFactory.GetThreadsRepository();
     postsRepository = TestObjectsFactory.GetPostsRepository();
     this.service = new PostsService(postsRepository, usersRepository, threadsRepository);
 }
        public void CanDispatchMultipleEventsToMultipleViews()
        {
            var firstRepository    = new MemoryRepository <string, SomeEvent>();
            var secondRepository   = new MemoryRepository <string, SomeEvent>();
            var views              = new View[] { new SomeView(firstRepository), new SomeView(secondRepository) };
            var snapshotRepository = new MemoryRepository <string, Snapshot>();
            var firstEvent         = new SomeEvent {
                Id = "test"
            };
            var secondEvent = new SomeEvent {
                Id = "test2"
            };

            using (var snapshotManager = new SnapshotManager(views, snapshotRepository, Timeout.Infinite))
            {
                // act
                snapshotManager.Dispatch(new Event {
                    SequenceNumber = 1, Payload = firstEvent
                });
                snapshotManager.Dispatch(new Event {
                    SequenceNumber = 2, Payload = secondEvent
                });

                // assert
                firstRepository.Get(firstEvent.Id).Should().Be(firstEvent);
                firstRepository.Get(secondEvent.Id).Should().Be(secondEvent);
                secondRepository.Get(firstEvent.Id).Should().Be(firstEvent);
                secondRepository.Get(secondEvent.Id).Should().Be(secondEvent);
            }
        }
        /// <summary>
        /// Creates the sample entity repository mock.
        /// </summary>
        /// <returns>
        /// The sample entity repository mock.
        /// </returns>
        private static IRepository CreateSampleEntityRepository()
        {
            var memoryRepository = new MemoryRepository(new MappingSourceManager());

            memoryRepository.Insert(new SampleEntity()
            {
                Id = 1, Name = "Entity 1"
            });
            memoryRepository.Insert(new SampleEntity()
            {
                Id = 2, Name = "Sample"
            });
            memoryRepository.Insert(new SampleEntity()
            {
                Id = 3, Name = "Entity 3"
            });
            memoryRepository.Insert(new SampleEntity()
            {
                Id = 4, Name = "Sample"
            });
            memoryRepository.Insert(new SampleEntity()
            {
                Id = 5, Name = "Sample"
            });

            return(memoryRepository);
        }
        public void Should_Return_The_First_Twenty_Directory_Results()
        {
            var repository = new MemoryRepository<DirectoryEntry>(Enumerable.Range(0, 30).Select(x => new DirectoryEntry()));
            var handler = new PublicGetHandler(repository);

            var viewModel = handler.Execute(new GetRequest {UserAgent = "" });

            viewModel.Results.Count.ShouldEqual(20);
        }
예제 #40
0
 public void should_create_user_password_hash()
 {
     var userRepository = new MemoryRepository<User>();
     var userCreationService = new UserCreateService(userRepository);
     var user = userCreationService.Create(Username, Password, Email, false, "");
     user.PasswordHash.ShouldNotBeNull();
     user.PasswordHash.ShouldNotBeEmpty();
     user.PasswordHash.ShouldNotEqual(Password);
 }
        public void Should_Return_The_First_Twenty_Directory_Results()
        {
            var repository = new MemoryRepository<DirectoryEntry>(Enumerable.Range(0, 30).Select(x => new DirectoryEntry()));
            var controller = new DirectoryController(repository);
            controller.ControllerContext = Substitute.For<ControllerContext>();

            var viewModel = (ViewModel)((ViewResult) controller.Index()).Model;

            viewModel.Results.Count.ShouldEqual(20);
        }
예제 #42
0
		public void Setup()
		{
			_repository = new MemoryRepository<TestItem>();
			PopulateRepositoryWithItemsForQuerying(_repository);
			_queryToCache = new QueryAdapter<TestItem>();
			_queryToCache.Show("StoredString");
			_results = _repository.GetItemsMatching(_queryToCache);
			_sortDefinitions = new SortDefinition[1];
			_sortDefinitions[0] = new SortDefinition("StoredString", Comparer<string>.Default);
		}
예제 #43
0
		public void Setup()
		{
			_repository = new MemoryRepository<TestItem>();
			_queryResultsA = new Dictionary<string, object>();
			_queryResultsA.Add("string", "A");
			_queryResultsB = new Dictionary<string, object>();
			_queryResultsB.Add("string", "B");
			_queryResultsEmpty = new Dictionary<string, object>();
			_queryResultsEmpty.Add("string", string.Empty);
		}
예제 #44
0
 public void should_create_unique_non_admin_user()
 {
     var userRepository = new MemoryRepository<User>();
     var userCreationService = new UserCreateService(userRepository);
     var user = userCreationService.Create(Username, Password, Email, false, "");
     userRepository.Count().ShouldEqual(1);
     userRepository.First().ShouldEqual(user);
     user.Username.ShouldEqual(Username.ToLower());
     user.Administrator.ShouldBeFalse();
     user.Email.ShouldEqual(Email);
 }
        public void Should_Return_First_Page_By_Default()
        {
            var repository = new MemoryRepository<DirectoryEntry>(Enumerable.Range(1, 30).
                            Select(x => new DirectoryEntry { Name = x.ToString("00") }));
            var handler = new MultiplePublicGetHandler(repository);

            var viewModel = handler.Execute(new GetAllRequest());

            viewModel.Count.ShouldEqual(MultiplePublicGetHandler.PageSize);
            viewModel.Min(x => int.Parse(x.name)).ShouldEqual(1);
            viewModel.Max(x => int.Parse(x.name)).ShouldEqual(20);
        }
예제 #46
0
		public void Setup()
		{
			_repository = new MemoryRepository<TestItem>();
			_results = new List<RecordToken<TestItem>>();

			_results.Add(new RecordToken<TestItem>(_repository, new TestRepositoryId(8)));
			_results.Add(new RecordToken<TestItem>(_repository, new TestRepositoryId(12)));
			_results.Add(new RecordToken<TestItem>(_repository, new TestRepositoryId(1)));
			_results.Add(new RecordToken<TestItem>(_repository, new TestRepositoryId(3)));

			_resultSet = new ResultSet<TestItem>(_repository, _results);
		}
        public void Should_Delete_Entry()
        {
            var id = Guid.NewGuid();
            var repository = new MemoryRepository<DirectoryEntry>(new[] { Guid.NewGuid(), id, Guid.NewGuid() }.
                                    Select(x => new DirectoryEntry { Id = x }));
            var handler = new DeleteHandler(repository);

            handler.Execute_id(new EntryModel { id = id });

            repository.Count().ShouldEqual(2);
            repository.Any(x => x.Id == id).ShouldBeFalse();
        }
        public void Should_Return_Filtered_Directory_Results()
        {
            var repository = new MemoryRepository<DirectoryEntry>(new [] {"keith", "kevin", "kiner"}.
                                        Select(x => new DirectoryEntry {Name = x }));
            var handler = new MultiplePublicGetHandler(repository);

            var viewModel = handler.Execute(new GetAllRequest { Query = "ke" });

            viewModel.Count.ShouldEqual(2);
            viewModel.Any(x => x.name == "keith").ShouldBeTrue();
            viewModel.Any(x => x.name == "kevin").ShouldBeTrue();
        }
        public void Should_Return_Second_Page()
        {
            var repository = new MemoryRepository<DirectoryEntry>(Enumerable.Range(1, 26).
                            Select(x => new DirectoryEntry { Name = x.ToString("00") }));
            var handler = new MultiplePublicGetHandler(repository);

            var viewModel = handler.Execute(new GetAllRequest { Index = 2 });

            viewModel.Count.ShouldEqual(6);
            viewModel.Min(x => int.Parse(x.name)).ShouldEqual(21);
            viewModel.Max(x => int.Parse(x.name)).ShouldEqual(26);
        }
예제 #50
0
		private void PopulateRepositoryWithItemsForQuerying(MemoryRepository<TestItem> repository)
		{
			TestItem[] items = new TestItem[3];
			items[0] = repository.CreateItem();
			items[0].StoredString = "Item 3";
			repository.SaveItem(items[0]);
			items[1] = repository.CreateItem();
			items[1].StoredString = "Item 0";
			repository.SaveItem(items[1]);
			items[2] = repository.CreateItem();
			items[2].StoredString = "Item 2";
			repository.SaveItem(items[2]);
		}
        public void Should_Delete_Entry()
        {
            var id = Guid.NewGuid();
            var repository = new MemoryRepository<DirectoryEntry>(new[] { Guid.NewGuid(), id, Guid.NewGuid() }.
                                    Select(x => new DirectoryEntry { Id = x }));
            var controller = new DirectoryController(repository);

            // This is delete? Hard to tell isn't it...
            controller.Entries(id);

            repository.Count().ShouldEqual(2);
            repository.Any(x => x.Id == id).ShouldBeFalse();
        }
        public void Should_Return_Filtered_Directory_Results()
        {
            var repository = new MemoryRepository<DirectoryEntry>(new [] {"keith", "kevin", "kiner"}.
                                        Select(x => new DirectoryEntry {Name = x }));
            var controller = new DirectoryController(repository);

            var result = controller.Entries("ke", 1);

            var data = (IEnumerable<EntryModel>) result.Data;
            data.Count().ShouldEqual(2);
            data.Any(x => x.name == "keith").ShouldBeTrue();
            data.Any(x => x.name == "kevin").ShouldBeTrue();
        }
    public void DeleteAll_Method()
    {
      using (var repository = new MemoryRepository<TestEntity>())
      {
        repository.Transaction(() => Assert.True(ReferenceEquals(repository.DeleteAll(), repository)));
        Assert.False(repository.Any());
        
        repository.Transaction(() => repository.Persist(new TestEntity()).Persist(new TestEntity()));
        Assert.Equal(2, repository.Count());

        repository.Transaction(() => repository.DeleteAll());
        Assert.False(repository.Any());
      }
    }
        public SyncService()
        {
            var channelRepository = new MemoryRepository<Channel>(new ChannelEqualityComparer());
            var playlistRepository = new MemoryRepository<Playlist>(new PlaylistEqualityComparer());
            var playlistItemsRepository = new MemoryRepository<PlaylistItem>(new PlaylistItemEqualityComparer());
            var channelPlaylistsRepository = new JsonRepository<ChannelPlaylistLink>(
                new ChannelPlaylistLinkEqualityComparer(),
                @"Cache/channels_playlists_map.json");

            _unitOfWork = new UnitOfWork(
                channelRepository,
                playlistRepository,
                playlistItemsRepository,
                channelPlaylistsRepository);
        }
        public static MemoryRepository<Category> GetCategoriesRepository()
        {
            var categoriesRepository = new MemoryRepository<Category>();
            for (int i = 0; i < 10; i++)
            {
                var category = new Category
                {
                    Id = i,
                    Name = "category" + i
                };

                categoriesRepository.Add(category);
            }

            return categoriesRepository;
        }
    public void Delete_Method()
    {
      Assert.Throws<ArgumentNullException>(() => new MemoryRepository<TestEntity>().Delete(null));

      var entity = new TestEntity();

      using (var repository = new MemoryRepository<TestEntity>())
      {
        repository.Transaction(() =>  Assert.True(ReferenceEquals(repository.Delete(entity), repository)));
        
        repository.Transaction(() => repository.Persist(entity));
        repository.Transaction(() => repository.Delete(new TestEntity()));
        Assert.True(ReferenceEquals(repository.Single(), entity));
        
        repository.Transaction(() => repository.Delete(entity));
        Assert.False(repository.Any());
      }
    }
    public void Commit_Method()
    {
      var entity = new TestEntity();

      using (var repository = new MemoryRepository<TestEntity>())
      {
        Assert.False(repository.Any());

        Assert.True(ReferenceEquals(repository.Persist(entity).Commit(), repository));
        Assert.True(ReferenceEquals(repository.Single(), entity));

        repository.Delete(entity);
        Assert.False(repository.Any());

        repository.Commit();
        Assert.False(repository.Any());
      }
    }
예제 #58
0
        public void SaveNewUser_UserSaved()
        {
            Bootstrap.Initilize();
            using (var unitOfWork = Factory.Current.Create<IUnitOfWork>())
            {
                var userRepository = new MemoryRepository<User>(unitOfWork);
                var service = new UserService(userRepository);

                var user = new User
                {
                    Name = "some.user",
                    FullName = "Some user",
                    Email = "*****@*****.**",
                    Password = "******"
                };

                service.Save(user);

                unitOfWork.Commit();

                Assert.IsFalse(user.IsTransient);
            }
        }
        public static MemoryRepository<Thread> GetThreadsRepository()
        {
            var threadsRepository = new MemoryRepository<Thread>();
            var users = GetUsersRepository();

            for (int i = 0; i < 5; i++)
            {
                var user = users.GetById("id" + i % 10);
                var thread = new Thread
                {
                    Id = i,
                    Content = "content" + i,
                    DateCreated = new DateTime(2015, 11, i + 1),
                    Title = "title" + i,
                    UserId = user.Id,
                    User = user
                };

                threadsRepository.Add(thread);
            }

            return threadsRepository;
        }
        public static MemoryRepository<RecipeImage> GetRecipeImagesRepositiry(int numberOfImages)
        {
            var repo = new MemoryRepository<RecipeImage>();

            for (int i = 1; i <= numberOfImages; i++)
            {
                var date = DateTime.Now;
                date.AddDays(i);

                byte[] bytes = new byte[20];
                new Random().NextBytes(bytes);

                repo.Add(new RecipeImage()
                {
                    Id = i,
                    OriginalName = "OriginalName.png",
                    Extension = ".png",
                    Content = bytes,
                    CreatedOn = date,
                });
            }

            return repo;
        }