public async Task Should_Get_A_Rocket()
    {
        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async z =>
        {
            var rocket = new ReadyRocket
            {
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            z.Add(rocket);

            await z.SaveChangesAsync();
            return(rocket.Id);
        }
            );

        var response = await ServiceProvider.WithScoped <IMediator>().Invoke(
            mediator => mediator.Send(new GetRocket.Request {
            Id = rocket
        })
            );

        response.Type.Should().Be(RocketType.Falcon9);
        response.Sn.Should().Be("12345678901234");
    }
예제 #2
0
    public async Task Should_Patch_A_Rocket()
    {
        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async z =>
        {
            var rocket = new ReadyRocket
            {
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            z.Add(rocket);

            await z.SaveChangesAsync();
            return(rocket);
        }
            );

        var request = new EditRocket.PatchRequest
        {
            Id = rocket.Id,
//            Type = RocketType.FalconHeavy,
            SerialNumber = string.Join("", rocket.SerialNumber.Reverse())
        }.ResetChanges() with
        {
            Type = RocketType.FalconHeavy
        };
        var response = await ServiceProvider.WithScoped <IMediator>().Invoke(
            mediator => mediator.Send(request)
            );

        response.Type.Should().Be(RocketType.FalconHeavy);
        response.Sn.Should().Be("12345678901234");
    }
예제 #3
0
    public async Task Should_Create_A_LaunchRecord()
    {
        var client = new LaunchRecordClient(Factory.CreateClient());
        var clock  = ServiceProvider.GetRequiredService <IClock>();
        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async z =>
        {
            var rocket = new ReadyRocket
            {
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            z.Add(rocket);

            await z.SaveChangesAsync();
            return(rocket);
        }
            );


        var response = await client.CreateLaunchRecordAsync(
            new CreateLaunchRecordRequest
        {
            Partner             = "partner",
            Payload             = "geo-fence-ftl",
            RocketId            = rocket.Id.Value,
            ScheduledLaunchDate = clock.GetCurrentInstant().ToDateTimeOffset(),
            PayloadWeightKg     = 100,
        }
            );

        response.Result.Id.Should().NotBeEmpty();
    }
    public async Task Should_Get_A_Rocket()
    {
        var client = Factory.Services.GetRequiredService <IRocketClient>();
        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async z =>
        {
            var rocket = new ReadyRocket
            {
                Type         = CoreRocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            z.Add(rocket);

            await z.SaveChangesAsync();
            return(rocket.Id);
        }
            );

        var response = await client.GetRocket.ExecuteAsync(rocket.Value);

        response.EnsureNoErrors();

        response.Data !.Rockets !.Nodes[0].Type.Should().Be(RocketType.Falcon9);
        response.Data.Rockets !.Nodes[0].SerialNumber.Should().Be("12345678901234");
    }
    public async Task Should_Get_A_LaunchRecord()
    {
        var client = Factory.Services.GetRequiredService <IRocketClient>();
        var record = await ServiceProvider.WithScoped <RocketDbContext, IClock>()
                     .Invoke(
            async(context, clock) =>
        {
            var rocket = new ReadyRocket
            {
                Id           = RocketId.New(),
                Type         = CoreRocketType.Falcon9,
                SerialNumber = "12345678901234"
            };

            var record = new LaunchRecord
            {
                Partner             = "partner",
                Payload             = "geo-fence-ftl",
                RocketId            = rocket.Id,
                ScheduledLaunchDate = clock.GetCurrentInstant().ToDateTimeOffset(),
                PayloadWeightKg     = 100,
            };
            context.Add(rocket);
            context.Add(record);

            await context.SaveChangesAsync();
            return(record);
        }
            );

        var response = await client.GetLaunchRecord.ExecuteAsync(record.Id.Value);

        response.EnsureNoErrors();

        response.Data !.LaunchRecords !.Nodes ![0].Partner.Should().Be("partner");
    public async Task Should_Patch_A_Rocket_SerialNumber()
    {
        var client = new RocketClient(Factory.CreateClient());

        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async z =>
        {
            var rocket = new ReadyRocket
            {
                Type         = RocketType.AtlasV,
                SerialNumber = "12345678901234"
            };
            z.Add(rocket);

            await z.SaveChangesAsync();
            return(rocket);
        }
            );

        var u = await client.PatchRocketAsync(
            rocket.Id.Value,
            new EditRocketPatchRequest
        {
            SerialNumber = new() { Value = "123456789012345" }
        }
예제 #7
0
    public async Task Should_Create_A_LaunchRecord()
    {
        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async(context, ct) =>
        {
            var rocket = new ReadyRocket
            {
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            context.Add(rocket);

            await context.SaveChangesAsync(ct);
            return(rocket);
        }
            );

        var response = await ServiceProvider.WithScoped <IMediator, IClock>().Invoke(
            async(mediator, clock, ct) => await mediator.Send(
                new CreateLaunchRecord.Request
        {
            Partner             = "partner",
            Payload             = "geo-fence-ftl",
            RocketId            = rocket.Id,
            ScheduledLaunchDate = clock.GetCurrentInstant(),
            PayloadWeightKg     = 100,
        },
                ct
                )
            );

        response.Id.Value.Should().NotBeEmpty();
    }
    public async Task Should_Update_A_LaunchRecord()
    {
        var client = new LR.LaunchRecordsClient(Factory.CreateGrpcChannel());
        var clock  = ServiceProvider.GetRequiredService <IClock>();
        var record = await ServiceProvider.WithScoped <RocketDbContext, IClock>()
                     .Invoke(
            async(context, clk) =>
        {
            var rocket = new ReadyRocket
            {
                Id           = RocketId.New(),
                Type         = Core.Domain.RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            context.Add(rocket);

            var record = new LaunchRecord
            {
                Partner             = "partner",
                Payload             = "geo-fence-ftl",
                RocketId            = rocket.Id,
                Rocket              = rocket,
                ScheduledLaunchDate = clk.GetCurrentInstant().ToDateTimeOffset(),
                PayloadWeightKg     = 100,
            };
            context.Add(record);

            await context.SaveChangesAsync();
            return(record);
        }
            );

        var launchDate = record.ScheduledLaunchDate.AddSeconds(1).ToTimestamp();
        await client.EditLaunchRecordAsync(
            new UpdateLaunchRecordRequest
        {
            Id                  = record.Id.ToString(),
            Partner             = "partner",
            Payload             = "geo-fence-ftl",
            RocketId            = record.RocketId.ToString(),
            ScheduledLaunchDate = launchDate,
            PayloadWeightKg     = 200,
        }
            );

        var response = await client.GetLaunchRecordsAsync(new GetLaunchRecordRequest { Id = record.Id.ToString() });

        response.ScheduledLaunchDate.Should().Be(launchDate);
        response.PayloadWeightKg.Should().Be(200);
    }
    public async Task Should_Update_A_LaunchRecord()
    {
        var record = await ServiceProvider.WithScoped <RocketDbContext, IClock>()
                     .Invoke(
            async(context, clock) =>
        {
            var rocket = new ReadyRocket
            {
                Id           = RocketId.New(),
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };

            var record = new LaunchRecord
            {
                Partner             = "partner",
                Payload             = "geo-fence-ftl",
                RocketId            = rocket.Id,
                ScheduledLaunchDate = clock.GetCurrentInstant().ToDateTimeOffset(),
                PayloadWeightKg     = 100,
            };
            context.Add(rocket);
            context.Add(record);

            await context.SaveChangesAsync();
            return(record);
        }
            );

        var launchDate = record.ScheduledLaunchDate.ToInstant().Plus(Duration.FromSeconds(1));
        var response   = await ServiceProvider.WithScoped <IMediator, IClock>().Invoke(
            (mediator, clock) => mediator.Send(
                new EditLaunchRecord.Request
        {
            Id                  = record.Id,
            Partner             = "partner",
            Payload             = "geo-fence-ftl",
            RocketId            = record.RocketId,
            ScheduledLaunchDate = launchDate,
            PayloadWeightKg     = 200,
        }
                )
            );

        response.ScheduledLaunchDate.Should().Be(launchDate);
        response.PayloadWeightKg.Should().Be(200);
    }
예제 #10
0
    public async Task Should_Get_A_LaunchRecord()
    {
        var client = new LaunchRecordClient(Factory.CreateClient());
        var record = await ServiceProvider.WithScoped <RocketDbContext, IClock>()
                     .Invoke(
            async(context, clock) =>
        {
            var rocket = new ReadyRocket
            {
                Id           = RocketId.New(),
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };

            var record = new LaunchRecord
            {
                Partner             = "partner",
                Payload             = "geo-fence-ftl",
                RocketId            = rocket.Id,
                ScheduledLaunchDate = clock.GetCurrentInstant().ToDateTimeOffset(),
                PayloadWeightKg     = 100,
            };
            context.Add(rocket);
            context.Add(record);

            await context.SaveChangesAsync();
            return(record);
        }
            );

        var response = (await client.GetLaunchRecordAsync(record.Id.Value)).Result;

        response.Partner.Should().Be("partner");
        response.Payload.Should().Be("geo-fence-ftl");
        response.RocketType.Should().Be(HttpRocketType.Falcon9);
        response.RocketSerialNumber.Should().Be("12345678901234");
        response.ScheduledLaunchDate.Should().Be(record.ScheduledLaunchDate);
    }
    public async Task Should_Update_A_Rocket()
    {
        var client = new RocketClient(Factory.CreateClient());

        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async z =>
        {
            var rocket = new ReadyRocket
            {
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            z.Add(rocket);

            await z.SaveChangesAsync();
            return(rocket);
        }
            );

        var u = await client.EditRocketAsync(
            rocket.Id.Value,
            new EditRocketRequest
        {
            Type         = ClientRocketType.FalconHeavy,
            SerialNumber = string.Join("", rocket.SerialNumber.Reverse())
        }
            );

        (u.StatusCode is >= 200 and < 300).Should().BeTrue();

        var response = await client.GetRocketAsync(rocket.Id.Value);

        response.Result.Type.Should().Be(ClientRocketType.FalconHeavy);
        response.Result.Sn.Should().Be("43210987654321");
    }
    public async Task Should_Get_A_Rocket()
    {
        var client = new RocketClient(Factory.CreateClient());
        var rocket = await ServiceProvider.WithScoped <RocketDbContext>()
                     .Invoke(
            async z =>
        {
            var rocket = new ReadyRocket
            {
                Type         = RocketType.Falcon9,
                SerialNumber = "12345678901234"
            };
            z.Add(rocket);

            await z.SaveChangesAsync();
            return(rocket.Id);
        }
            );

        var response = await client.GetRocketAsync(rocket.Value);

        response.Result.Type.Should().Be(HttpRocketType.Falcon9);
        response.Result.Sn.Should().Be("12345678901234");
    }