コード例 #1
0
        public async void TestBigQuerySchemaHelper_WithMocks_ShouldSuccess()
        {
            //Arrange

            var bigQuerySchemaHelperOptions = _autoFixture.Create <BigQuerySchemaHelperOptions>();
            var optionsMock = _autoFixture.Freeze <Mock <IOptionsSnapshot <BigQuerySchemaHelperOptions> > >();

            optionsMock
            .Setup(m => m.Value)
            .Returns(bigQuerySchemaHelperOptions);
            optionsMock
            .Setup(m => m.Get(It.IsAny <string>()))
            .Returns(bigQuerySchemaHelperOptions);

            var bigQueryClientMock = new Mock <BigQueryClient>();

            bigQueryClientMock
            .Setup(mock => mock.GetOrCreateDatasetAsync(It.IsAny <string>(), It.IsAny <GetDatasetOptions>(), It.IsAny <CreateDatasetOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new BigQueryDataset(bigQueryClientMock.Object, new Dataset()));
            bigQueryClientMock
            .Setup(mock => mock.GetOrCreateTableAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <TableSchema>(), It.IsAny <GetTableOptions>(), It.IsAny <CreateTableOptions>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new BigQueryTable(bigQueryClientMock.Object, new Table()));
            bigQueryClientMock
            .Setup(mock => mock.InsertRowsAsync(It.IsAny <TableReference>(), It.IsAny <IEnumerable <BigQueryInsertRow> >(), It.IsAny <InsertOptions>(), It.IsAny <CancellationToken>()));

            var bigQueryClientFactoryMock = _autoFixture.Freeze <Mock <IBigQueryClientFactory> >();

            bigQueryClientFactoryMock
            .Setup(mock => mock.GetOrCreateClient(It.IsAny <string>(), It.IsAny <GoogleCredential>()))
            .Returns(bigQueryClientMock.Object);

            //Act
            var sut   = _autoFixture.Create <BigQuerySchemaHelper>();
            var table = await sut.GetOrCreateTableAsync <BusinessTraceData>();

            var trace = new BusinessTraceData(DateTime.Now);
            await sut.InsertRowAsync <BusinessTraceData>(trace);

            var traces = new List <BusinessTraceData>()
            {
                { new BusinessTraceData(DateTime.Now) },
                { new BusinessTraceData(DateTime.Now) },
                { new BusinessTraceData(DateTime.Now) },
                { new BusinessTraceData(DateTime.Now) },
                { new BusinessTraceData(DateTime.Now) },
                { new BusinessTraceData(DateTime.Now) }
            };
            await sut.InsertRowsAsync <BusinessTraceData>(traces);

            //Assert
            Assert.NotNull(trace);
            Assert.NotNull(traces);
        }
コード例 #2
0
        public void TestGetRowFromEntity_WithInstances_ShouldReturnBigQueryInsertRow(BusinessTraceData trace)
        {
            //Arrange
            var traceType = trace.GetType();

            //Act
            var row = BigQueryRowAdapter.GetRowFromEntity(trace, traceType);

            //Assert
            Assert.Equal(typeof(BigQueryInsertRow), row.GetType());
            Assert.NotEmpty(row);
        }
コード例 #3
0
        public void TestGetRowFromEntity_WithInstance_ShouldReturnBigQueryInsertRow()
        {
            //Arrange
            var timestamp = DateTime.Now;
            var trace     = new BusinessTraceData(timestamp);

            //Act
            var row = BigQueryRowAdapter.GetRowFromEntity(trace, trace.GetType());

            //Assert
            Assert.Equal(typeof(BigQueryInsertRow), row.GetType());
            Assert.NotEmpty(row);
            Assert.Equal(100, row["Id"]);
            Assert.Equal("Test title", row["Title"]);
            Assert.Equal(timestamp.ToString("s"), row["CreatedAt"]);
            Assert.Equal(true, row["IsActive"]);
            Assert.Equal("300.00", row["Amount"]);
            Assert.Collection((List <int>)row["ChildTraces"],
                              item1 => { Assert.Equal(1, item1); },
                              item2 => { Assert.Equal(2, item2); },
                              item3 => { Assert.Equal(3, item3); },
                              item4 => { Assert.Equal(4, item4); },
                              item5 => { Assert.Equal(5, item5); }
                              );
            Assert.Collection((List <string>)row["Tags"],
                              item1 => { Assert.Equal("Value1", item1); },
                              item2 => { Assert.Equal("Value2", item2); },
                              item3 => { Assert.Equal("Value3", item3); }
                              );
            Assert.Collection((List <string>)row["ModifiedAt"],
                              item1 => { Assert.Equal(timestamp.AddDays(-1).ToString("s"), item1); },
                              item2 => { Assert.Equal(timestamp.AddDays(-2).ToString("s"), item2); }
                              );
            Assert.Collection((List <string>)row["Billing"],
                              item1 => { Assert.Equal("1200.00", item1); },
                              item2 => { Assert.Equal("2400.00", item2); },
                              item3 => { Assert.Equal("4800.00", item3); },
                              item4 => { Assert.Equal("9600.00", item4); }
                              );

            Assert.Equal(typeof(BigQueryInsertRow), row["Detail"].GetType());
            Assert.NotEmpty((BigQueryInsertRow)row["Detail"]);
            Assert.Equal(1, ((BigQueryInsertRow)row["Detail"])["Id"]);
            Assert.Equal("Test Description", ((BigQueryInsertRow)row["Detail"])["Description"]);
            Assert.Equal(true, ((BigQueryInsertRow)row["Detail"])["IsSuccesful"]);
            Assert.Equal(timestamp.ToString("s"), ((BigQueryInsertRow)row["Detail"])["Timestamp"]);
            Assert.Throws <KeyNotFoundException>(() => (BigQueryInsertRow)row["PrivateDetail"]);

            Assert.Collection((List <BigQueryInsertRow>)row["History"],
                              item1 =>
            {
                Assert.Equal(0, item1["Id"]);
                Assert.Null(item1["Description"]);
                Assert.False((bool)item1["IsSuccesful"]);
                Assert.Null(item1["Timestamp"]);
            },
                              item2 =>
            {
                Assert.Equal(2, item2["Id"]);
                Assert.Null(item2["Description"]);
                Assert.False((bool)item2["IsSuccesful"]);
                Assert.Null(item2["Timestamp"]);
            },
                              item3 =>
            {
                Assert.Equal(3, item3["Id"]);
                Assert.NotNull(item3["Description"]);
                Assert.False((bool)item3["IsSuccesful"]);
                Assert.Null(item3["Timestamp"]);
            },
                              item4 =>
            {
                Assert.Equal(4, item4["Id"]);
                Assert.NotNull(item4["Description"]);
                Assert.True((bool)item4["IsSuccesful"]);
                Assert.Null(item4["Timestamp"]);
            },
                              item5 =>
            {
                Assert.Equal(5, item5["Id"]);
                Assert.NotNull(item5["Description"]);
                Assert.False((bool)item5["IsSuccesful"]);
                Assert.Equal(timestamp.ToString("s"), item5["Timestamp"]);
            },
                              item6 =>
            {
                Assert.Equal(6, item6["Id"]);
                Assert.NotNull(item6["Description"]);
                Assert.False((bool)item6["IsSuccesful"]);
                Assert.Equal(timestamp.ToString("s"), item6["Timestamp"]);
                Assert.Throws <KeyNotFoundException>(() => item6["UpdatedById"]);
            }
                              );
        }