예제 #1
0
        public async Task CanFilterFeaturesByTags()
        {
            var client = new LeanwareTestClient(_factory);

            var testTag = $"{Guid.NewGuid().ToString().Split('-')[1]}{Guid.NewGuid().ToString().Split('-')[1]}";

            var features       = new List <Feature>();
            var taggedFeatures = new List <Feature>();

            for (int i = 0; i < 10; i++)
            {
                features.Add((await client.Create <Feature>()).Received);
            }

            for (int i = 0; i < 5; i++)
            {
                var tag = features[i].Tags.First();

                taggedFeatures.Add(features[i]);

                await client.Update <Feature>(features[i].UpdatePath, new { Tags = new List <string> {
                                                                                testTag
                                                                            } });
            }

            var filteredFeatures = await client.Get <List <Feature> >($"api/features?tag={testTag}");

            filteredFeatures.Select(ff => ff.Id).Should().BeEquivalentTo(taggedFeatures.Select(tf => tf.Id));
        }
예제 #2
0
        public async Task CanCollectLogs()
        {
            var client = new LeanwareTestClient(_factory);

            var feature = (await client.Create <Feature>()).Received;

            var story = (await client.Create <Story>(new { FeatureId = feature.Id })).Received;

            await client.Post(path : $"api/features/{feature.Id}/approve");

            await client.Post(path : $"api/stories/{story.Id}/start");

            await client.Post(path : $"api/stories/{story.Id}/finish");

            var storyUpdate = new { Title = RandomTitle("S") };

            await client.Update <Story>(story.UpdatePath, storyUpdate);

            var logs = await client.Get <List <string> >(path : $"api/logs");

            var assertedLogs = new[] {
                $"Feature #{feature.Id} has been created",
                $"Story #{story.Id} has been added to feature #{feature.Id}",
                $"Feature #{feature.Id} has been approved",
                $"Story #{story.Id} has been started",
                $"Story #{story.Id} has been finished",
                $"Feature #{feature.Id} has been finished",
                $"Story #{story.Id} has been updated"
            };

            foreach (var al in assertedLogs)
            {
                logs.Should().Contain(al);
            }
        }
예제 #3
0
        public async Task CanCrudStoriesAndFeatures()
        {
            // Given CRUD client
            var client = new LeanwareTestClient(_factory);

            // When I create new feature
            var createFeatureResult = await client.Create <Feature>();

            // Then created feature should have valid ID and title
            var createdFeature = createFeatureResult.Received;

            createdFeature.Id.Should().BeGreaterThan(0);
            createdFeature.Status.Should().Be("New");
            createdFeature.Title.Should().Be(createFeatureResult.Sent.Title);

            // When I update feature
            var featureUpdate = new { Tags = RandomTags };

            // Then updated feature should have new title
            var featureUpdateResult = await client.Update <Feature>(createdFeature.UpdatePath, featureUpdate);

            featureUpdateResult.Received.Title.Should().Be(createdFeature.Title);
            featureUpdateResult.Received.Tags.Should().Contain(featureUpdate.Tags);

            // When I create story
            var createStoryResult = await client.Create <Story>(new { FeatureId = createdFeature.Id });

            // Then I created story should have valid ID and title
            var createdStory = createStoryResult.Received;

            createdStory.Id.Should().BeGreaterThan(0);

            createdStory.Title.Should().Be(createStoryResult.Sent.Title);

            createdStory.Status.Should().Be("New");

            createdStory.FeatureId.Should().Be(createdFeature.Id);

            // When I update story
            var storyUpdate = new { Title = RandomTitle("S") };

            // Then updated story should have new title
            var storyUpdateResult = await client.Update <Story>(createdStory.UpdatePath, storyUpdate);

            storyUpdateResult.Received.Title.Should().Be(storyUpdate.Title);

            // When I delete story
            await client.Delete(createdStory.DeletePath);

            // Then getting story should return 404
            var deletedStory = await client.Get(createdStory.ReadPath);

            deletedStory.StatusCode.Should().Be(HttpStatusCode.NotFound);

            // When I delete feature
            await client.Delete(createdFeature.DeletePath);

            // Then getting feature should return 404
            var deletedFeature = await client.Get(createdFeature.ReadPath);

            deletedFeature.StatusCode.Should().Be(HttpStatusCode.NotFound);
        }