public async Task AlarmsAreCreatedForEachIncludedTable()
        {
            var mockery   = new DynamoAlarmGeneratorMockery();
            var generator = mockery.AlarmGenerator;

            ConfigureTables(mockery);

            await generator.GenerateAlarmsFor(Config(), RunMode.GenerateAlarms);

            CloudwatchVerify.AlarmWasPutOnIndex(mockery.Cloudwatch,
                                                alarmName: "test-a-table-ConsumerIdIndex-ConsumedReadCapacityUnits-TestGroup",
                                                tableName: "test-a-table",
                                                indexName: "ConsumerIdIndex",
                                                metricName: "ConsumedReadCapacityUnits",
                                                threshold: 312000,
                                                period: 300);

            CloudwatchVerify.AlarmWasPutOnIndex(mockery.Cloudwatch,
                                                alarmName: "test-a-table-ConsumerIdIndex-ConsumedWriteCapacityUnits-TestGroup",
                                                tableName: "test-a-table",
                                                indexName: "ConsumerIdIndex",
                                                metricName: "ConsumedWriteCapacityUnits",
                                                threshold: 144000,
                                                period: 300);

            CloudwatchVerify.AlarmWasNotPutonIndex(mockery.Cloudwatch,
                                                   tableName: "products-table",
                                                   indexName: "ThisIsAnIndex");
        }
        public void TheFirstAlarmIsPut()
        {
            var mockery = new DynamoAlarmGeneratorMockery();

            TestRun(mockery);

            CloudwatchVerify.AlarmWasPutOnIndex(mockery.Cloudwatch,
                                                alarmName: "happy-table-1-happy-index-1-ConsumedReadCapacityUnits-TestGroup",
                                                tableName: "happy-table-1",
                                                indexName: "happy-index-1",
                                                metricName: "ConsumedReadCapacityUnits",
                                                threshold: 312000,
                                                period: 300);
        }
        public async Task AWriteAlarmIsCreatedOrUpdated()
        {
            var mockery   = new DynamoAlarmGeneratorMockery();
            var generator = mockery.AlarmGenerator;

            ConfigureTables(mockery);

            await generator.GenerateAlarmsFor(Config(), RunMode.GenerateAlarms);

            CloudwatchVerify.AlarmWasPutOnIndex(mockery.Cloudwatch,
                                                alarmName: "authentication-tokens-ThisIsAnIndex-ConsumedWriteCapacityUnits-TestGroup",
                                                tableName: "authentication-tokens",
                                                indexName: "ThisIsAnIndex",
                                                metricName: "ConsumedWriteCapacityUnits",
                                                threshold: 144000,
                                                period: 300);
        }