Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mock generator for tests #429

Merged
merged 5 commits into from
Jul 2, 2018
Merged

Conversation

jmini
Copy link
Member

@jmini jmini commented Jul 1, 2018

PR checklist

  • Read the contribution guidelines.
  • Ran the shell script under ./bin/ to update Petstore sample so that CIs can verify the change. (For instance, only need to run ./bin/{LANG}-petstore.sh and ./bin/security/{LANG}-petstore.sh if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in .\bin\windows\.
  • Filed the PR against the correct branch: master, 3.1.x, 4.0.x. Default: master.
  • Copied the technical committee to review the pull request if your PR is targeting a particular programming language. @OpenAPITools/generator-core-team

Description of the PR

This PR adds a new class that can be used in tests: MockDefaultGenerator
This is a subclass of DefaultGenerator that only modify the way files are written. Instead of writting them to the disks, they are kept in memory.

Usage (example in this PR):

        MockDefaultGenerator generator = new MockDefaultGenerator();
        generator.opts(clientOptInput).generate();

Check on generated files:

        Map<String, String> generatedFiles = generator.getFiles();
        Assert.assertEquals(generatedFiles.size(), 35);
        ensureContainsFile(generatedFiles, output, ".gitignore");
        ensureContainsFile(generatedFiles, output, ".openapi-generator-ignore");
        ensureContainsFile(generatedFiles, output, ".openapi-generator/VERSION");
        ensureContainsFile(generatedFiles, output, ".travis.yml");
        ensureContainsFile(generatedFiles, output, "build.gradle");
        ensureContainsFile(generatedFiles, output, "build.sbt");

Check on the content of a generated file:

        String defaultApiConent = generatedFiles.get(defaultApiFilename);
        Assert.assertTrue(defaultApiConent.contains("public class DefaultApi")); 

Check on the parameters of a template-based generated file:

        Optional<WrittenTemplateBasedFile> optional = generator.getTemplateBasedFiles().stream().filter(f -> defaultApiFilename.equals(f.getOutputFilename())).findFirst();
        Assert.assertTrue(optional.isPresent());
        Assert.assertEquals(optional.get().getTemplateData().get("classname"), "DefaultApi");

The only changes made to the API is to create a new protected method writeInputStreamToFile(String, InputStream, String) in DefaultGenerator.

@jmini jmini added this to the 3.1.0 milestone Jul 1, 2018
@jmini jmini force-pushed the mock_generator_for_tests branch from 6dc683f to 58f1234 Compare July 1, 2018 19:03
@jmini jmini force-pushed the mock_generator_for_tests branch from 58f1234 to db1adf7 Compare July 1, 2018 19:31
Copy link
Member

@wing328 wing328 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me (and I just restarted the CircleCI, Shippable jobs)

@jmini jmini merged commit 001f5ae into OpenAPITools:master Jul 2, 2018
A-Joshi pushed a commit to ihsmarkitoss/openapi-generator that referenced this pull request Feb 27, 2019
Create MockDefaultGenerator class for tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants