How to use factory method in Playwright Internal

Best JavaScript code snippet using playwright-internal

test_instances.py

Source:test_instances.py Github

copy

Full Screen

...6from awx.api.versioning import reverse7from django.utils.timezone import now8@pytest.mark.django_db9def test_default_tower_instance_group(default_instance_group, job_factory):10 assert default_instance_group in job_factory().preferred_instance_groups11@pytest.mark.django_db12class TestPolicyTaskScheduling:13 """Tests make assertions about when the policy task gets scheduled"""14 @pytest.mark.parametrize('field, value, expect', [15 ('name', 'foo-bar-foo-bar', False),16 ('policy_instance_percentage', 35, True),17 ('policy_instance_minimum', 3, True),18 ('policy_instance_list', ['bar?'], True),19 ('modified', now(), False)20 ])21 def test_policy_task_ran_for_ig_when_needed(self, instance_group_factory, field, value, expect):22 # always run on instance group creation23 with mock.patch('awx.main.models.ha.schedule_policy_task') as mock_policy:24 ig = InstanceGroup.objects.create(name='foo')25 mock_policy.assert_called_once()26 # selectively run on instance group modification27 with mock.patch('awx.main.models.ha.schedule_policy_task') as mock_policy:28 setattr(ig, field, value)29 ig.save()30 if expect:31 mock_policy.assert_called_once()32 else:33 mock_policy.assert_not_called()34 @pytest.mark.parametrize('field, value, expect', [35 ('hostname', 'foo-bar-foo-bar', True),36 ('managed_by_policy', False, True),37 ('enabled', False, False),38 ('capacity_adjustment', 0.42, True),39 ('capacity', 42, False)40 ])41 def test_policy_task_ran_for_instance_when_needed(self, instance_group_factory, field, value, expect):42 # always run on instance group creation43 with mock.patch('awx.main.models.ha.schedule_policy_task') as mock_policy:44 inst = Instance.objects.create(hostname='foo')45 mock_policy.assert_called_once()46 # selectively run on instance group modification47 with mock.patch('awx.main.models.ha.schedule_policy_task') as mock_policy:48 setattr(inst, field, value)49 inst.save()50 if expect:51 mock_policy.assert_called_once()52 else:53 mock_policy.assert_not_called()54@pytest.mark.django_db55def test_instance_dup(org_admin, organization, project, instance_factory, instance_group_factory, get, system_auditor):56 i1 = instance_factory("i1")57 i2 = instance_factory("i2")58 i3 = instance_factory("i3")59 ig_all = instance_group_factory("all", instances=[i1, i2, i3])60 ig_dup = instance_group_factory("duplicates", instances=[i1])61 project.organization.instance_groups.add(ig_all, ig_dup)62 actual_num_instances = Instance.objects.active_count()63 list_response = get(reverse('api:instance_list'), user=system_auditor)64 api_num_instances_auditor = list(list_response.data.items())[0][1]65 list_response2 = get(reverse('api:instance_list'), user=org_admin)66 api_num_instances_oa = list(list_response2.data.items())[0][1]67 assert actual_num_instances == api_num_instances_auditor68 # Note: The org_admin will not see the default 'tower' node because it is not in it's group, as expected69 assert api_num_instances_oa == (actual_num_instances - 1)70@pytest.mark.django_db71def test_policy_instance_few_instances(instance_factory, instance_group_factory):72 i1 = instance_factory("i1")73 ig_1 = instance_group_factory("ig1", percentage=25)74 ig_2 = instance_group_factory("ig2", percentage=25)75 ig_3 = instance_group_factory("ig3", percentage=25)76 ig_4 = instance_group_factory("ig4", percentage=25)77 apply_cluster_membership_policies()78 assert len(ig_1.instances.all()) == 179 assert i1 in ig_1.instances.all()80 assert len(ig_2.instances.all()) == 181 assert i1 in ig_2.instances.all()82 assert len(ig_3.instances.all()) == 183 assert i1 in ig_3.instances.all()84 assert len(ig_4.instances.all()) == 185 assert i1 in ig_4.instances.all()86 i2 = instance_factory("i2")87 apply_cluster_membership_policies()88 assert len(ig_1.instances.all()) == 189 assert i1 in ig_1.instances.all()90 assert len(ig_2.instances.all()) == 191 assert i2 in ig_2.instances.all()92 assert len(ig_3.instances.all()) == 193 assert i1 in ig_3.instances.all()94 assert len(ig_4.instances.all()) == 195 assert i2 in ig_4.instances.all()96@pytest.mark.django_db97def test_policy_instance_distribution_round_up(instance_factory, instance_group_factory):98 i1 = instance_factory("i1")99 i2 = instance_factory("i2")100 i3 = instance_factory("i3")101 i4 = instance_factory("i4")102 i5 = instance_factory("i5")103 ig_1 = instance_group_factory("ig1", percentage=79)104 apply_cluster_membership_policies()105 assert len(ig_1.instances.all()) == 4106 assert set([i1, i2, i3, i4]) == set(ig_1.instances.all())107 assert i5 not in ig_1.instances.all()108@pytest.mark.django_db109def test_policy_instance_distribution_uneven(instance_factory, instance_group_factory):110 i1 = instance_factory("i1")111 i2 = instance_factory("i2")112 i3 = instance_factory("i3")113 ig_1 = instance_group_factory("ig1", percentage=25)114 ig_2 = instance_group_factory("ig2", percentage=25)115 ig_3 = instance_group_factory("ig3", percentage=25)116 ig_4 = instance_group_factory("ig4", percentage=25)117 apply_cluster_membership_policies()118 assert len(ig_1.instances.all()) == 1119 assert i1 in ig_1.instances.all()120 assert len(ig_2.instances.all()) == 1121 assert i2 in ig_2.instances.all()122 assert len(ig_3.instances.all()) == 1123 assert i3 in ig_3.instances.all()124 assert len(ig_4.instances.all()) == 1125 assert i1 in ig_4.instances.all()126@pytest.mark.django_db127def test_policy_instance_distribution_even(instance_factory, instance_group_factory):128 i1 = instance_factory("i1")129 i2 = instance_factory("i2")130 i3 = instance_factory("i3")131 i4 = instance_factory("i4")132 ig_1 = instance_group_factory("ig1", percentage=25)133 ig_2 = instance_group_factory("ig2", percentage=25)134 ig_3 = instance_group_factory("ig3", percentage=25)135 ig_4 = instance_group_factory("ig4", percentage=25)136 apply_cluster_membership_policies()137 assert len(ig_1.instances.all()) == 1138 assert i1 in ig_1.instances.all()139 assert len(ig_2.instances.all()) == 1140 assert i2 in ig_2.instances.all()141 assert len(ig_3.instances.all()) == 1142 assert i3 in ig_3.instances.all()143 assert len(ig_4.instances.all()) == 1144 assert i4 in ig_4.instances.all()145 ig_1.policy_instance_minimum = 2146 ig_1.save()147 apply_cluster_membership_policies()148 assert len(ig_1.instances.all()) == 2149 assert i1 in ig_1.instances.all()150 assert i2 in ig_1.instances.all()151 assert len(ig_2.instances.all()) == 1152 assert i3 in ig_2.instances.all()153 assert len(ig_3.instances.all()) == 1154 assert i4 in ig_3.instances.all()155 assert len(ig_4.instances.all()) == 1156 assert i1 in ig_4.instances.all()157@pytest.mark.django_db158def test_policy_instance_distribution_simultaneous(instance_factory, instance_group_factory):159 i1 = instance_factory("i1")160 i2 = instance_factory("i2")161 i3 = instance_factory("i3")162 i4 = instance_factory("i4")163 ig_1 = instance_group_factory("ig1", percentage=25, minimum=2)164 ig_2 = instance_group_factory("ig2", percentage=25)165 ig_3 = instance_group_factory("ig3", percentage=25)166 ig_4 = instance_group_factory("ig4", percentage=25)167 apply_cluster_membership_policies()168 assert len(ig_1.instances.all()) == 2169 assert i1 in ig_1.instances.all()170 assert i2 in ig_1.instances.all()171 assert len(ig_2.instances.all()) == 1172 assert i3 in ig_2.instances.all()173 assert len(ig_3.instances.all()) == 1174 assert i4 in ig_3.instances.all()175 assert len(ig_4.instances.all()) == 1176 assert i1 in ig_4.instances.all()177@pytest.mark.django_db178def test_policy_instance_list_manually_assigned(instance_factory, instance_group_factory):179 i1 = instance_factory("i1")180 i2 = instance_factory("i2")181 ig_1 = instance_group_factory("ig1", percentage=100, minimum=2)182 ig_2 = instance_group_factory("ig2")183 ig_2.policy_instance_list = [i2.hostname]184 ig_2.save()185 apply_cluster_membership_policies()186 assert len(ig_1.instances.all()) == 2187 assert i1 in ig_1.instances.all()188 assert i2 in ig_1.instances.all()189 assert len(ig_2.instances.all()) == 1190 assert i2 in ig_2.instances.all()191@pytest.mark.django_db192def test_policy_instance_list_explicitly_pinned(instance_factory, instance_group_factory):193 i1 = instance_factory("i1")194 i2 = instance_factory("i2")195 ig_1 = instance_group_factory("ig1", percentage=100, minimum=2)196 ig_2 = instance_group_factory("ig2")197 ig_2.policy_instance_list = [i2.hostname]198 ig_2.save()199 # without being marked as manual, i2 will be picked up by ig_1200 apply_cluster_membership_policies()201 assert set(ig_1.instances.all()) == set([i1, i2])202 assert set(ig_2.instances.all()) == set([i2])203 i2.managed_by_policy = False204 i2.save()205 # after marking as manual, i2 no longer available for ig_1206 apply_cluster_membership_policies()207 assert set(ig_1.instances.all()) == set([i1])208 assert set(ig_2.instances.all()) == set([i2])209@pytest.mark.django_db210def test_basic_instance_group_membership(instance_group_factory, default_instance_group, job_factory):211 j = job_factory()212 ig = instance_group_factory("basicA", [default_instance_group.instances.first()])213 j.job_template.instance_groups.add(ig)214 assert ig in j.preferred_instance_groups215 assert default_instance_group not in j.preferred_instance_groups216@pytest.mark.django_db217def test_inherited_instance_group_membership(instance_group_factory, default_instance_group, job_factory, project, inventory):218 j = job_factory()219 j.project = project220 j.inventory = inventory221 ig_org = instance_group_factory("basicA", [default_instance_group.instances.first()])222 ig_inv = instance_group_factory("basicB", [default_instance_group.instances.first()])223 j.project.organization.instance_groups.add(ig_org)224 j.inventory.instance_groups.add(ig_inv)225 assert ig_org in j.preferred_instance_groups226 assert ig_inv in j.preferred_instance_groups227 assert default_instance_group not in j.preferred_instance_groups228@pytest.mark.django_db229def test_mixed_group_membership(instance_factory, instance_group_factory):230 for i in range(5):231 instance_factory("i{}".format(i))232 ig_1 = instance_group_factory("ig1", percentage=60)233 ig_2 = instance_group_factory("ig2", minimum=3)234 ig_3 = instance_group_factory("ig3", minimum=1, percentage=60)235 apply_cluster_membership_policies()236 for group in (ig_1, ig_2, ig_3):237 assert len(group.instances.all()) == 3238@pytest.mark.django_db239def test_instance_group_capacity(instance_factory, instance_group_factory):240 i1 = instance_factory("i1")241 i2 = instance_factory("i2")242 i3 = instance_factory("i3")243 ig_all = instance_group_factory("all", instances=[i1, i2, i3])244 assert ig_all.capacity == 300245 ig_single = instance_group_factory("single", instances=[i1])246 assert ig_single.capacity == 100247@pytest.mark.django_db248class TestInstanceGroupOrdering:249 def test_ad_hoc_instance_groups(self, instance_group_factory, inventory, default_instance_group):250 ad_hoc = AdHocCommand.objects.create(inventory=inventory)251 assert ad_hoc.preferred_instance_groups == [default_instance_group]252 ig_org = instance_group_factory("OrgIstGrp", [default_instance_group.instances.first()])253 ig_inv = instance_group_factory("InvIstGrp", [default_instance_group.instances.first()])254 inventory.organization.instance_groups.add(ig_org)255 assert ad_hoc.preferred_instance_groups == [ig_org]256 inventory.instance_groups.add(ig_inv)257 assert ad_hoc.preferred_instance_groups == [ig_inv, ig_org]258 def test_inventory_update_instance_groups(self, instance_group_factory, inventory_source, default_instance_group):259 iu = InventoryUpdate.objects.create(inventory_source=inventory_source)260 assert iu.preferred_instance_groups == [default_instance_group]261 ig_org = instance_group_factory("OrgIstGrp", [default_instance_group.instances.first()])262 ig_inv = instance_group_factory("InvIstGrp", [default_instance_group.instances.first()])263 ig_tmp = instance_group_factory("TmpIstGrp", [default_instance_group.instances.first()])264 inventory_source.inventory.organization.instance_groups.add(ig_org)265 inventory_source.inventory.instance_groups.add(ig_inv)266 assert iu.preferred_instance_groups == [ig_inv, ig_org]267 inventory_source.instance_groups.add(ig_tmp)268 # API does not allow setting IGs on inventory source, so ignore those269 assert iu.preferred_instance_groups == [ig_inv, ig_org]270 def test_project_update_instance_groups(self, instance_group_factory, project, default_instance_group):271 pu = ProjectUpdate.objects.create(project=project)272 assert pu.preferred_instance_groups == [default_instance_group]273 ig_org = instance_group_factory("OrgIstGrp", [default_instance_group.instances.first()])274 ig_tmp = instance_group_factory("TmpIstGrp", [default_instance_group.instances.first()])275 project.organization.instance_groups.add(ig_org)276 assert pu.preferred_instance_groups == [ig_org]277 project.instance_groups.add(ig_tmp)278 assert pu.preferred_instance_groups == [ig_tmp, ig_org]279 def test_job_instance_groups(self, instance_group_factory, inventory, project, default_instance_group):280 jt = JobTemplate.objects.create(inventory=inventory, project=project)281 job = Job.objects.create(inventory=inventory, job_template=jt, project=project)282 assert job.preferred_instance_groups == [default_instance_group]283 ig_org = instance_group_factory("OrgIstGrp", [default_instance_group.instances.first()])284 ig_inv = instance_group_factory("InvIstGrp", [default_instance_group.instances.first()])285 ig_tmp = instance_group_factory("TmpIstGrp", [default_instance_group.instances.first()])286 project.organization.instance_groups.add(ig_org)287 inventory.instance_groups.add(ig_inv)288 assert job.preferred_instance_groups == [ig_inv, ig_org]289 job.job_template.instance_groups.add(ig_tmp)...

Full Screen

Full Screen

test_migrate.py

Source:test_migrate.py Github

copy

Full Screen

1#!/usr/bin/env python32# Copyright 2018 Google LLC3#4# Licensed under the Apache License, Version 2.0 (the "License");5# you may not use this file except in compliance with the License.6# You may obtain a copy of the License at7#8# https://www.apache.org/licenses/LICENSE-2.09#10# Unless required by applicable law or agreed to in writing, software11# distributed under the License is distributed on an "AS IS" BASIS,12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13# See the License for the specific language governing permissions and14# limitations under the License.15import os16import sys17import unittest18sys.path.append(19 os.path.abspath(20 os.path.join(21 os.path.dirname(__file__),22 '../../helpers/')))23import migrate # noqa: E40224TERRAFORM_STATE_LIST = [25 "google_compute_instance.test",26 "google_project_iam_member.user-editor",27 "module.project-factory.google_compute_default_service_account.default",28 "module.project-factory.google_compute_shared_vpc_service_project.shared_vpc_attachment", # noqa: E50129 "module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[0]", # noqa: E50130 "module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[1]", # noqa: E50131 "module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[2]", # noqa: E50132 "module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[0]", # noqa: E50133 "module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[1]", # noqa: E50134 "module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[2]", # noqa: E50135 "module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[0]", # noqa: E50136 "module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[1]", # noqa: E50137 "module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[2]", # noqa: E50138 "module.project-factory.google_organization.org",39 "module.project-factory.google_project.project",40 "module.project-factory.google_project_iam_member.controlling_group_vpc_membership[0]", # noqa: E50141 "module.project-factory.google_project_iam_member.controlling_group_vpc_membership[1]", # noqa: E50142 "module.project-factory.google_project_iam_member.controlling_group_vpc_membership[2]", # noqa: E50143 "module.project-factory.google_project_iam_member.gsuite_group_role",44 "module.project-factory.google_project_service.project_services",45 "module.project-factory.google_service_account.default_service_account",46 "module.project-factory.google_service_account_iam_member.service_account_grant_to_group", # noqa: E50147 "module.project-factory.gsuite_group.group",48 "module.project-factory.gsuite_group_member.api_s_account_api_sa_group_member", # noqa: E50149 "module.project-factory.null_data_source.data_final_group_email",50 "module.project-factory.null_data_source.data_given_group_email",51 "module.project-factory.null_data_source.data_group_email_format",52 "module.project-factory.null_resource.delete_default_compute_service_account", # noqa: E50153 "module.project-factory.random_id.random_project_id_suffix",54]55TERRAFORM_MOVES = [56 (57 "module.project-factory.google_compute_shared_vpc_service_project.shared_vpc_attachment", # noqa: E50158 "module.project-factory.module.project-factory.google_compute_shared_vpc_service_project.shared_vpc_attachment", # noqa: E50159 ),60 (61 "module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[0]", # noqa: E50162 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[0]", # noqa: E50163 ),64 (65 "module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[1]", # noqa: E50166 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[1]", # noqa: E50167 ),68 (69 "module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[2]", # noqa: E50170 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.apis_service_account_role_to_vpc_subnets[2]", # noqa: E50171 ),72 (73 "module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[0]", # noqa: E50174 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[0]", # noqa: E50175 ),76 (77 "module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[1]", # noqa: E50178 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[1]", # noqa: E50179 ),80 (81 "module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[2]", # noqa: E50182 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.group_role_to_vpc_subnets[2]", # noqa: E50183 ),84 (85 "module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[0]", # noqa: E50186 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[0]", # noqa: E50187 ),88 (89 "module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[1]", # noqa: E50190 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[1]", # noqa: E50191 ),92 (93 "module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[2]", # noqa: E50194 "module.project-factory.module.project-factory.google_compute_subnetwork_iam_member.service_account_role_to_vpc_subnets[2]", # noqa: E50195 ),96 (97 "module.project-factory.google_project.project",98 "module.project-factory.module.project-factory.google_project.main",99 ),100 (101 "module.project-factory.google_project_iam_member.controlling_group_vpc_membership[0]", # noqa: E501102 "module.project-factory.module.project-factory.google_project_iam_member.controlling_group_vpc_membership[0]", # noqa: E501103 ),104 (105 "module.project-factory.google_project_iam_member.controlling_group_vpc_membership[1]", # noqa: E501106 "module.project-factory.module.project-factory.google_project_iam_member.controlling_group_vpc_membership[1]", # noqa: E501107 ),108 (109 "module.project-factory.google_project_iam_member.controlling_group_vpc_membership[2]", # noqa: E501110 "module.project-factory.module.project-factory.google_project_iam_member.controlling_group_vpc_membership[2]", # noqa: E501111 ),112 (113 "module.project-factory.google_project_iam_member.gsuite_group_role",114 "module.project-factory.module.project-factory.google_project_iam_member.gsuite_group_role", # noqa: E501115 ),116 (117 "module.project-factory.google_project_service.project_services",118 "module.project-factory.module.project-factory.google_project_service.project_services", # noqa: E501119 ),120 (121 "module.project-factory.google_service_account.default_service_account", # noqa: E501122 "module.project-factory.module.project-factory.google_service_account.default_service_account", # noqa: E501123 ),124 (125 "module.project-factory.google_service_account_iam_member.service_account_grant_to_group", # noqa: E501126 "module.project-factory.module.project-factory.google_service_account_iam_member.service_account_grant_to_group", # noqa: E501127 ),128 (129 "module.project-factory.null_resource.delete_default_compute_service_account", # noqa: E501130 "module.project-factory.module.project-factory.null_resource.delete_default_compute_service_account", # noqa: E501131 ),132 (133 "module.project-factory.random_id.random_project_id_suffix",134 "module.project-factory.module.project-factory.random_id.random_project_id_suffix", # noqa: E501135 ),136]137# The following entities are data sources that are not part of the 1.0138# migration process and should not be present in the list of resource139# moves.140TERRAFORM_DROPPED_DATA_SOURCES = [141 (142 "module.project-factory.google_organization.org",143 "module.project-factory.module.project-factory.google_organization.org", # noqa: E501144 ),145 (146 "module.project-factory.null_data_source.data_final_group_email",147 "module.project-factory.module.project-factory.null_data_source.data_final_group_email", # noqa: E501148 ),149 (150 "module.project-factory.null_data_source.data_given_group_email",151 "module.project-factory.module.project-factory.null_data_source.data_given_group_email", # noqa: E501152 ),153 (154 "module.project-factory.null_data_source.data_group_email_format",155 "module.project-factory.module.project-factory.null_data_source.data_group_email_format", # noqa: E501156 ),157]158# The following entities are resources that were not part of the migration159# and should not be present in the list of resource moves.160TERRAFORM_UNMIGRATED_MOVES = [161 (162 "module.project-factory.gsuite_group.group",163 "module.project-factory.module.project-factory.gsuite_group.group",164 ),165 (166 "module.project-factory.gsuite_group_member.api_s_account_api_sa_group_member", # noqa: E501167 "module.project-factory.module.project-factory.gsuite_group_member.api_s_account_api_sa_group_member", # noqa: E501168 ),169]170class TestGSuiteMigration(unittest.TestCase):171 def setUp(self):172 self.resources = [173 migrate.TerraformResource.from_path(path)174 for path in TERRAFORM_STATE_LIST175 ]176 self.module = migrate.TerraformModule(177 'module.project-factory',178 self.resources)179 self.migration = migrate.GSuiteMigration(self.module)180 def test_moves(self):181 computed_moves = self.migration.moves()182 self.assertEqual(set(computed_moves), set(TERRAFORM_MOVES))183 def test_no_moves_of_data_sources(self):184 computed_moves = self.migration.moves()185 self.assertTrue(186 set(TERRAFORM_DROPPED_DATA_SOURCES).isdisjoint(computed_moves))187 def test_no_moves_of_unmigrated_resources(self):188 computed_moves = self.migration.moves()189 self.assertTrue(190 set(TERRAFORM_UNMIGRATED_MOVES).isdisjoint(computed_moves))191 def test_no_moves_outside_of_module(self):192 computed_moves = self.migration.moves()193 old_resources = [move[0] for move in computed_moves]194 self.assertFalse("google_compute_instance.test" in old_resources)195 self.assertFalse(196 "google_project_iam_member.user-editor" in old_resources)197class TestTerraformModule(unittest.TestCase):198 def setUp(self):199 self.resources = [200 migrate.TerraformResource.from_path(path)201 for path in TERRAFORM_STATE_LIST202 ]203 self.module = migrate.TerraformModule(204 'module.project-factory',205 self.resources)206 def test_has_resource(self):207 self.assertTrue(self.module.has_resource('google_project', 'project'))208 self.assertTrue(self.module.has_resource(None, 'project'))209 self.assertTrue(self.module.has_resource('google_project', None))210 self.assertTrue(self.module.has_resource(None, None))211 def test_has_resource_empty(self):212 self.assertFalse(213 self.module.has_resource('google_cloudiot_registry', None))214 def test_get_resources(self):215 expected = [resource for resource in self.resources216 if resource.resource_type == 'google_project_iam_member']217 actual = self.module.get_resources('google_project_iam_member', None)218 self.assertEqual(actual, expected)219 def test_get_resources_empty(self):220 actual = self.module.get_resources('google_cloudiot_registry', None)221 self.assertTrue(len(actual) == 0)222class TestTerraformResource(unittest.TestCase):223 def test_root_resource_from_path(self):224 resource = migrate.TerraformResource.from_path(225 "google_project.project")226 self.assertEqual(resource.module, '')227 self.assertEqual(resource.resource_type, 'google_project')228 self.assertEqual(resource.name, 'project')229 def test_module_resource_from_path(self):230 resource = migrate.TerraformResource.from_path(231 "module.project-factory.google_project.project")232 self.assertEqual(resource.module, 'module.project-factory')233 self.assertEqual(resource.resource_type, 'google_project')234 self.assertEqual(resource.name, 'project')235 def test_invalid_resource_from_path(self):236 self.assertRaises(237 Exception,238 lambda: migrate.TerraformResource.from_path("not a resource path!")239 )240 def test_resource_init(self):241 resource = migrate.TerraformResource('', 'google_project', 'project')242 self.assertEqual(resource.module, '')243 self.assertEqual(resource.resource_type, 'google_project')244 self.assertEqual(resource.name, 'project')245 def test_resource_path_no_module(self):246 resource = migrate.TerraformResource('', 'google_project', 'project')247 self.assertEqual(resource.path(), 'google_project.project')248 def test_resource_path_with_module(self):249 resource = migrate.TerraformResource('module.project-factory',250 'google_project', 'project')251 expected = 'module.project-factory.google_project.project'252 actual = resource.path()253 self.assertEqual(expected, actual)254if __name__ == "__main__":...

Full Screen

Full Screen

test_triples_factory.py

Source:test_triples_factory.py Github

copy

Full Screen

1# -*- coding: utf-8 -*-2"""Unit tests for triples factories."""3import unittest4import numpy as np5from pykeen.datasets import Nations6from pykeen.triples import TriplesFactory, TriplesNumericLiteralsFactory7from pykeen.triples.triples_factory import INVERSE_SUFFIX8triples = np.array(9 [10 ['peter', 'likes', 'chocolate_cake'],11 ['chocolate_cake', 'isA', 'dish'],12 ['susan', 'likes', 'pizza'],13 ['peter', 'likes', 'susan'],14 ],15 dtype=np.str,16)17instance_mapped_triples = np.array(18 [19 [0, 0],20 [2, 1],21 [4, 1],22 ],23)24instance_labels = np.array(25 [26 np.array([1]),27 np.array([0, 4]),28 np.array([3]),29 ],30)31numeric_triples = np.array(32 [33 ['peter', '/lit/hasAge', '30'],34 ['peter', '/lit/hasHeight', '185'],35 ['peter', '/lit/hasChildren', '2'],36 ['susan', '/lit/hasAge', '28'],37 ['susan', '/lit/hasHeight', '170'],38 ],39 dtype=np.str,40)41class TestTriplesFactory(unittest.TestCase):42 """Class for testing triples factories."""43 def test_correct_inverse_creation(self):44 """Test if the triples and the corresponding inverses are created and sorted correctly."""45 t = [46 ['e1', 'a.', 'e5'],47 ['e1', 'a', 'e2'],48 ]49 t = np.array(t, dtype=np.str)50 factory = TriplesFactory(triples=t, create_inverse_triples=True)51 reference_relation_to_id = {'a': 0, f'a{INVERSE_SUFFIX}': 1, 'a.': 2, f'a.{INVERSE_SUFFIX}': 3}52 self.assertEqual(reference_relation_to_id, factory.relation_to_id)53 def test_automatic_inverse_detection(self):54 """Test if the TriplesFactory detects that the triples contain inverses and creates correct ids."""55 t = [56 ['e3', f'a.{INVERSE_SUFFIX}', 'e10'],57 ['e1', 'a', 'e2'],58 ['e1', 'a.', 'e5'],59 ['e4', f'a{INVERSE_SUFFIX}', 'e5'],60 ]61 t = np.array(t, dtype=np.str)62 factory = TriplesFactory(triples=t, create_inverse_triples=False)63 reference_relation_to_id = {'a': 0, f'a{INVERSE_SUFFIX}': 1, 'a.': 2, f'a.{INVERSE_SUFFIX}': 3}64 self.assertEqual(reference_relation_to_id, factory.relation_to_id)65 self.assertTrue(factory.create_inverse_triples)66 def test_automatic_incomplete_inverse_detection(self):67 """Test if the TriplesFactory detects that the triples contain incomplete inverses and creates correct ids."""68 t = [69 ['e3', f'a.{INVERSE_SUFFIX}', 'e10'],70 ['e1', 'a', 'e2'],71 ['e1', 'a.', 'e5'],72 ]73 t = np.array(t, dtype=np.str)74 factory = TriplesFactory(triples=t, create_inverse_triples=False)75 reference_relation_to_id = {'a': 0, f'a{INVERSE_SUFFIX}': 1, 'a.': 2, f'a.{INVERSE_SUFFIX}': 3}76 self.assertEqual(reference_relation_to_id, factory.relation_to_id)77 self.assertTrue(factory.create_inverse_triples)78 def test_right_sorting(self):79 """Test if the triples and the corresponding inverses are sorted correctly."""80 t = [81 ['e1', 'a', 'e1'],82 ['e1', 'a.', 'e1'],83 ['e1', f'a.{INVERSE_SUFFIX}', 'e1'],84 ['e1', 'a.bc', 'e1'],85 ['e1', f'a.bc{INVERSE_SUFFIX}', 'e1'],86 ['e1', f'a{INVERSE_SUFFIX}', 'e1'],87 ['e1', 'abc', 'e1'],88 ['e1', f'abc{INVERSE_SUFFIX}', 'e1'],89 ]90 t = np.array(t, dtype=np.str)91 factory = TriplesFactory(triples=t, create_inverse_triples=False)92 reference_relation_to_id = {93 'a': 0,94 f'a{INVERSE_SUFFIX}': 1,95 'a.': 2,96 f'a.{INVERSE_SUFFIX}': 3,97 'a.bc': 4,98 f'a.bc{INVERSE_SUFFIX}': 5,99 'abc': 6,100 f'abc{INVERSE_SUFFIX}': 7,101 }102 self.assertEqual(reference_relation_to_id, factory.relation_to_id)103class TestSplit(unittest.TestCase):104 """Test splitting."""105 triples_factory: TriplesFactory106 def setUp(self) -> None:107 """Set up the tests."""108 self.triples_factory = Nations().training109 self.assertEqual(1592, self.triples_factory.num_triples)110 def test_split_naive(self):111 """Test splitting a factory in two with a given ratio."""112 ratio = 0.8113 train_triples_factory, test_triples_factory = self.triples_factory.split(ratio)114 expected_train_triples = int(self.triples_factory.num_triples * ratio)115 self.assertEqual(expected_train_triples, train_triples_factory.num_triples)116 self.assertEqual(self.triples_factory.num_triples - expected_train_triples, test_triples_factory.num_triples)117 def test_split_multi(self):118 """Test splitting a factory in three."""119 ratios = r0, r1 = 0.80, 0.10120 t0, t1, t2 = self.triples_factory.split(ratios)121 expected_0_triples = int(self.triples_factory.num_triples * r0)122 expected_1_triples = int(self.triples_factory.num_triples * r1)123 expected_2_triples = self.triples_factory.num_triples - expected_0_triples - expected_1_triples124 self.assertEqual(expected_0_triples, t0.num_triples)125 self.assertEqual(expected_1_triples, t1.num_triples)126 self.assertEqual(expected_2_triples, t2.num_triples)127class TestLiterals(unittest.TestCase):128 """Class for testing utils for processing numeric literals.tsv."""129 def test_create_lcwa_instances(self):130 """Test creating LCWA instances."""131 factory = TriplesNumericLiteralsFactory(triples=triples, numeric_triples=numeric_triples)132 instances = factory.create_lcwa_instances()133 id_peter = factory.entity_to_id['peter']134 id_age = instances.literals_to_id['/lit/hasAge']135 id_height = instances.literals_to_id['/lit/hasHeight']136 id_num_children = instances.literals_to_id['/lit/hasChildren']137 self.assertEqual(instances.numeric_literals[id_peter, id_age], 30)138 self.assertEqual(instances.numeric_literals[id_peter, id_height], 185)139 self.assertEqual(instances.numeric_literals[id_peter, id_num_children], 2)140 id_susan = factory.entity_to_id['susan']141 id_age = instances.literals_to_id['/lit/hasAge']142 id_height = instances.literals_to_id['/lit/hasHeight']143 id_num_children = instances.literals_to_id['/lit/hasChildren']144 self.assertEqual(instances.numeric_literals[id_susan, id_age], 28)145 self.assertEqual(instances.numeric_literals[id_susan, id_height], 170)146 self.assertEqual(instances.numeric_literals[id_susan, id_num_children], 0)147 id_chocolate_cake = factory.entity_to_id['chocolate_cake']148 id_age = instances.literals_to_id['/lit/hasAge']149 id_height = instances.literals_to_id['/lit/hasHeight']150 id_num_children = instances.literals_to_id['/lit/hasChildren']151 self.assertEqual(instances.numeric_literals[id_chocolate_cake, id_age], 0)152 self.assertEqual(instances.numeric_literals[id_chocolate_cake, id_height], 0)153 self.assertEqual(instances.numeric_literals[id_chocolate_cake, id_num_children], 0)154 # Check if multilabels are working correctly155 self.assertTrue((instance_mapped_triples == instances.mapped_triples.cpu().detach().numpy()).all())156 self.assertTrue(all(all(instance_labels[i] == instances.labels[i]) for i in range(len(instance_labels))))157 def test_triples(self):158 """Test properties of the triples factory."""159 triples_factory = TriplesFactory(triples=triples)160 self.assertEqual(set(range(triples_factory.num_entities)), set(triples_factory.entity_to_id.values()))161 self.assertEqual(set(range(triples_factory.num_relations)), set(triples_factory.relation_to_id.values()))162 self.assertTrue((triples_factory.mapped_triples == triples_factory.map_triples_to_id(triples)).all())163 def test_inverse_triples(self):164 """Test that the right number of entities and triples exist after inverting them."""165 triples_factory = TriplesFactory(triples=triples, create_inverse_triples=True)166 self.assertEqual(0, triples_factory.num_relations % 2)167 self.assertEqual(168 set(range(triples_factory.num_entities)),169 set(triples_factory.entity_to_id.values()),170 msg='wrong number entities',171 )172 self.assertEqual(173 set(range(triples_factory.num_relations)),174 set(triples_factory.relation_to_id.values()),175 msg='wrong number relations',176 )177 relations = set(triples[:, 1])178 entities = set(triples[:, 0]).union(triples[:, 2])179 self.assertEqual(len(entities), triples_factory.num_entities, msg='wrong number entities')180 self.assertEqual(2, len(relations), msg='Wrong number of relations in set')181 self.assertEqual(182 2 * len(relations),183 triples_factory.num_relations,184 msg='Wrong number of relations in factory',185 )...

Full Screen

Full Screen

test_paint_factory.py

Source:test_paint_factory.py Github

copy

Full Screen

1from exam_preparation.exam_19_12_2020.tests.project.factory.paint_factory import PaintFactory2from unittest import TestCase, main3# class TestPaintFactory(TestCase):4#5# def setUp(self):6# self.paint_factory = PaintFactory('Slatina', 50)7#8# def test_initial_atributtes(self):9# self.assertEqual('Slatina', self.paint_factory.name)10# self.assertEqual(50, self.paint_factory.capacity)11# self.assertListEqual(["white", "yellow", "blue", "green", "red"], self.paint_factory.valid_ingredients)12# self.assertDictEqual({}, self.paint_factory.ingredients)13# self.assertDictEqual({}, self.paint_factory.products)14#15# def test_add_method_invalid_ingredient(self):16# with self.assertRaises(TypeError) as context:17# self.paint_factory.add_ingredient('orange', 20)18# self.assertEqual("Ingredient of type orange not allowed in PaintFactory", str(context.exception))19#20# def test_add_method_invalid_quantity(self):21# with self.assertRaises(ValueError) as context:22# self.paint_factory.add_ingredient('green', 55)23# self.assertEqual("Not enough space in factory", str(context.exception))24#25# def test_add_method_valid_ingredient_and_quantity(self):26# self.paint_factory.add_ingredient('green', 25)27# self.paint_factory.add_ingredient('white', 25)28# self.assertEqual({'green': 25, 'white': 25}, self.paint_factory.ingredients)29#30# def test_remove_method_invalid_ingredient(self):31# with self.assertRaises(KeyError) as context:32# self.paint_factory.remove_ingredient('orange', 20)33# self.assertEqual("No such product in the factory", context.exception.args[0])34#35# def test_remove_method_invalid_quantity(self):36# self.paint_factory.add_ingredient('green', 25)37# with self.assertRaises(ValueError) as context:38# self.paint_factory.remove_ingredient('green', 30)39# self.assertEqual("Ingredient quantity cannot be less than zero", str(context.exception))40#41# def test_remove_method_valid_ingredient_and_quantity(self):42# self.paint_factory.add_ingredient('green', 25)43# self.paint_factory.remove_ingredient('green', 25)44# self.assertEqual({'green': 0}, self.paint_factory.ingredients)45#46# def test_products_property(self):47# self.paint_factory.add_ingredient('green', 25)48# self.paint_factory.add_ingredient('white', 25)49# self.assertEqual({'green': 25, 'white': 25}, self.paint_factory.ingredients)50#51# def test_can_add_method_false_from_base_class(self):52# self.paint_factory.add_ingredient('green', 20)53# self.paint_factory.add_ingredient('white', 20)54# self.assertTrue(self.paint_factory.can_add(10))55#56# def test_can_add_method_true_from_base_class(self):57# self.paint_factory.add_ingredient('green', 25)58# self.paint_factory.add_ingredient('white', 25)59# self.assertFalse(self.paint_factory.can_add(10))60#61# def test__repr__method(self):62# self.paint_factory.add_ingredient('green', 20)63# result = self.paint_factory.__repr__()64# expected = "Factory name: Slatina with capacity 50.\ngreen: 20\n"65# self.assertEqual(expected, result)66class TestPaintFactory(TestCase):67 def setUp(self):68 self.paint_factory = PaintFactory('Slatina', 50)69 def test_initial_atributtes(self):70 self.assertEqual('Slatina', self.paint_factory.name)71 self.assertEqual(50, self.paint_factory.capacity)72 # self.assertListEqual(["white", "yellow", "blue", "green", "red"], self.paint_factory.valid_ingredients)73 self.assertDictEqual({}, self.paint_factory.ingredients)74 self.assertDictEqual({}, self.paint_factory.products)75 def test_add_method_invalid_ingredient(self):76 with self.assertRaises(TypeError) as context:77 self.paint_factory.add_ingredient('orange', 20)78 self.assertEqual("Ingredient of type orange not allowed in PaintFactory", str(context.exception))79 def test_add_method_invalid_quantity(self):80 with self.assertRaises(ValueError) as context:81 self.paint_factory.add_ingredient('green', 55)82 self.assertEqual("Not enough space in factory", str(context.exception))83 def test_add_method_valid_ingredient_and_quantity(self):84 self.paint_factory.add_ingredient('green', 25)85 self.paint_factory.add_ingredient('white', 25)86 self.assertEqual({'green': 25, 'white': 25}, self.paint_factory.ingredients)87 def test_remove_method_invalid_ingredient(self):88 with self.assertRaises(KeyError) as context:89 self.paint_factory.remove_ingredient('orange', 20)90 self.assertEqual("No such ingredient in the factory", context.exception.args[0])91 def test_remove_method_invalid_quantity(self):92 self.paint_factory.add_ingredient('green', 25)93 with self.assertRaises(ValueError) as context:94 self.paint_factory.remove_ingredient('green', 30)95 self.assertEqual("Ingredients quantity cannot be less than zero", str(context.exception))96 def test_remove_method_valid_ingredient_and_quantity(self):97 self.paint_factory.add_ingredient('green', 25)98 self.paint_factory.remove_ingredient('green', 25)99 self.assertEqual({'green': 0}, self.paint_factory.ingredients)100 def test_products_property(self):101 self.paint_factory.add_ingredient('green', 25)102 self.paint_factory.add_ingredient('white', 25)103 self.assertEqual({'green': 25, 'white': 25}, self.paint_factory.ingredients)104 def test_can_add_method_false_from_base_class(self):105 self.paint_factory.add_ingredient('green', 20)106 self.paint_factory.add_ingredient('white', 20)107 self.assertTrue(self.paint_factory.can_add(10))108 def test_can_add_method_true_from_base_class(self):109 self.paint_factory.add_ingredient('green', 25)110 self.paint_factory.add_ingredient('white', 25)111 self.assertFalse(self.paint_factory.can_add(10))112 def test__repr__method(self):113 self.paint_factory.add_ingredient('green', 20)114 result = self.paint_factory.__repr__()115 expected = "Factory name: Slatina with capacity 50.\ngreen: 20\n"116 self.assertEqual(expected, result)117if __name__ == '__main__':...

Full Screen

Full Screen

collection.py

Source:collection.py Github

copy

Full Screen

1"""2extMediaCollection factory to execute tests3"""4import factory5from ...models.collection import Collection6from .location_gis import LocationGisFactory7from .mediatype import MediaTypeFactory8from .legalrights import LegalRightsFactory9from .publisher import PublisherFactory10from .acquisition_mode import AcquisitionModeFactory11from .recording_context import RecordingContextFactory12from .collectioncollectors import CollectionCollectorsFactory13from .collection_informer import CollectionInformerFactory14from .collection_location import CollectionLocationFactory15from .collection_language import CollectionLanguageFactory16from .collection_publisher import CollectionPublisherFactory17from .performancecollectionmusician import PerformanceCollectionMusicianFactory18from .performancecollection import PerformanceCollectionFactory19from .item import ItemCollectionFactory20class CollectionFactory(factory.django.DjangoModelFactory):21 """22 Collection factory23 """24 code = factory.Sequence(lambda n: 'code{0}'.format(n))25 class Meta:26 model = Collection27 mission = factory.SubFactory("francoralite.apps.francoralite_api.tests.factories.fond.MissionFactory")28 title = factory.Faker('word')29 alt_title = factory.Faker('word')30 description = factory.Faker('paragraph', nb_sentences=5)31 # descriptions = factory.Faker('paragraph', nb_sentences=5)32 recording_context = factory.Faker('word')33 recorded_from_year = factory.Faker('date')34 recorded_to_year = factory.Faker('date')35 year_published = factory.Faker('year')36 # location = factory.SubFactory(LocationGisFactory)37 location_details = factory.Faker('paragraph', nb_sentences=3)38 cultural_area = factory.Faker('paragraph', nb_sentences=1)39 language = factory.Faker('word')40 # publisher = factory.SubFactory(PublisherFactory)41 # publisher = factory.Faker('word')42 # publisher_collection = factory.SubFactory(CollectionPublisherFactory)43 publisher_collection = factory.Faker('word')44 booklet_author = factory.Faker('word')45 metadata_author = factory.Faker('word')46 code_partner = factory.Faker('word')47 booklet_description = factory.Faker('paragraph', nb_sentences=3)48 comment = factory.Faker('paragraph', nb_sentences=5)49 media_type = factory.SubFactory(MediaTypeFactory)50 physical_items_num = factory.Faker('pyint')51 auto_period_access = factory.Faker('boolean')52 legal_rights = factory.SubFactory(LegalRightsFactory)53 # public_access = factory.Faker('word')54class CollectionCompleteFactory(CollectionFactory):55 """56 Collection with all related entities57 """58 @factory.post_generation59 def complete( self, create, extracted, **kwargs):60 if not create: return61 CollectionCollectorsFactory.create_batch(2, collection = self)62 CollectionInformerFactory.create_batch(2, collection = self)63 CollectionLocationFactory.create_batch(2, collection = self)64 CollectionLanguageFactory.create_batch(2, collection = self)65 CollectionPublisherFactory.create_batch(2, collection = self)66 perfs = PerformanceCollectionFactory.create_batch(2, collection = self)67 for perf in perfs:68 PerformanceCollectionMusicianFactory.create_batch(69 2, performance_collection = perf)70 ItemCollectionFactory.create_batch(3, collection = self)71 72class CollectionItemsFactory(CollectionFactory):73 """74 Collection with items related75 """76 @factory.post_generation77 def items( self, create, extracted, **kwargs):78 if not create: return...

Full Screen

Full Screen

factories.py

Source:factories.py Github

copy

Full Screen

1# coding: utf-82import string3from datetime import datetime4import factory5from django.contrib.auth.models import User6from factory.fuzzy import FuzzyText7from accounts import models as account_models8from scheduler import models as scheduler_models9from places import models as places_models10from organizations import models as organization_models11class CountryFactory(factory.DjangoModelFactory):12 class Meta:13 model = places_models.Country14 name = factory.Sequence(lambda n: 'Country ' + str(n))15 slug = factory.Sequence(lambda n: 'country_' + str(n))16class RegionFactory(factory.DjangoModelFactory):17 class Meta:18 model = places_models.Region19 name = factory.Sequence(lambda n: 'Region ' + str(n))20 slug = factory.Sequence(lambda n: 'region_' + str(n))21 country = factory.SubFactory(CountryFactory)22class AreaFactory(factory.DjangoModelFactory):23 class Meta:24 model = places_models.Area25 name = factory.Sequence(lambda n: 'Area ' + str(n))26 slug = factory.Sequence(lambda n: 'area_' + str(n))27 region = factory.SubFactory(RegionFactory)28class PlaceFactory(factory.DjangoModelFactory):29 class Meta:30 model = places_models.Place31 name = factory.Sequence(lambda n: 'Place ' + str(n))32 slug = factory.Sequence(lambda n: 'place_' + str(n))33 area = factory.SubFactory(AreaFactory)34class OrganizationFactory(factory.DjangoModelFactory):35 name = factory.Sequence(lambda n: 'Organization ' + str(n))36 slug = factory.Sequence(lambda n: 'org_' + str(n))37 class Meta:38 model = organization_models.Organization39 django_get_or_create = ['name']40class FacilityFactory(factory.DjangoModelFactory):41 name = factory.Sequence(lambda n: 'Facility ' + str(n))42 slug = factory.Sequence(lambda n: 'facility_' + str(n))43 place = factory.SubFactory(PlaceFactory)44 organization = factory.SubFactory(OrganizationFactory)45 class Meta:46 model = organization_models.Facility47 django_get_or_create = ['name', 'place', 'organization']48class TaskFactory(factory.DjangoModelFactory):49 class Meta:50 model = organization_models.Task51 name = factory.Sequence(lambda n: 'Task ' + str(n))52 description = factory.Sequence(lambda n: 'task ' + str(n))53 facility = factory.SubFactory(FacilityFactory)54class ShiftFactory(factory.DjangoModelFactory):55 class Meta:56 model = scheduler_models.Shift57 task = factory.SubFactory(TaskFactory)58 facility = factory.SubFactory(FacilityFactory)59 starting_time = datetime(2016, 2, 13, 19, 0)60 ending_time = datetime(2016, 2, 13, 20, 0)61 slots = 1062class UserFactory(factory.DjangoModelFactory):63 class Meta:64 model = User65 username = FuzzyText(length=10, chars=string.ascii_letters, prefix='')66 first_name = FuzzyText(length=10, chars=string.ascii_letters, prefix='')67 last_name = FuzzyText(length=10, chars=string.ascii_letters, prefix='')68 password = factory.PostGenerationMethodCall('set_password', 'defaultpassword')69 email = factory.LazyAttribute(lambda o: '%s@example.com' % o.last_name)70class UserAccountFactory(factory.DjangoModelFactory):71 class Meta:72 model = account_models.UserAccount73 user = factory.SubFactory(UserFactory)74class ShiftHelperFactory(factory.DjangoModelFactory):75 class Meta:76 model = scheduler_models.ShiftHelper77 django_get_or_create = ['shift']78 user_account = factory.SubFactory(UserAccountFactory)...

Full Screen

Full Screen

catalogue.py

Source:catalogue.py Github

copy

Full Screen

1# coding=utf-82import factory3from oscar.core.loading import get_model4__all__ = [5 'ProductClassFactory', 'ProductFactory',6 'CategoryFactory', 'ProductCategoryFactory',7 'ProductAttributeFactory', 'AttributeOptionGroupFactory',8 'OptionFactory', 'AttributeOptionFactory',9 'ProductAttributeValueFactory', 'ProductReviewFactory',10 'ProductImageFactory'11]12class ProductClassFactory(factory.DjangoModelFactory):13 name = "Books"14 requires_shipping = True15 track_stock = True16 class Meta:17 model = get_model('catalogue', 'ProductClass')18class ProductFactory(factory.DjangoModelFactory):19 class Meta:20 model = get_model('catalogue', 'Product')21 structure = Meta.model.STANDALONE22 upc = factory.Sequence(lambda n: '978080213020%d' % n)23 title = "A confederacy of dunces"24 product_class = factory.SubFactory(ProductClassFactory)25 stockrecords = factory.RelatedFactory(26 'oscar.test.factories.StockRecordFactory', 'product')27 categories = factory.RelatedFactory(28 'oscar.test.factories.ProductCategoryFactory', 'product')29class CategoryFactory(factory.DjangoModelFactory):30 name = factory.Sequence(lambda n: 'Category %d' % n)31 # Very naive handling of treebeard node fields. Works though!32 depth = 133 path = factory.Sequence(lambda n: '%04d' % n)34 class Meta:35 model = get_model('catalogue', 'Category')36class ProductCategoryFactory(factory.DjangoModelFactory):37 category = factory.SubFactory(CategoryFactory)38 class Meta:39 model = get_model('catalogue', 'ProductCategory')40class ProductAttributeFactory(factory.DjangoModelFactory):41 code = name = 'weight'42 product_class = factory.SubFactory(ProductClassFactory)43 type = "float"44 class Meta:45 model = get_model('catalogue', 'ProductAttribute')46class OptionFactory(factory.DjangoModelFactory):47 class Meta:48 model = get_model('catalogue', 'Option')49 name = 'example option'50 code = 'example'51 type = Meta.model.TEXT52 required = False53class AttributeOptionFactory(factory.DjangoModelFactory):54 # Ideally we'd get_or_create a AttributeOptionGroup here, but I'm not55 # aware of how to not create a unique option group for each call of the56 # factory57 option = factory.Sequence(lambda n: 'Option %d' % n)58 class Meta:59 model = get_model('catalogue', 'AttributeOption')60class AttributeOptionGroupFactory(factory.DjangoModelFactory):61 name = 'Grüppchen'62 class Meta:63 model = get_model('catalogue', 'AttributeOptionGroup')64class ProductAttributeValueFactory(factory.DjangoModelFactory):65 attribute = factory.SubFactory(ProductAttributeFactory)66 product = factory.SubFactory(ProductFactory)67 class Meta:68 model = get_model('catalogue', 'ProductAttributeValue')69class ProductReviewFactory(factory.DjangoModelFactory):70 score = 571 product = factory.SubFactory(ProductFactory, stockrecords=[])72 class Meta:73 model = get_model('reviews', 'ProductReview')74class ProductImageFactory(factory.DjangoModelFactory):75 product = factory.SubFactory(ProductFactory, stockrecords=[])76 original = factory.django.ImageField(width=100, height=200, filename='test_image.jpg')77 class Meta:...

Full Screen

Full Screen

factory.py

Source:factory.py Github

copy

Full Screen

1import datetime2import random3import factory4import pytz5from django.utils.text import slugify6from factory import django, fuzzy7from faker import Faker8from title_api.models import Category, Genre, Title, Review, Comment9from users_api.factory import YamdbUserFactory10class CategoryFactory(django.DjangoModelFactory):11 class Meta:12 model = Category13 name = factory.Sequence(lambda n: f'Category-{n}')14 @factory.lazy_attribute15 def slug(self):16 return slugify(self.name)17class GenreFactory(django.DjangoModelFactory):18 class Meta:19 model = Genre20 name = factory.Sequence(lambda n: f'Genre-{n}')21 @factory.lazy_attribute22 def slug(self):23 return slugify(self.name)24class TitleFactory(django.DjangoModelFactory):25 category = factory.SubFactory(CategoryFactory)26 @factory.lazy_attribute27 def name(self):28 fake = Faker(locale='en-US')29 return fake.catch_phrase()30 @factory.lazy_attribute31 def year(self):32 fake = Faker()33 return fake.year()34 @factory.lazy_attribute35 def description(self):36 fake = Faker()37 sentences = random.randint(2, 7)38 return ' '.join(fake.paragraphs(nb=sentences))39 @factory.post_generation40 def genre(self, create, extracted, **kwargs):41 if not create:42 return43 if extracted:44 for one_genre in extracted:45 if random.random() < 0.3:46 self.genre.add(one_genre)47 class Meta:48 model = Title49class ReviewFactory(django.DjangoModelFactory):50 author = factory.SubFactory(YamdbUserFactory)51 score = fuzzy.FuzzyInteger(1, 10)52 title = factory.SubFactory(TitleFactory)53 @factory.lazy_attribute54 def text(self):55 fake = Faker()56 sentences = random.randint(2, 12)57 return ' '.join(fake.paragraphs(nb=sentences))58 @factory.lazy_attribute59 def pub_date(self):60 fake = Faker()61 from_date = datetime.datetime.strptime(str(self.title.year), '%Y')62 return fake.date_time_ad(63 start_datetime=from_date,64 end_datetime='now',65 tzinfo=pytz.UTC,66 )67 class Meta:68 model = Review69class CommentsFactory(django.DjangoModelFactory):70 author = factory.SubFactory(YamdbUserFactory)71 review = factory.SubFactory(ReviewFactory)72 @factory.lazy_attribute73 def text(self):74 fake = Faker()75 sentences = random.randint(1, 5)76 return ' '.join(fake.paragraphs(nb=sentences))77 @factory.lazy_attribute78 def pub_date(self):79 fake = Faker()80 from_datetime = self.review.pub_date81 return fake.date_time_ad(82 start_datetime=from_datetime,83 end_datetime='now',84 tzinfo=pytz.UTC,85 )86 class Meta:...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2(async () => {3 for (const browserType of ['chromium', 'firefox', 'webkit']) {4 const browser = await playwright[browserType].launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 await page.screenshot({ path: `example-${browserType}.png` });8 await browser.close();9 }10})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: `example.png` });7 await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11 const browser = await chromium.launch();12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.screenshot({ path: `example.png` });15 await browser.close();16})();17const playwright = require('playwright');18(async () => {19 for (const browserType of BROWSER_TYPES) {20 const browser = await playwright[browserType].launch();21 const context = await browser.newContext();22 const page = await context.newPage();23 await page.screenshot({ path: `example-${browserType}.png` });24 await browser.close();25 }26})();27const playwright = require('playwright');28(async () => {29 const browser = await playwright.chromium.launch();30 const context = await browser.newContext();31 const page = await context.newPage();32 await page.screenshot({ path: `example.png` });33 await browser.close();34})();35const playwright = require('playwright');36(async () => {37 const browser = await playwright['chromium'].launch();38 const context = await browser.newContext();39 const page = await context.newPage();40 await page.screenshot({ path: `example.png` });41 await browser.close();42})();43const playwright = require('playwright');44(async () => {45 const browser = await playwright['chromium'].launch();46 const context = await browser.newContext();47 const page = await context.newPage();48 await page.screenshot({ path: `example.png`

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: 'example.png' });7 await browser.close();8})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await browser.close();7})();8const { chromium } = require('playwright');9(async () => {10 const browser = await chromium.launch();11 const context = await browser.newContext();12 const page = await context.newPage();13 await browser.close();14})();15const { chromium } = require('playwright');16(async () => {17 const browser = await chromium.launch();18 const context = await browser.newContext();19 const page = await context.newPage();20 await browser.close();21})();22const { chromium } = require('playwright');23(async () => {24 const browser = await chromium.launch();25 const context = await browser.newContext();26 const page = await context.newPage();27 await browser.close();28})();29const { chromium } = require('playwright');30(async () => {31 const browser = await chromium.launch();32 const context = await browser.newContext();33 const page = await context.newPage();34 await browser.close();35})();36const { chromium } = require('playwright');37(async () => {38 const browser = await chromium.launch();39 const context = await browser.newContext();40 const page = await context.newPage();41 await browser.close();42})();43const { chromium } = require('playwright');44(async () => {

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: `example.png` });7 await browser.close();8})();9const playwright = require('playwright');10(async () => {11 const browser = await playwright.chromium.launch({ headless: false });12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.screenshot({ path: `example.png` });15 await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19 const browser = await chromium.launch({ headless: false });20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.screenshot({ path: `example.png` });23 await browser.close();24})();25const playwright = require('playwright');26(async () => {27 const browser = await playwright.chromium.launch({ headless: false });28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.screenshot({ path: `example.png` });31 await browser.close();32})();33const { chromium } = require('playwright');34(async () => {35 const browser = await chromium.launch({ headless: false });36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.screenshot({ path: `example.png` });39 await browser.close();40})();41const playwright = require('playwright');42(async () => {43 const browser = await playwright.chromium.launch({ headless: false });

Full Screen

Using AI Code Generation

copy

Full Screen

1const {chromium, webkit, firefox} = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: 'example.png' });7 await browser.close();8})();9const {chromium, webkit, firefox} = require('playwright');10(async () => {11 const browser = await chromium.launch();12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.screenshot({ path: 'example.png' });15 await browser.close();16})();17const {chromium, webkit, firefox} = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.screenshot({ path: 'example.png' });23 await browser.close();24})();25const {chromium, webkit, firefox} = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.screenshot({ path: 'example.png' });31 await browser.close();32})();33const {chromium, webkit, firefox} = require('playwright');34(async () => {35 const browser = await chromium.launch();36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.screenshot({ path: 'example.png' });39 await browser.close();40})();41const {chromium, webkit, firefox} = require('playwright');42(async () => {

Full Screen

Using AI Code Generation

copy

Full Screen

1const playwright = require('playwright');2(async () => {3 const browser = await playwright.webkit.launch();4 const page = await browser.newPage();5 await page.screenshot({ path: 'example.png' });6 await browser.close();7})();8const { webkit } = require('playwright');9(async () => {10 const browser = await webkit.launch();11 const page = await browser.newPage();12 await page.screenshot({ path: 'example.png' });13 await browser.close();14})();15const { webkit } = require('playwright');16(async () => {17 const browser = await webkit.launch();18 const page = await browser.newPage();19 await page.screenshot({ path: 'example.png' });20 await browser.close();21})();22const { test, expect } = require('@playwright/test');23test('basic test', async ({ page }) => {24 const title = page.locator('.navbar__inner .navbar__title');25 await expect(title).toHaveText('Playwright');26});27const { test, expect } = require('@playwright/test');28test('basic test', async ({ page }) => {29 const title = page.locator('.navbar__inner .navbar__title');30 await expect(title).toHaveText('Playwright');31});32const { test, expect } = require('@playwright/test');33test('basic test', async ({ page }) => {34 const title = page.locator('.navbar__inner .navbar__title');

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { createPlaywright } = require('playwright-core/lib/server/browserType');3const playwright = createPlaywright([chromium]);4(async () => {5 const browser = await playwright.chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 await page.screenshot({ path: 'example.png' });9 await browser.close();10})();11 at Object.error (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/protocol.js:185:12)12 at CDPSession.dispatch (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/protocol.js:69:46)13 at CDPSession._onMessage (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/protocol.js:34:14)14 at Connection.dispatch (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/Connection.js:209:12)15 at WebSocketTransport._ws.addEventListener.event (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/Connection.js:165:22)16 at WebSocketTransport._ws.addEventListener.event (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/Connection.js:163:47)17 at WebSocket.onMessage (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/WebSocketTransport.js:43:14)18 at WebSocket.onMessage (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/lib/server/cjs/protocol/WebSocketTransport.js:17:59)19 at WebSocket.emit (events.js:315:20)20 at Receiver.receiverOnMessage (/Users/raghavendra.kodali/Documents/Playwright/playwright-core/node_modules/ws/lib/websocket.js:800:20)

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2const { createPlaywrightInternal } = require('playwright/lib/server/playwright');3const playwright = createPlaywrightInternal();4(async () => {5 const browser = await playwright.chromium.launch();6 const context = await browser.newContext();7 const page = await context.newPage();8 await page.screenshot({ path: 'example.png' });9 await browser.close();10})();11const { chromium } = require('playwright');12const { createPlaywright } = require('playwright/lib/server/playwright');13const playwright = createPlaywright();14(async () => {15 const browser = await playwright.chromium.launch();16 const context = await browser.newContext();17 const page = await context.newPage();18 await page.screenshot({ path: 'example.png' });19 await browser.close();20})();21const { chromium } = require('playwright');22const { createPlaywright } = require('playwright/lib/server/playwright');23const playwright = createPlaywright();24(async () => {25 const browser = await playwright.chromium.launch();26 const context = await browser.newContext();27 const page = await context.newPage();28 await page.screenshot({ path: 'example.png' });29 await browser.close();30})();

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful