Best JavaScript code snippet using istanbul
test_instances.py
Source:test_instances.py
1import pytest2from unittest import mock3from awx.main.models import AdHocCommand, InventoryUpdate, Job, JobTemplate, ProjectUpdate4from awx.main.models.ha import Instance, InstanceGroup5from awx.main.tasks import apply_cluster_membership_policies6from 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)...
test_migrate.py
Source:test_migrate.py
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__":...
test_triples_factory.py
Source:test_triples_factory.py
...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')...
test_paint_factory.py
Source:test_paint_factory.py
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))...
collection.py
Source:collection.py
...16from .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...
factories.py
Source:factories.py
...7from 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)...
catalogue.py
Source:catalogue.py
...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:...
factory.py
Source:factory.py
...6from 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 )...
Using AI Code Generation
1var istanbul = require('istanbul');2var collector = new istanbul.Collector();3var reporter = new istanbul.Reporter();4reporter.add('text');5collector.add(__coverage__);6reporter.write(collector, true, function() { console.log('done'); });
Using AI Code Generation
1var istanbul = require('istanbul');2var collector = new istanbul.Collector();3var reporter = new istanbul.Reporter();4collector.add(coverage);5reporter.add('html');6reporter.write(collector, sync, function () {7 console.log('All reports generated');8});9var istanbul = require('istanbul');10var collector = new istanbul.Collector();11var reporter = new istanbul.Reporter();12collector.add(coverage);13reporter.add('html');14reporter.write(collector, sync, function () {15 console.log('All reports generated');16});17var istanbul = require('istanbul');18var collector = new istanbul.Collector();19var reporter = new istanbul.Reporter();20collector.add(coverage);21reporter.add('html');22reporter.write(collector, sync, function () {23 console.log('All reports generated');24});25var istanbul = require('istanbul');26var collector = new istanbul.Collector();27var reporter = new istanbul.Reporter();28collector.add(coverage);29reporter.add('html');30reporter.write(collector, sync, function () {31 console.log('All reports generated');32});33var istanbul = require('istanbul');34var collector = new istanbul.Collector();35var reporter = new istanbul.Reporter();36collector.add(coverage);37reporter.add('html');38reporter.write(collector, sync, function () {39 console.log('All reports generated');40});
Using AI Code Generation
1var istanbul = require('istanbul');2var instrumenter = new istanbul.Instrumenter();3var code = 'var x = 1;';4var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');5console.log(instrumentedCode);6var istanbul = require('istanbul');7var instrumenter = new istanbul.Instrumenter();8var code = 'var x = 1;';9var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');10console.log(instrumentedCode);11var istanbul = require('istanbul');12var instrumenter = new istanbul.Instrumenter();13var code = 'var x = 1;';14var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');15console.log(instrumentedCode);16var istanbul = require('istanbul');17var instrumenter = new istanbul.Instrumenter();18var code = 'var x = 1;';19var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');20console.log(instrumentedCode);21var istanbul = require('istanbul');22var instrumenter = new istanbul.Instrumenter();23var code = 'var x = 1;';24var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');25console.log(instrumentedCode);26var istanbul = require('istanbul');27var instrumenter = new istanbul.Instrumenter();28var code = 'var x = 1;';29var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');30console.log(instrumentedCode);31var istanbul = require('istanbul');32var instrumenter = new istanbul.Instrumenter();33var code = 'var x = 1;';34var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');35console.log(instrumentedCode);
Using AI Code Generation
1var istanbul = require('istanbul');2var instrumenter = new istanbul.Instrumenter();3var fs = require('fs');4var path = require('path');5var code = fs.readFileSync(path.join(__dirname, 'file.js'), 'utf8');6var instrumentedCode = instrumenter.instrumentSync(code, 'file.js');7fs.writeFileSync(path.join(__dirname, 'instrumented.js'), instrumentedCode);8fs.writeFileSync(path.join(__dirname, 'instrumented.json'), JSON.stringify(instrumenter.lastFileCoverage()));9function test(){10 console.log('test');11}12function test() {13 __cov_1wJw7l0Pb5vZM0z5p5Y5oQ.s['1']++;14 console.log('test');15}16var __cov_1wJw7l0Pb5vZM0z5p5Y5oQ = {17 "s": {18 },19 "b": {},20 "f": {21 },22 "fnMap": {23 "1": {24 "loc": {25 "start": {26 },27 "end": {28 }29 }30 }31 },32 "statementMap": {33 "1": {34 "start": {35 },36 "end": {37 }38 },39 "2": {40 "start": {41 },42 "end": {43 }44 }45 },46 "branchMap": {}47};48__cov_1wJw7l0Pb5vZM0z5p5Y5oQ.s['1']++;49test();50{
Using AI Code Generation
1var istanbul = require('istanbul');2var collector = new istanbul.Collector();3var reporter = new istanbul.Reporter();4var reportTypes = ['text-summary', 'html'];5var reportsDir = 'reports';6reporter.addAll(reportTypes);7reporter.write(collector, sync, function () {8 console.log('Reports generated');9});10var istanbul = require('istanbul');11var collector = new istanbul.Collector();12var reporter = new istanbul.Reporter();13var reportTypes = ['text-summary', 'html'];14var reportsDir = 'reports';15reporter.addAll(reportTypes);16reporter.write(collector, sync, function () {17 console.log('Reports generated');18});19var istanbul = require('istanbul');20var collector = new istanbul.Collector();21var reporter = new istanbul.Reporter();22var reportTypes = ['text-summary', 'html'];23var reportsDir = 'reports';24reporter.addAll(reportTypes);25reporter.write(collector, sync, function () {26 console.log('Reports generated');27});28var istanbul = require('istanbul');29var collector = new istanbul.Collector();30var reporter = new istanbul.Reporter();31var reportTypes = ['text-summary', 'html'];32var reportsDir = 'reports';33reporter.addAll(reportTypes);34reporter.write(collector, sync, function () {35 console.log('Reports generated');36});37var istanbul = require('istanbul');38var collector = new istanbul.Collector();39var reporter = new istanbul.Reporter();40var reportTypes = ['text-summary', 'html'];41var reportsDir = 'reports';42reporter.addAll(reportTypes);43reporter.write(collector, sync, function () {
Using AI Code Generation
1var istanbul = require('istanbul');2var instrumenter = new istanbul.Instrumenter();3var instrumentedSource = instrumenter.instrumentSync('var a = 1;', 'test.js');4console.log(instrumentedSource);5var istanbul = require('istanbul');6var instrumenter = new istanbul.Instrumenter();7var instrumentedSource = instrumenter.instrumentSync('var a = 1;', 'test.js');8console.log(instrumentedSource);9var istanbul = require('istanbul');10var instrumenter = new istanbul.Instrumenter();11var instrumentedSource = instrumenter.instrumentSync('var a = 1;', 'test.js');12console.log(instrumentedSource);13var istanbul = require('istanbul');14var instrumenter = new istanbul.Instrumenter();15var instrumentedSource = instrumenter.instrumentSync('var a = 1;', 'test.js');16console.log(instrumentedSource);17var istanbul = require('istanbul');18var instrumenter = new istanbul.Instrumenter();19var instrumentedSource = instrumenter.instrumentSync('var a = 1;', 'test.js');20console.log(instrumentedSource);21var istanbul = require('istanbul');22var instrumenter = new istanbul.Instrumenter();23var instrumentedSource = instrumenter.instrumentSync('var a = 1;', 'test.js');24console.log(instrumentedSource);25var istanbul = require('istanbul');26var instrumenter = new istanbul.Instrumenter();27var instrumentedSource = instrumenter.instrumentSync('var a = 1;', 'test.js');28console.log(in
Using AI Code Generation
1var istanbul = require('istanbul');2var instrumenter = new istanbul.Instrumenter();3var fs = require('fs');4var code = fs.readFileSync('test.js', 'utf8');5var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');6console.log(instrumentedCode);7var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');8console.log(instrumentedCode);9var istanbul = require('istanbul');10var instrumenter = new istanbul.Instrumenter();11var fs = require('fs');12var code = fs.readFileSync('test.js', 'utf8');13var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');14console.log(instrumentedCode);15var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');16console.log(instrumentedCode);17var istanbul = require('istanbul');18var instrumenter = new istanbul.Instrumenter();19var fs = require('fs');20var code = fs.readFileSync('test.js', 'utf8');21var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');22console.log(instrumentedCode);23var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');24console.log(instrumentedCode);25var istanbul = require('istanbul');26var instrumenter = new istanbul.Instrumenter();27var fs = require('fs');28var code = fs.readFileSync('test.js', 'utf8');29var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');30console.log(instrumentedCode);31var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');32console.log(instrumentedCode);33var istanbul = require('istanbul');34var instrumenter = new istanbul.Instrumenter();35var fs = require('fs');36var code = fs.readFileSync('test.js', 'utf8');37var instrumentedCode = instrumenter.instrumentSync(code, 'test.js');
Using AI Code Generation
1var istanbul = require('istanbul');2var instrumenter = new istanbul.Instrumenter();3instrumenter.instrument('test.js', 'instrumented.js', function(err, instrumented) {4 if (err) {5 console.log(err);6 } else {7 console.log(instrumented);8 }9});10var instrumented = instrumenter.instrumentSync('test.js', 'instrumented.js');11var instrumented = instrumenter.instrumentSync('test.js', 'instrumented.js', { sourceMap: true });12var instrumented = instrumenter.instrumentSync('test.js', 'instrumented.js', { sourceMap: true, content: true });13var instrumented = instrumenter.instrumentSync('test.js', 'instrumented.js', { sourceMap: true, content: true, originalFilename: 'test.js' });14var instrumented = instrumenter.instrumentSync('test.js', 'instrumented.js', { sourceMap: true, content: true, originalFilename: 'test.js', generatedFilename: 'instrumented.js' });15var instrumented = instrumenter.instrumentSync('test.js', 'instrumented.js', { sourceMap: true, content: true, originalFilename: 'test.js', generatedFilename: 'instrumented.js', generatedFilePath: 'instrumented.js' });16var instrumented = instrumenter.instrumentSync('test.js', 'instrumented.js', { sourceMap: true, content: true, originalFilename: '
Using AI Code Generation
1var lib = require('./lib.js');2var instrumentedLib = istanbul.instrumentSync(lib, 'lib.js');3eval(instrumentedLib);4var result = lib.add(1,2);5console.log(result);6module.exports = {7 add: function(a, b) {8 return a + b;9 }10};11var instrumentedLib = istanbul.instrumentSync(lib, 'lib.js', {preserveComments: true});
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!