Giter Site home page Giter Site logo

Generate tests from json files about rstest HOT 2 OPEN

la10736 avatar la10736 commented on July 30, 2024 3
Generate tests from json files

from rstest.

Comments (2)

la10736 avatar la10736 commented on July 30, 2024
  • align to master (relative path)
  • use SysEngine in files_arg too and rewrite tests to use mockall
  • use relative path in files
  • implement render
  • E2E tests
  • Docs
  • ? syntax for json_path ?

from rstest.

la10736 avatar la10736 commented on July 30, 2024

The proposed rendering is just wrong 😢 . In order to avoid modules name duplication every rendering should start with the function name. So, in the previous described case we'll have something like the the following expanded code (some details are omitted):

mod age_is_greater_eq_than_18 {
    use super::*;
    #[derive(Deserialize)]
    struct __JsonObjDeserialized {
        age: u16
    }
    mod resources {
        use super::*;
        mod tests {
            use super::*;
            mod people_json {
                use super::*;
                #[test]
                fn data_1() {build 
                        let __JsonObjDeserialized {
                            age
                        } = serde_json::from_str(#"{
                                  "name": "John Doe",
                                  "age": 23
                              }"#
                        ).expect(#"I cannot deserialize '"{
                                  "name": "John Doe",
                                  "age": 23
                              }"' to extract fields"#);
                       assert!(age>=18);
                }

                #[test]
                fn data_2() {build 
                        let __JsonObjDeserialized {
                            age
                        } = serde_json::from_str(#"{
                                  "name": "Andy Brown",
                                  "age": 45
                              }"#
                        ).expect(#"I cannot deserialize '"{
                                   "name": "Andy Brown",
                                   "age": 45
                              }"' to extract fields"#);
                       assert!(age>=18);
                }
            }
        }
    }
}

mod use_remap {
    use super::*;
    #[derive(Deserialize)]
    struct __JsonObjDeserialized {
        #[serde(rename = "age")]
        a: u16
    }
    /// Rest of the code is like the previous case where use `a` instead of `age` in the test
}

mod use_remap_from_serde {
    /// The same code like in `use_remap`
}

mod use_object {
    mod resources {
        use super::*;
        mod tests {
            use super::*;
            mod people_json {
                use super::*;
                #[test]
                fn data_1() {build 
                        let user = serde_json::from_str(#"{
                                  "name": "John Doe",
                                  "age": 23
                              }"#
                        ).expect(#"I cannot deserialize '"{
                                  "name": "John Doe",
                                  "age": 23
                              }"'"#);
                       assert!(user.age>=18);
                }

                #[test]
                fn data_2() {build 
                        let user = serde_json::from_str(#"{
                                  "name": "Andy Brown",
                                  "age": 45
                              }"#
                        ).expect(#"I cannot deserialize '"{
                                   "name": "Andy Brown",
                                   "age": 45
                              }"'"#);
                       assert!(user.age>=18);
                }
            }
        }
    }
}

from rstest.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.