CarlaTestHelper
Description
This repo contains a testing library used in Carla end-to-end tests. It provides a library to describe and test conversations.
Requirements
- Elixir - The language
- Mix - Elixir run tool (included with Elixir)
- Hex - Elixir package manage (included with Elixir)
Installation
If available in Hex, the package can be installed
by adding carla_test_helper to your list of dependencies in mix.exs:
def deps do
[
{:carla_test_helper, "~> 0.1.0"}
]
endYou'll then need to update your config.exs so it contains the following configs
V2
config :carla_test_helper,
bot_version: "v2",
directline_token: "my_token"V1
config :carla_test_helper,
bot_version: "v1",Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/carla_test_helper.
Example Test Case
If we want to write a test case for the "Request Detail - request details for optima" scenario, our file would look like this:
defmodule BotTestsTest do
use CarlaTestHelper.Case, async: true
import CarlaTestHelper
describe "request.detail" do
carlatest "should provide details on optima", do: [
# write conversation tests here
# message("optima", "request.details.optima")
]
end
endHelper Functions
message
Parameters:
- message - Message to send.
- expected_action - Resulting response's action.
Sends message for the asserts the response is the expected_action.
message("optima", "request.details.optima")quick_reply
Parameters:
- label - Label of the button you want to click.
- expected_action - Resulting response's action.
Uses quick reply button using label and asserts the response is the expected_action.
quick_reply("Build & Price", "build:_optima")button_action
Parameters:
- label - Label of the button you want to click.
- expected_action - Resulting response's action.
Similar to quick reply, finds button using label and asserts the response is expected_action.
button_action("Ok", "hello_2")button_linkout
Parameters:
- label - Label of the button you want to click.
- uri - Linkout button payload value
Similar to quick reply, finds button using label and asserts the button payload is value.
button_linkout("Features & Specs", "https://kia.com/us/en/vehicle/optima/2018/features")button_linkout
Parameters:
- label - Label of the button you want to click.
- uri - Linkout button payload value
- params - Params of the uri
Similar to quick reply, finds button using label, asserts the button payload is value and contains the list of params.
button_linkout("See Offers", "https://kia.com/us/en/offers/2018/10036", ["series=optima", "offers=3,2,1"])gallery_card_button_action
Parameters:
- index - Index of the gallery card to test
- label - Label of the button you want to click
- expected_action - Resulting response's action
Uses gallery card item at index, finds a button using label and then asserts the button payload is value and asserts the response is expected_action.
Note: Indexing starts at 0
gallery_card_button_action(2, "See Offers", "request.offers") # Targets the 3rd gallery cardgallery_card_button_linkout
Parameters:
- index - Index of the gallery card to test
- label - Label of the button you want to click
- uri - Linkout button payload value
Uses gallery card item at index, finds a button using label, asserts the button payload is uri.
Note: Indexing starts at 0
gallery_card_button_linkout(0, "See Offers", "http://example.com") # Targets the 1st gallery cardgallery_card_button_linkout
Parameters:
- index - Index of the gallery card to test
- label - Label of the button you want to click
- uri - Linkout button payload value
- params - Params of the uri
Uses gallery card item at index, finds a button using label, asserts the button payload is uri and contains the list of params.
Note: Indexing starts at 0
gallery_card_button_linkout(0, "See Offers", "http://example.com") # Targets the 1st gallery carddebug_last_response
Prints out JSON of last response in the console
debug_last_response()